From 85983ca8e1a04658160769239599d4081315040b Mon Sep 17 00:00:00 2001 From: Andrew Benson Date: Sat, 12 Nov 2022 16:06:05 -0600 Subject: [PATCH 1/9] mpv: update to 0.35.0. --- common/shlibs | 2 +- srcpkgs/mpv/template | 57 ++++++++++++++++++++++++-------------------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/common/shlibs b/common/shlibs index 481250d5c924..aa1bbafb1bba 100644 --- a/common/shlibs +++ b/common/shlibs @@ -2214,7 +2214,7 @@ librrd.so.8 rrdtool-1.6.0_1 librrd_th.so.4 rrdtool-1.4.9_1 libmosquitto.so.1 libmosquitto-1.6.3_5 libmosquittopp.so.1 libmosquittopp-1.6.3_5 -libmpv.so.1 mpv-0.8.0_2 +libmpv.so.2 mpv-0.35.0_1 libmbedtls.so.12 mbedtls-2.13.1_1 libmbedcrypto.so.3 mbedtls-2.9.0_1 libmbedx509.so.0 mbedtls-2.9.0_1 diff --git a/srcpkgs/mpv/template b/srcpkgs/mpv/template index ded8c1bbe98f..0e3c3ed8f81c 100644 --- a/srcpkgs/mpv/template +++ b/srcpkgs/mpv/template @@ -1,15 +1,26 @@ # Template file for 'mpv' pkgname=mpv -version=0.34.1 -revision=2 -build_style=waf3 -configure_args="--confdir=/etc/mpv --docdir=/usr/share/examples/mpv - --enable-cdda --enable-dvbin --enable-dvdnav --enable-libarchive - --enable-libmpv-shared --enable-cplugins $(vopt_enable alsa) $(vopt_enable caca) - $(vopt_enable jack) $(vopt_enable lcms lcms2) $(vopt_enable lua) - $(vopt_enable openal) $(vopt_enable pulseaudio pulse) $(vopt_enable sdl2) - $(vopt_enable vapoursynth) $(vopt_enable vdpau) $(vopt_enable vulkan) - $(vopt_enable vulkan shaderc) $(vopt_enable wayland) $(vopt_enable x11)" +version=0.35.0 +revision=1 +build_style=meson +configure_args="-Dcdda=enabled -Ddvbin=enabled -Ddvdnav=enabled + -Dlibmpv=true -Dcplugins=enabled + -Dalsa=$(vopt_if alsa enabled disabled) + -Dcaca=$(vopt_if caca enabled disabled) + -Djack=$(vopt_if jack enabled disabled) + -Dlcms2=$(vopt_if lcms enabled disabled) + -Dlua=$(vopt_if lua enabled disabled) + -Dopenal=$(vopt_if openal enabled disabled) + -Dpulse=$(vopt_if pulseaudio enabled disabled) + -Dsdl2=$(vopt_if sdl2 enabled disabled) + -Dvapoursynth=$(vopt_if vapoursynth enabled disabled) + -Dvdpau=$(vopt_if vdpau enabled disabled) + -Dvulkan=$(vopt_if vulkan enabled disabled) + -Dshaderc=$(vopt_if vulkan enabled disabled) + -Dwayland=$(vopt_if wayland enabled disabled) + -Dx11=$(vopt_if x11 enabled disabled) + -Dpipewire=$(vopt_if pipewire enabled disabled) + -Dsndio=$(vopt_if sndio enabled disabled)" hostmakedepends="pkg-config python3-docutils $(vopt_if wayland wayland-devel)" makedepends="MesaLib-devel ffmpeg-devel harfbuzz-devel libXv-devel libass-devel libbluray-devel libcdio-paranoia-devel libdvdnav-devel @@ -17,11 +28,12 @@ makedepends="MesaLib-devel ffmpeg-devel harfbuzz-devel libXv-devel libarchive-devel $(vopt_if alsa alsa-lib-devel) $(vopt_if caca libcaca-devel) $(vopt_if jack jack-devel) $(vopt_if lcms lcms2-devel) $(vopt_if lua lua52-devel) $(vopt_if openal libopenal-devel) - $(vopt_if pulseaudio pulseaudio-devel) $(vopt_if sdl2 SDL2-devel) - $(vopt_if vapoursynth vapoursynth-devel) $(vopt_if vdpau libvdpau-devel) + $(vopt_if pulseaudio pulseaudio-devel) $(vopt_if pipewire pipewire-devel) + $(vopt_if sdl2 SDL2-devel) $(vopt_if vapoursynth vapoursynth-devel) + $(vopt_if vdpau libvdpau-devel) $(vopt_if sndio sndio-devel) $(vopt_if vulkan "Vulkan-Headers vulkan-loader shaderc libplacebo-devel") $(vopt_if wayland "wayland-devel wayland-protocols libxkbcommon-devel") - $(vopt_if x11 "libXScrnSaver-devel libXinerama-devel libXrandr-devel")" + $(vopt_if x11 "libXScrnSaver-devel libXinerama-devel libXrandr-devel libXpresent-devel")" depends="desktop-file-utils hicolor-icon-theme" short_desc="Video player based on MPlayer/mplayer2" maintainer="travankor " @@ -29,30 +41,23 @@ license="GPL-2.0-or-later" homepage="https://mpv.io" changelog="https://github.com/mpv-player/mpv/releases" distfiles="https://github.com/mpv-player/${pkgname}/archive/v${version}.tar.gz" -checksum=32ded8c13b6398310fa27767378193dc1db6d78b006b70dbcbd3123a1445e746 +checksum=dc411c899a64548250c142bf1fa1aa7528f1b4398a24c86b816093999049ec00 if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then makedepends+=" libatomic-devel" fi -build_options="alsa caca jack lcms lua openal pulseaudio sdl2 vapoursynth vdpau - vulkan wayland x11" -build_options_default="alsa jack lcms lua pulseaudio vdpau vulkan wayland x11" +build_options="alsa caca jack lcms lua openal pulseaudio pipewire sdl2 + sndio vapoursynth vdpau vulkan wayland x11" +build_options_default="alsa jack lcms lua pulseaudio pipewire vdpau vulkan + sndio wayland x11" desc_option_caca="Enable support for libcaca video output" desc_option_lcms="Enable support for LittleCMS 2 engine" desc_option_openal="Enable support for OpenAL audio output" vopt_conflict sdl2 wayland -if [ -z "$CROSS_BUILD" ]; then - configure_args+=" --zshdir=/usr/share/zsh/site-functions" -fi - -pre_configure() { - python3 bootstrap.py -} - mpv-devel_package() { - depends="${sourcepkg}>=${version}_${revision}" + depends="${sourcepkg}>=${version}_${revision} ${makedepends}" short_desc+=" - development files" pkg_install() { vmove usr/include From 204fe84127ae3f05fc4d8b14a1521f41d5207153 Mon Sep 17 00:00:00 2001 From: Andrew Benson Date: Sat, 12 Nov 2022 16:04:14 -0600 Subject: [PATCH 2/9] celluloid: rebuild for mpv-0.35.0 --- srcpkgs/celluloid/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/celluloid/template b/srcpkgs/celluloid/template index 739911562045..904fe4f631c0 100644 --- a/srcpkgs/celluloid/template +++ b/srcpkgs/celluloid/template @@ -1,7 +1,7 @@ # Template file for 'celluloid' pkgname=celluloid version=0.23 -revision=1 +revision=2 build_style=meson hostmakedepends="gettext glib-devel pkg-config" makedepends="gtk4-devel libepoxy-devel libglib-devel mpv-devel" From ef732e6b0565624422c33aef59547fb743d41b35 Mon Sep 17 00:00:00 2001 From: Andrew Benson Date: Sat, 12 Nov 2022 16:04:14 -0600 Subject: [PATCH 3/9] minitube: rebuild for mpv-0.35.0 --- srcpkgs/minitube/patches/mpv-0.35.patch | 14 ++++++++++++++ srcpkgs/minitube/template | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/minitube/patches/mpv-0.35.patch diff --git a/srcpkgs/minitube/patches/mpv-0.35.patch b/srcpkgs/minitube/patches/mpv-0.35.patch new file mode 100644 index 000000000000..db13f9058f7f --- /dev/null +++ b/srcpkgs/minitube/patches/mpv-0.35.patch @@ -0,0 +1,14 @@ +https://github.com/mpv-player/mpv/commit/632059816adde518c67f6606e3cfdef5bec18b52 +Index: minitube-3.9.3/lib/media/src/mpv/mpvwidget.cpp +=================================================================== +--- minitube-3.9.3.orig/lib/media/src/mpv/mpvwidget.cpp ++++ minitube-3.9.3/lib/media/src/mpv/mpvwidget.cpp +@@ -30,7 +30,7 @@ void MpvWidget::initializeGL() { + qDebug() << "initializeGL" << nativeParent; + if (nativeParent == nullptr) qFatal("No native parent"); + +- mpv_opengl_init_params gl_init_params{get_proc_address, this, nullptr}; ++ mpv_opengl_init_params gl_init_params{get_proc_address, this}; + mpv_render_param params[]{{MPV_RENDER_PARAM_API_TYPE, (void *)MPV_RENDER_API_TYPE_OPENGL}, + {MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_init_params}, + {MPV_RENDER_PARAM_INVALID, nullptr}, diff --git a/srcpkgs/minitube/template b/srcpkgs/minitube/template index 915458a43a6a..b4b50c0f9694 100644 --- a/srcpkgs/minitube/template +++ b/srcpkgs/minitube/template @@ -1,7 +1,7 @@ # Template file for 'minitube' pkgname=minitube version=3.9.3 -revision=1 +revision=2 build_style=qmake hostmakedepends="qt5-tools qt5-host-tools qt5-qmake git" makedepends="qt5-devel phonon-qt5-devel qt5-script-devel qt5-declarative-devel From 951818f3887589475241f394cef99a82a16ddeeb Mon Sep 17 00:00:00 2001 From: Andrew Benson Date: Sat, 12 Nov 2022 16:04:14 -0600 Subject: [PATCH 4/9] mpc-qt: update to 22.02. --- srcpkgs/mpc-qt/template | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/srcpkgs/mpc-qt/template b/srcpkgs/mpc-qt/template index 3e60cb06c896..7a7ae6f6cf96 100644 --- a/srcpkgs/mpc-qt/template +++ b/srcpkgs/mpc-qt/template @@ -1,6 +1,6 @@ # Template file for 'mpc-qt' pkgname=mpc-qt -version=18.08 +version=22.02 revision=1 build_style=qmake configure_args="MPCQT_VERSION=${version}" @@ -9,16 +9,6 @@ makedepends="qt5-devel qt5-x11extras-devel mpv-devel" short_desc="Clone of Media Player Classic reimplemented in Qt" maintainer="SolitudeSF " license="GPL-2.0-or-later" -homepage="https://github.com/cmdrkotori/mpc-qt" -#distfiles="${homepage}/archive/v${version}.tar.gz" -# https://github.com/mpv-player/mpv/commit/575197ff8b0a0d8cd14f7ee78461c1d61d045d72 -distfiles="https://sources.voidlinux.org/mpc-qt-18.08/v18.08.tar.gz - https://raw.githubusercontent.com/mpv-player/mpv/2337fa4e0213993398d36cb3222633766d677dfd/libmpv/qthelper.hpp" -checksum="c58fd90926773c9da8bdfc1a8e4dba0b95cbc58cee6db9981e8de94fd9534406 - 86e1fcba6001829b7e23a856db84d01ebc76e63528f74064d7bc5705015a2684" -skip_extraction="qthelper.hpp" - -post_extract() { - mkdir -p mpv - cp $XBPS_SRCDISTDIR/mpc-qt-$version/qthelper.hpp mpv/ -} +homepage="https://mpc-qt.github.io/" +distfiles="https://github.com/mpc-qt/mpc-qt/archive/refs/tags/v${version}.tar.gz" +checksum=fa6cffd6bde1304b6c0ec3aba8e98d03f4d73999fee4e4546026ec159530350d From 6f9085568c75b003f86e164fee0129ac8cb54931 Mon Sep 17 00:00:00 2001 From: Andrew Benson Date: Sat, 12 Nov 2022 16:04:15 -0600 Subject: [PATCH 5/9] [TODO] orion: rebuild for mpv-0.35.0 --- srcpkgs/orion/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/orion/template b/srcpkgs/orion/template index d69f2ff04dd4..b1f2215b1d43 100644 --- a/srcpkgs/orion/template +++ b/srcpkgs/orion/template @@ -1,7 +1,7 @@ # Template file for 'orion' pkgname=orion version=1.6.7 -revision=1 +revision=2 build_style=qmake hostmakedepends="qt5-qmake qt5-host-tools" makedepends="qt5-declarative-devel qt5-quickcontrols2-devel mpv-devel" From 946ac44c785ce0a7796bd802ebc76d991282c30c Mon Sep 17 00:00:00 2001 From: Andrew Benson Date: Sat, 12 Nov 2022 16:04:15 -0600 Subject: [PATCH 6/9] qimgv: rebuild for mpv-0.35.0 --- srcpkgs/qimgv/patches/fix-mpv-opengl.patch | 11 +++++++++++ srcpkgs/qimgv/template | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/qimgv/patches/fix-mpv-opengl.patch diff --git a/srcpkgs/qimgv/patches/fix-mpv-opengl.patch b/srcpkgs/qimgv/patches/fix-mpv-opengl.patch new file mode 100644 index 000000000000..9fd3dffe9f96 --- /dev/null +++ b/srcpkgs/qimgv/patches/fix-mpv-opengl.patch @@ -0,0 +1,11 @@ +--- a/plugins/player_mpv/src/mpvwidget.cpp ++++ b/plugins/player_mpv/src/mpvwidget.cpp +@@ -69,7 +69,7 @@ + } + + void MpvWidget::initializeGL() { +- mpv_opengl_init_params gl_init_params{get_proc_address, nullptr, nullptr}; ++ mpv_opengl_init_params gl_init_params{get_proc_address, nullptr}; + mpv_render_param params[]{ + {MPV_RENDER_PARAM_API_TYPE, const_cast(MPV_RENDER_API_TYPE_OPENGL)}, + {MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_init_params}, diff --git a/srcpkgs/qimgv/template b/srcpkgs/qimgv/template index bb91ee98eab7..7eb30db33992 100644 --- a/srcpkgs/qimgv/template +++ b/srcpkgs/qimgv/template @@ -1,7 +1,7 @@ # Template file for 'qimgv' pkgname=qimgv version=1.0.2 -revision=1 +revision=2 build_style=cmake configure_args="$(vopt_if video -DVIDEO_SUPPORT=ON -DVIDEO_SUPPORT=OFF) $(vopt_if scale -DOPENCV_SUPPORT=ON -DOPENCV_SUPPORT=OFF) From 9f55dff699a802589ae61e393559b4045b80c1e9 Mon Sep 17 00:00:00 2001 From: Andrew Benson Date: Sat, 12 Nov 2022 16:04:15 -0600 Subject: [PATCH 7/9] vidcutter: update to 6.0.5.1. --- srcpkgs/vidcutter/patches/mpv-0.35-1.patch | 52658 +++++++++++++++++++ srcpkgs/vidcutter/patches/mpv-0.35-2.patch | 24 + srcpkgs/vidcutter/patches/mpv-0.35-3.patch | 13289 +++++ srcpkgs/vidcutter/template | 6 +- 4 files changed, 65974 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/vidcutter/patches/mpv-0.35-1.patch create mode 100644 srcpkgs/vidcutter/patches/mpv-0.35-2.patch create mode 100644 srcpkgs/vidcutter/patches/mpv-0.35-3.patch diff --git a/srcpkgs/vidcutter/patches/mpv-0.35-1.patch b/srcpkgs/vidcutter/patches/mpv-0.35-1.patch new file mode 100644 index 000000000000..c33bad4a82bb --- /dev/null +++ b/srcpkgs/vidcutter/patches/mpv-0.35-1.patch @@ -0,0 +1,52658 @@ +https://github.com/ozmartian/vidcutter/commit/1d88825feb5a73a50d019914ba9d0008562a58ce.patch + +From 1d88825feb5a73a50d019914ba9d0008562a58ce Mon Sep 17 00:00:00 2001 +From: Pete Alexandrou +Date: Tue, 22 Feb 2022 11:29:00 +1100 +Subject: [PATCH] Patches to pympv to workaround opengl_cb deprecation from + libmpv + +--- + vidcutter/libs/pympv/client.pxd | 54 +- + vidcutter/libs/pympv/mpv.c | 46394 ++++++++++++++---------------- + vidcutter/libs/pympv/mpv.pyx | 192 +- + 3 files changed, 21832 insertions(+), 24808 deletions(-) + +diff --git a/vidcutter/libs/pympv/client.pxd b/vidcutter/libs/pympv/client.pxd +index befe219e..d9a8816f 100644 +--- a/vidcutter/libs/pympv/client.pxd ++++ b/vidcutter/libs/pympv/client.pxd +@@ -112,9 +112,9 @@ cdef extern from "mpv/client.h": + + int mpv_load_config_file(mpv_handle *ctx, const char *filename) nogil + +- void mpv_suspend(mpv_handle *ctx) nogil ++ # void mpv_suspend(mpv_handle *ctx) nogil + +- void mpv_resume(mpv_handle *ctx) nogil ++ # void mpv_resume(mpv_handle *ctx) nogil + + int64_t mpv_get_time_us(mpv_handle *ctx) nogil + +@@ -200,21 +200,21 @@ 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_TRACKS_CHANGED ++ # MPV_EVENT_TRACK_SWITCHED + MPV_EVENT_IDLE +- MPV_EVENT_PAUSE +- MPV_EVENT_UNPAUSE ++ # MPV_EVENT_PAUSE ++ # MPV_EVENT_UNPAUSE + MPV_EVENT_TICK +- MPV_EVENT_SCRIPT_INPUT_DISPATCH ++ # MPV_EVENT_SCRIPT_INPUT_DISPATCH + MPV_EVENT_CLIENT_MESSAGE + MPV_EVENT_VIDEO_RECONFIG + MPV_EVENT_AUDIO_RECONFIG +- MPV_EVENT_METADATA_UPDATE ++ # MPV_EVENT_METADATA_UPDATE + MPV_EVENT_SEEK + MPV_EVENT_PLAYBACK_RESTART + MPV_EVENT_PROPERTY_CHANGE +- MPV_EVENT_CHAPTER_CHANGE ++ # MPV_EVENT_CHAPTER_CHANGE + + const char *mpv_event_name(mpv_event_id event) nogil + +@@ -249,9 +249,9 @@ cdef extern from "mpv/client.h": + int reason + int error + +- cdef struct mpv_event_script_input_dispatch: +- int arg0 +- const char *type ++ # cdef struct mpv_event_script_input_dispatch: ++ # int arg0 ++ # const char *type + + cdef struct mpv_event_client_message: + int num_args +@@ -282,27 +282,27 @@ 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 ++# 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 ++# 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 ++# 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_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_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_report_flip(mpv_opengl_cb_context *ctx, int64_t time) nogil + +- int mpv_opengl_cb_uninit_gl(mpv_opengl_cb_context *ctx) nogil ++# int mpv_opengl_cb_uninit_gl(mpv_opengl_cb_context *ctx) nogil + + + cdef extern from "mpv/render.h": +diff --git a/vidcutter/libs/pympv/mpv.c b/vidcutter/libs/pympv/mpv.c +index 202aae8c..a3522ef5 100644 +--- a/vidcutter/libs/pympv/mpv.c ++++ b/vidcutter/libs/pympv/mpv.c +@@ -1,4 +1,4 @@ +-/* Generated by Cython 0.29.21 */ ++/* Generated by Cython 0.29.28 */ + + /* BEGIN: Cython Metadata + { +@@ -19,15 +19,17 @@ + } + END: Cython Metadata */ + ++#ifndef PY_SSIZE_T_CLEAN + #define PY_SSIZE_T_CLEAN ++#endif /* PY_SSIZE_T_CLEAN */ + #include "Python.h" + #ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. + #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.6+ or Python 3.3+. + #else +-#define CYTHON_ABI "0_29_21" +-#define CYTHON_HEX_VERSION 0x001D15F0 ++#define CYTHON_ABI "0_29_28" ++#define CYTHON_HEX_VERSION 0x001D1CF0 + #define CYTHON_FUTURE_DIVISION 0 + #include + #ifndef offsetof +@@ -174,7 +176,7 @@ END: Cython Metadata */ + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif +- #if PY_VERSION_HEX < 0x030300F0 ++ #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) +@@ -189,11 +191,14 @@ END: Cython Metadata */ + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif +- #ifndef CYTHON_FAST_THREAD_STATE ++ #if PY_VERSION_HEX >= 0x030B00A4 ++ #undef CYTHON_FAST_THREAD_STATE ++ #define CYTHON_FAST_THREAD_STATE 0 ++ #elif !defined(CYTHON_FAST_THREAD_STATE) + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL +- #define CYTHON_FAST_PYCALL 1 ++ #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030B00A1) + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) +@@ -204,7 +209,10 @@ END: Cython Metadata */ + #ifndef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) + #endif +- #ifndef CYTHON_USE_EXC_INFO_STACK ++ #if PY_VERSION_HEX >= 0x030B00A4 ++ #undef CYTHON_USE_EXC_INFO_STACK ++ #define CYTHON_USE_EXC_INFO_STACK 0 ++ #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) + #endif + #endif +@@ -212,7 +220,9 @@ END: Cython Metadata */ + #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) + #endif + #if CYTHON_USE_PYLONG_INTERNALS +- #include "longintrepr.h" ++ #if PY_MAJOR_VERSION < 3 ++ #include "longintrepr.h" ++ #endif + #undef SHIFT + #undef BASE + #undef MASK +@@ -329,9 +339,68 @@ END: Cython Metadata */ + #define __Pyx_DefaultClassType PyClass_Type + #else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" +-#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 +- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ +- PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) ++ #define __Pyx_DefaultClassType PyType_Type ++#if PY_VERSION_HEX >= 0x030B00A1 ++ static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, ++ PyObject *code, PyObject *c, PyObject* n, PyObject *v, ++ PyObject *fv, PyObject *cell, PyObject* fn, ++ PyObject *name, int fline, PyObject *lnos) { ++ PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL; ++ PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL; ++ const char *fn_cstr=NULL; ++ const char *name_cstr=NULL; ++ PyCodeObject* co=NULL; ++ PyObject *type, *value, *traceback; ++ PyErr_Fetch(&type, &value, &traceback); ++ if (!(kwds=PyDict_New())) goto end; ++ if (!(argcount=PyLong_FromLong(a))) goto end; ++ if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end; ++ if (!(posonlyargcount=PyLong_FromLong(0))) goto end; ++ if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end; ++ if (!(kwonlyargcount=PyLong_FromLong(k))) goto end; ++ if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end; ++ if (!(nlocals=PyLong_FromLong(l))) goto end; ++ if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end; ++ if (!(stacksize=PyLong_FromLong(s))) goto end; ++ if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end; ++ if (!(flags=PyLong_FromLong(f))) goto end; ++ if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end; ++ if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end; ++ if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end; ++ if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end; ++ if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too; ++ if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here ++ if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too; ++ Py_XDECREF((PyObject*)co); ++ co = (PyCodeObject*)call_result; ++ call_result = NULL; ++ if (0) { ++ cleanup_code_too: ++ Py_XDECREF((PyObject*)co); ++ co = NULL; ++ } ++ end: ++ Py_XDECREF(kwds); ++ Py_XDECREF(argcount); ++ Py_XDECREF(posonlyargcount); ++ Py_XDECREF(kwonlyargcount); ++ Py_XDECREF(nlocals); ++ Py_XDECREF(stacksize); ++ Py_XDECREF(replace); ++ Py_XDECREF(call_result); ++ Py_XDECREF(empty); ++ if (type) { ++ PyErr_Restore(type, value, traceback); ++ } ++ return co; ++ } + #else + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +@@ -445,8 +514,12 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + #endif + #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 ++ #if defined(PyUnicode_IS_READY) + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) ++ #else ++ #define __Pyx_PyUnicode_READY(op) (0) ++ #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) +@@ -455,7 +528,11 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) + #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) ++ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 ++ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) ++ #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) ++ #endif + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #endif +@@ -627,7 +704,6 @@ static CYTHON_INLINE float __PYX_NAN() { + #include + #include + #include "mpv/client.h" +-#include "mpv/opengl_cb.h" + #include "mpv/render.h" + #include "mpv/render_gl.h" + #ifdef _OPENMP +@@ -857,12 +933,10 @@ static const char *__pyx_f[] = { + + /*--- Type declarations ---*/ + struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached; +-struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch; + struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage; + struct __pyx_obj_9vidcutter_4libs_3mpv_Property; + struct __pyx_obj_9vidcutter_4libs_3mpv_Event; + struct __pyx_obj_9vidcutter_4libs_3mpv_Context; +-struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext; + struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams; + struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo; + struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext; +@@ -897,21 +971,6 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":169 +- * +- * +- * cdef class InputDispatch(object): # <<<<<<<<<<<<<< +- * """Data field for MPV_EVENT_SCRIPT_INPUT_DISPATCH events. +- * +- */ +-struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch { +- PyObject_HEAD +- struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch *__pyx_vtab; +- PyObject *arg0; +- PyObject *type; +-}; +- +- + /* "vidcutter/libs/pympv/mpv.pyx":182 + * + * +@@ -978,21 +1037,6 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_Context { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":822 +- * (ctx)() +- * +- * cdef class OpenGLContext(object): # <<<<<<<<<<<<<< +- * cdef: +- * mpv_opengl_cb_context *_ctx +- */ +-struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext { +- PyObject_HEAD +- struct mpv_opengl_cb_context *_ctx; +- int inited; +- PyObject *update_cb; +-}; +- +- + /* "vidcutter/libs/pympv/mpv.pyx":881 + * DEF MAX_RENDER_PARAMS = 32 + * +@@ -1080,20 +1124,6 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached { + static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached; + + +-/* "vidcutter/libs/pympv/mpv.pyx":169 +- * +- * +- * cdef class InputDispatch(object): # <<<<<<<<<<<<<< +- * """Data field for MPV_EVENT_SCRIPT_INPUT_DISPATCH events. +- * +- */ +- +-struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch { +- PyObject *(*_init)(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *, struct mpv_event_script_input_dispatch *); +-}; +-static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch *__pyx_vtabptr_9vidcutter_4libs_3mpv_InputDispatch; +- +- + /* "vidcutter/libs/pympv/mpv.pyx":182 + * + * +@@ -1318,6 +1348,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, + #ifndef Py_MEMBER_SIZE + #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) + #endif ++#if CYTHON_FAST_PYCALL + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ +@@ -1325,6 +1356,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) ++#endif // CYTHON_FAST_PYCALL + #endif + + /* PyCFunctionFastCall.proto */ +@@ -1747,12 +1779,23 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); + static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + ++/* GCCDiagnostics.proto */ ++#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) ++#define __Pyx_HAS_GCC_DIAGNOSTIC ++#endif ++ + /* CIntToPy.proto */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + ++/* CIntFromPy.proto */ ++static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); ++ + /* CIntToPy.proto */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_event_id(enum mpv_event_id value); + ++/* CIntFromPy.proto */ ++static CYTHON_INLINE enum mpv_event_id __Pyx_PyInt_As_enum__mpv_event_id(PyObject *); ++ + /* CIntToPy.proto */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value); + +@@ -1768,30 +1811,21 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_end_file_reason(enum m + /* CIntToPy.proto */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_render_update_flag(enum mpv_render_update_flag value); + ++/* CIntFromPy.proto */ ++static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); ++ + /* CIntToPy.proto */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value); + + /* CIntToPy.proto */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value); + +-/* CIntToPy.proto */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_format(enum mpv_format value); +- +-/* CIntToPy.proto */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); +- +-/* CIntFromPy.proto */ +-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); +- +-/* CIntFromPy.proto */ +-static CYTHON_INLINE enum mpv_event_id __Pyx_PyInt_As_enum__mpv_event_id(PyObject *); +- +-/* CIntFromPy.proto */ +-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); +- + /* CIntFromPy.proto */ + static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *); + ++/* CIntToPy.proto */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_format(enum mpv_format value); ++ + /* CIntFromPy.proto */ + static CYTHON_INLINE enum mpv_format __Pyx_PyInt_As_enum__mpv_format(PyObject *); + +@@ -1801,6 +1835,9 @@ static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *); + /* CIntFromPy.proto */ + static CYTHON_INLINE intptr_t __Pyx_PyInt_As_intptr_t(PyObject *); + ++/* CIntToPy.proto */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); ++ + /* CheckBinaryVersion.proto */ + static int __Pyx_check_binary_version(void); + +@@ -1808,7 +1845,6 @@ static int __Pyx_check_binary_version(void); + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + + static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v_self, struct mpv_event_end_file *__pyx_v_eof); /* proto*/ +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, struct mpv_event_script_input_dispatch *__pyx_v_input); /* proto*/ + static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, struct mpv_event_log_message *__pyx_v_msg); /* proto*/ + static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, struct mpv_event_property *__pyx_v_prop); /* proto*/ + static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event); /* proto*/ +@@ -1834,12 +1870,10 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(st + + /* Module declarations from 'vidcutter.libs.mpv' */ + static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached = 0; +-static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_InputDispatch = 0; + static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage = 0; + static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_Property = 0; + static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_Event = 0; + static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_Context = 0; +-static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_OpenGLContext = 0; + static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams = 0; + static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo = 0; + static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext = 0; +@@ -1855,7 +1889,6 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *); /*proto*/ + static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *, PyObject *); /*proto*/ + static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *); /*proto*/ + static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *, PyObject *); /*proto*/ +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_InputDispatch__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *, PyObject *); /*proto*/ + static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *, PyObject *); /*proto*/ + static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *, PyObject *); /*proto*/ + static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, PyObject *); /*proto*/ +@@ -1873,7 +1906,6 @@ static PyObject *__pyx_builtin_range; + static PyObject *__pyx_builtin_id; + static PyObject *__pyx_builtin_enumerate; + static PyObject *__pyx_builtin_TypeError; +-static PyObject *__pyx_builtin_DeprecationWarning; + static const char __pyx_k_e[] = "e"; + static const char __pyx_k_h[] = "h"; + static const char __pyx_k_k[] = "k"; +@@ -1900,7 +1932,6 @@ static const char __pyx_k_call[] = "call"; + static const char __pyx_k_code[] = "code"; + static const char __pyx_k_data[] = "data"; + static const char __pyx_k_dict[] = "__dict__"; +-static const char __pyx_k_exts[] = "exts"; + static const char __pyx_k_idle[] = "idle"; + static const char __pyx_k_info[] = "info"; + static const char __pyx_k_init[] = "__init__"; +@@ -1926,7 +1957,6 @@ static const char __pyx_k_error[] = "error"; + static const char __pyx_k_event[] = "event"; + static const char __pyx_k_fatal[] = "fatal"; + static const char __pyx_k_nomem[] = "nomem"; +-static const char __pyx_k_pause[] = "pause"; + static const char __pyx_k_range[] = "range"; + static const char __pyx_k_start[] = "start"; + static const char __pyx_k_trace[] = "trace"; +@@ -1973,7 +2003,6 @@ static const char __pyx_k_present[] = "present"; + static const char __pyx_k_release[] = "release"; + static const char __pyx_k_success[] = "success"; + static const char __pyx_k_timeout[] = "timeout"; +-static const char __pyx_k_unpause[] = "unpause"; + static const char __pyx_k_version[] = "__version__"; + static const char __pyx_k_wrapped[] = "wrapped"; + static const char __pyx_k_MPVError[] = "MPVError"; +@@ -1998,7 +2027,6 @@ static const char __pyx_k_pyx_state[] = "__pyx_state"; + static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; + static const char __pyx_k_render_fd[] = "render_fd"; + static const char __pyx_k_threading[] = "threading"; +-static const char __pyx_k_uninit_gl[] = "uninit_gl"; + static const char __pyx_k_API_OPENGL[] = "API_OPENGL"; + static const char __pyx_k_CAPI_MAJOR[] = "_CAPI_MAJOR"; + static const char __pyx_k_CAPI_MINOR[] = "_CAPI_MINOR"; +@@ -2038,8 +2066,6 @@ static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; + static const char __pyx_k_set_property[] = "set_property"; + static const char __pyx_k_stringsource[] = "stringsource"; + static const char __pyx_k_version_info[] = "version_info"; +-static const char __pyx_k_InputDispatch[] = "InputDispatch"; +-static const char __pyx_k_OpenGLContext[] = "OpenGLContext"; + static const char __pyx_k_RenderContext[] = "RenderContext"; + static const char __pyx_k_ReplyUserData[] = "_ReplyUserData"; + static const char __pyx_k_command_error[] = "command_error"; +@@ -2053,18 +2079,15 @@ static const char __pyx_k_CallbackThread[] = "CallbackThread"; + static const char __pyx_k_MIN_CAPI_MINOR[] = "_MIN_CAPI_MINOR"; + static const char __pyx_k_ao_init_failed[] = "ao_init_failed"; + static const char __pyx_k_audio_reconfig[] = "audio_reconfig"; +-static const char __pyx_k_chapter_change[] = "chapter_change"; + static const char __pyx_k_client_message[] = "client_message"; + static const char __pyx_k_loading_failed[] = "loading_failed"; + static const char __pyx_k_property_error[] = "property_error"; + static const char __pyx_k_skip_rendering[] = "skip_rendering"; +-static const char __pyx_k_tracks_changed[] = "tracks_changed"; + static const char __pyx_k_unknown_format[] = "unknown_format"; + static const char __pyx_k_video_reconfig[] = "video_reconfig"; + static const char __pyx_k_vo_init_failed[] = "vo_init_failed"; + static const char __pyx_k_MPVError___init[] = "MPVError.__init__"; + static const char __pyx_k_internal_format[] = "internal_format"; +-static const char __pyx_k_metadata_update[] = "metadata_update"; + static const char __pyx_k_not_implemented[] = "not_implemented"; + static const char __pyx_k_nothing_to_play[] = "nothing_to_play"; + static const char __pyx_k_property_change[] = "property_change"; +@@ -2073,7 +2096,6 @@ static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; + static const char __pyx_k_set_icc_profile[] = "set_icc_profile"; + static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; + static const char __pyx_k_surrogateescape[] = "surrogateescape"; +-static const char __pyx_k_tracks_switched[] = "tracks_switched"; + static const char __pyx_k_EndOfFileReached[] = "EndOfFileReached"; + static const char __pyx_k_advanced_control[] = "advanced_control"; + static const char __pyx_k_drmModeAtomicReq[] = "drmModeAtomicReq*"; +@@ -2085,7 +2107,6 @@ static const char __pyx_k_invalid_parameter[] = "invalid_parameter"; + static const char __pyx_k_set_ambient_light[] = "set_ambient_light"; + static const char __pyx_k_CallbackThread_run[] = "CallbackThread.run"; + static const char __pyx_k_CallbackThread_set[] = "CallbackThread.set"; +-static const char __pyx_k_DeprecationWarning[] = "DeprecationWarning"; + static const char __pyx_k_UnicodeDecodeError[] = "UnicodeDecodeError"; + static const char __pyx_k_UnicodeEncodeError[] = "UnicodeEncodeError"; + static const char __pyx_k_Unknown_api_type_r[] = "Unknown api_type %r"; +@@ -2109,12 +2130,9 @@ static const char __pyx_k_RenderParams_overflow[] = "RenderParams overflow"; + static const char __pyx_k_block_for_target_time[] = "block_for_target_time"; + static const char __pyx_k_errors_locals_wrapped[] = "_errors..wrapped"; + static const char __pyx_k_pyx_unpickle_Property[] = "__pyx_unpickle_Property"; +-static const char __pyx_k_script_input_dispatch[] = "script_input_dispatch"; + static const char __pyx_k_Context_creation_error[] = "Context creation error"; + static const char __pyx_k_CallbackThread_shutdown[] = "CallbackThread.shutdown"; + static const char __pyx_k_pyx_unpickle_LogMessage[] = "__pyx_unpickle_LogMessage"; +-static const char __pyx_k_OpenGL_API_not_available[] = "OpenGL API not available"; +-static const char __pyx_k_pyx_unpickle_InputDispatch[] = "__pyx_unpickle_InputDispatch"; + static const char __pyx_k_CallbackThread_mpv_callback[] = "CallbackThread.mpv_callback"; + static const char __pyx_k_pyx_unpickle_RenderFrameInfo[] = "__pyx_unpickle_RenderFrameInfo"; + static const char __pyx_k_vidcutter_libs_pympv_mpv_pyx[] = "vidcutter/libs/pympv/mpv.pyx"; +@@ -2125,11 +2143,9 @@ static const char __pyx_k_self_params_cannot_be_converted[] = "self.params canno + static const char __pyx_k_Incompatible_checksums_s_vs_0x05[] = "Incompatible checksums (%s vs 0x0572d11 = (data, name))"; + static const char __pyx_k_Incompatible_checksums_s_vs_0x56[] = "Incompatible checksums (%s vs 0x56be9b6 = (error, reason))"; + static const char __pyx_k_Incompatible_checksums_s_vs_0x87[] = "Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))"; +-static const char __pyx_k_Incompatible_checksums_s_vs_0xbf[] = "Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))"; + static const char __pyx_k_Incompatible_checksums_s_vs_0xd4[] = "Incompatible checksums (%s vs 0xd41d8cd = ())"; + static const char __pyx_k_Incompatible_checksums_s_vs_0xda[] = "Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))"; + static const char __pyx_k_Known_possible_values_for_EndOfF[] = "Known possible values for EndOfFileReached reason.\n\n You should handle the possibility that the reason may not be any of these values.\n "; +-static const char __pyx_k_OpenGLContext_is_deprecated_plea[] = "OpenGLContext is deprecated, please switch to RenderContext"; + static const char __pyx_k_Set_of_known_error_codes_from_Mp[] = "Set of known error codes from MpvError and Event responses.\n\n Mostly wraps the enum mpv_error.\n Values might not always be integers in the future.\n You should handle the possibility that error codes may not be any of these values.\n "; + static const char __pyx_k_Set_of_known_values_for_Event_id[] = "Set of known values for Event ids.\n\n Mostly wraps the enum mpv_event_id.\n Values might not always be integers in the future.\n You should handle the possibility that event ids may not be any of these values.\n "; + static const char __pyx_k_Unknown_or_invalid_pointer_objec[] = "Unknown or invalid pointer object: %r"; +@@ -2151,7 +2167,6 @@ static PyObject *__pyx_n_s_CallbackThread_set; + static PyObject *__pyx_n_s_CallbackThread_shutdown; + static PyObject *__pyx_n_s_Context; + static PyObject *__pyx_kp_s_Context_creation_error; +-static PyObject *__pyx_n_s_DeprecationWarning; + static PyObject *__pyx_n_s_EOFReasons; + static PyObject *__pyx_n_s_EndOfFileReached; + static PyObject *__pyx_n_s_Errors; +@@ -2161,20 +2176,15 @@ static PyObject *__pyx_n_s_ImportError; + static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x05; + static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x56; + static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x87; +-static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xbf; + static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xd4; + static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xda; +-static PyObject *__pyx_n_s_InputDispatch; + static PyObject *__pyx_kp_s_Known_possible_values_for_EndOfF; + static PyObject *__pyx_n_s_LogLevels; + static PyObject *__pyx_n_s_LogMessage; + static PyObject *__pyx_n_s_MIN_CAPI_MINOR; + static PyObject *__pyx_n_s_MPVError; + static PyObject *__pyx_n_s_MPVError___init; +-static PyObject *__pyx_n_s_OpenGLContext; +-static PyObject *__pyx_kp_s_OpenGLContext_is_deprecated_plea; + static PyObject *__pyx_n_s_OpenGLRenderContext; +-static PyObject *__pyx_kp_s_OpenGL_API_not_available; + static PyObject *__pyx_n_s_PickleError; + static PyObject *__pyx_n_s_Property; + static PyObject *__pyx_n_s_PyMPVError; +@@ -2211,7 +2221,6 @@ static PyObject *__pyx_n_s_block_for_target_time; + static PyObject *__pyx_n_s_block_vsync; + static PyObject *__pyx_n_s_call; + static PyObject *__pyx_n_s_callback; +-static PyObject *__pyx_n_s_chapter_change; + static PyObject *__pyx_n_s_client_message; + static PyObject *__pyx_n_s_cline_in_traceback; + static PyObject *__pyx_n_s_close; +@@ -2244,7 +2253,6 @@ static PyObject *__pyx_n_s_error; + static PyObject *__pyx_n_s_errors; + static PyObject *__pyx_n_s_errors_locals_wrapped; + static PyObject *__pyx_n_s_event; +-static PyObject *__pyx_n_s_exts; + static PyObject *__pyx_n_s_fatal; + static PyObject *__pyx_n_s_fbo; + static PyObject *__pyx_n_s_fd; +@@ -2280,7 +2288,6 @@ static PyObject *__pyx_n_s_lock; + static PyObject *__pyx_n_s_log_message; + static PyObject *__pyx_n_s_main; + static PyObject *__pyx_n_s_metaclass; +-static PyObject *__pyx_n_s_metadata_update; + static PyObject *__pyx_n_s_module; + static PyObject *__pyx_n_s_mpv; + static PyObject *__pyx_n_s_mpv_callback; +@@ -2301,7 +2308,6 @@ static PyObject *__pyx_n_s_opengl_fbo; + static PyObject *__pyx_n_s_opengl_init_params; + static PyObject *__pyx_n_s_option_error; + static PyObject *__pyx_n_s_option_format; +-static PyObject *__pyx_n_s_pause; + static PyObject *__pyx_n_s_pickle; + static PyObject *__pyx_n_s_playback_restart; + static PyObject *__pyx_n_s_prepare; +@@ -2319,7 +2325,6 @@ static PyObject *__pyx_n_s_pyx_state; + static PyObject *__pyx_n_s_pyx_type; + static PyObject *__pyx_n_s_pyx_unpickle_EndOfFileReached; + static PyObject *__pyx_n_s_pyx_unpickle_Event; +-static PyObject *__pyx_n_s_pyx_unpickle_InputDispatch; + static PyObject *__pyx_n_s_pyx_unpickle_LogMessage; + static PyObject *__pyx_n_s_pyx_unpickle_Property; + static PyObject *__pyx_n_s_pyx_unpickle_RenderFrameInfo; +@@ -2340,7 +2345,6 @@ static PyObject *__pyx_n_s_repeat; + static PyObject *__pyx_n_s_request_event; + static PyObject *__pyx_n_s_run; + static PyObject *__pyx_n_s_s; +-static PyObject *__pyx_n_s_script_input_dispatch; + static PyObject *__pyx_n_s_seek; + static PyObject *__pyx_n_s_self; + static PyObject *__pyx_kp_s_self__ctx_cannot_be_converted_to; +@@ -2373,13 +2377,9 @@ static PyObject *__pyx_n_s_threading; + static PyObject *__pyx_n_s_tick; + static PyObject *__pyx_n_s_timeout; + static PyObject *__pyx_n_s_trace; +-static PyObject *__pyx_n_s_tracks_changed; +-static PyObject *__pyx_n_s_tracks_switched; +-static PyObject *__pyx_n_s_uninit_gl; + static PyObject *__pyx_n_s_uninitialized; + static PyObject *__pyx_n_s_unknown_format; + static PyObject *__pyx_n_s_unobserve_property; +-static PyObject *__pyx_n_s_unpause; + static PyObject *__pyx_n_s_unsupported; + static PyObject *__pyx_n_s_update; + static PyObject *__pyx_kp_s_utf_8; +@@ -2409,14 +2409,6 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_2__set__(str + static int __pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v_self); /* proto */ + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v_self); /* proto */ + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ +-static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +-static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ +-static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +-static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self); /* proto */ + static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ + static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self); /* proto */ +@@ -2462,41 +2454,29 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_ + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_suspend(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2resume(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4request_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_enable); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6set_log_level(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_loglevel); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8load_config(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_filename); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10_format_for(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data, PyObject *__pyx_v_cmdlist); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16try_get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data, PyObject *__pyx_v_default); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18try_get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_default); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22set_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24set_option(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28wait_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_36__cinit__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38observe_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_40unobserve_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_data); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_42shutdown(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44opengl_cb_api(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_46__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +-static int __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_2init_gl(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_exts, PyObject *__pyx_v_get_proc_address); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_4set_update_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_cb); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_6draw(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_fbo, PyObject *__pyx_v_w, PyObject *__pyx_v_h); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_8report_flip(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_time); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_10uninit_gl(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self); /* proto */ +-static void __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_12__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_enable); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_loglevel); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_filename); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data, PyObject *__pyx_v_cmdlist); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data, PyObject *__pyx_v_default); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_default); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ ++static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_data); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ ++static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_42__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ + static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self); /* proto */ + static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self); /* proto */ + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self); /* proto */ +@@ -2526,18 +2506,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNU + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ + static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_InputDispatch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_LogMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Property(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_Event(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16__pyx_unpickle_RenderFrameInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_LogMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_Property(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Event(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_RenderFrameInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_InputDispatch(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Property(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Event(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Context(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +@@ -2545,13 +2522,12 @@ static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext(PyTypeOb + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ + static PyObject *__pyx_int_0; + static PyObject *__pyx_int_1; ++static PyObject *__pyx_int_2; + static PyObject *__pyx_int_3; +-static PyObject *__pyx_int_9; + static PyObject *__pyx_int_32; + static PyObject *__pyx_int_5713169; + static PyObject *__pyx_int_90958262; + static PyObject *__pyx_int_142036910; +-static PyObject *__pyx_int_200688041; + static PyObject *__pyx_int_222419149; + static PyObject *__pyx_int_228822053; + static PyObject *__pyx_int_neg_1; +@@ -2573,48 +2549,43 @@ static PyObject *__pyx_tuple__16; + static PyObject *__pyx_tuple__17; + static PyObject *__pyx_tuple__18; + static PyObject *__pyx_tuple__19; +-static PyObject *__pyx_tuple__20; + static PyObject *__pyx_tuple__21; +-static PyObject *__pyx_tuple__22; +-static PyObject *__pyx_tuple__24; +-static PyObject *__pyx_tuple__26; ++static PyObject *__pyx_tuple__23; ++static PyObject *__pyx_tuple__25; ++static PyObject *__pyx_tuple__27; + static PyObject *__pyx_tuple__28; + static PyObject *__pyx_tuple__30; +-static PyObject *__pyx_tuple__31; +-static PyObject *__pyx_tuple__33; +-static PyObject *__pyx_tuple__35; +-static PyObject *__pyx_tuple__37; +-static PyObject *__pyx_tuple__39; +-static PyObject *__pyx_tuple__41; +-static PyObject *__pyx_tuple__43; +-static PyObject *__pyx_tuple__45; +-static PyObject *__pyx_tuple__47; +-static PyObject *__pyx_tuple__49; +-static PyObject *__pyx_tuple__51; +-static PyObject *__pyx_tuple__53; +-static PyObject *__pyx_tuple__55; +-static PyObject *__pyx_tuple__57; +-static PyObject *__pyx_tuple__59; ++static PyObject *__pyx_tuple__32; ++static PyObject *__pyx_tuple__34; ++static PyObject *__pyx_tuple__36; ++static PyObject *__pyx_tuple__38; ++static PyObject *__pyx_tuple__40; ++static PyObject *__pyx_tuple__42; ++static PyObject *__pyx_tuple__44; ++static PyObject *__pyx_tuple__46; ++static PyObject *__pyx_tuple__48; ++static PyObject *__pyx_tuple__50; ++static PyObject *__pyx_tuple__52; ++static PyObject *__pyx_tuple__54; + static PyObject *__pyx_codeobj__2; +-static PyObject *__pyx_codeobj__23; +-static PyObject *__pyx_codeobj__25; +-static PyObject *__pyx_codeobj__27; ++static PyObject *__pyx_codeobj__20; ++static PyObject *__pyx_codeobj__22; ++static PyObject *__pyx_codeobj__24; ++static PyObject *__pyx_codeobj__26; + static PyObject *__pyx_codeobj__29; +-static PyObject *__pyx_codeobj__32; +-static PyObject *__pyx_codeobj__34; +-static PyObject *__pyx_codeobj__36; +-static PyObject *__pyx_codeobj__38; +-static PyObject *__pyx_codeobj__40; +-static PyObject *__pyx_codeobj__42; +-static PyObject *__pyx_codeobj__44; +-static PyObject *__pyx_codeobj__46; +-static PyObject *__pyx_codeobj__48; +-static PyObject *__pyx_codeobj__50; +-static PyObject *__pyx_codeobj__52; +-static PyObject *__pyx_codeobj__54; +-static PyObject *__pyx_codeobj__56; +-static PyObject *__pyx_codeobj__58; +-static PyObject *__pyx_codeobj__60; ++static PyObject *__pyx_codeobj__31; ++static PyObject *__pyx_codeobj__33; ++static PyObject *__pyx_codeobj__35; ++static PyObject *__pyx_codeobj__37; ++static PyObject *__pyx_codeobj__39; ++static PyObject *__pyx_codeobj__41; ++static PyObject *__pyx_codeobj__43; ++static PyObject *__pyx_codeobj__45; ++static PyObject *__pyx_codeobj__47; ++static PyObject *__pyx_codeobj__49; ++static PyObject *__pyx_codeobj__51; ++static PyObject *__pyx_codeobj__53; ++static PyObject *__pyx_codeobj__55; + /* Late includes */ + + /* "vidcutter/libs/pympv/mpv.pyx":55 +@@ -2987,7 +2958,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + * # In python2, assume bytes and walk right through + * return s # <<<<<<<<<<<<<< + * +- * PyEval_InitThreads() ++ * Py_Initialize() + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_s); +@@ -3616,15 +3587,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_2__setstate_c + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":176 +- * cdef public object arg0, type ++/* "vidcutter/libs/pympv/mpv.pyx":189 ++ * cdef public object prefix, level, text, log_level + * +- * cdef _init(self, mpv_event_script_input_dispatch* input): # <<<<<<<<<<<<<< +- * self.arg0 = input.arg0 +- * self.type = _strdec(input.type) ++ * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< ++ * self.level = _strdec(msg.level) ++ * self.prefix = _strdec(msg.prefix) + */ + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, struct mpv_event_script_input_dispatch *__pyx_v_input) { ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, struct mpv_event_log_message *__pyx_v_msg) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +@@ -3636,31 +3607,82 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_init", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":177 ++ /* "vidcutter/libs/pympv/mpv.pyx":190 + * +- * cdef _init(self, mpv_event_script_input_dispatch* input): +- * self.arg0 = input.arg0 # <<<<<<<<<<<<<< +- * self.type = _strdec(input.type) +- * return self ++ * cdef _init(self, mpv_event_log_message* msg): ++ * self.level = _strdec(msg.level) # <<<<<<<<<<<<<< ++ * self.prefix = _strdec(msg.prefix) ++ * self.text = _strdec(msg.text) ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v_self->level); ++ __Pyx_DECREF(__pyx_v_self->level); ++ __pyx_v_self->level = __pyx_t_1; ++ __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":191 ++ * cdef _init(self, mpv_event_log_message* msg): ++ * self.level = _strdec(msg.level) ++ * self.prefix = _strdec(msg.prefix) # <<<<<<<<<<<<<< ++ * self.text = _strdec(msg.text) ++ * self.log_level = msg.log_level + */ +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_input->arg0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->arg0); +- __Pyx_DECREF(__pyx_v_self->arg0); +- __pyx_v_self->arg0 = __pyx_t_1; ++ __Pyx_GOTREF(__pyx_v_self->prefix); ++ __Pyx_DECREF(__pyx_v_self->prefix); ++ __pyx_v_self->prefix = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":178 +- * cdef _init(self, mpv_event_script_input_dispatch* input): +- * self.arg0 = input.arg0 +- * self.type = _strdec(input.type) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":192 ++ * self.level = _strdec(msg.level) ++ * self.prefix = _strdec(msg.prefix) ++ * self.text = _strdec(msg.text) # <<<<<<<<<<<<<< ++ * self.log_level = msg.log_level + * return self +- * + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_input->type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 178, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -3675,18 +3697,33 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->type); +- __Pyx_DECREF(__pyx_v_self->type); +- __pyx_v_self->type = __pyx_t_1; ++ __Pyx_GOTREF(__pyx_v_self->text); ++ __Pyx_DECREF(__pyx_v_self->text); ++ __pyx_v_self->text = __pyx_t_1; ++ __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":193 ++ * self.prefix = _strdec(msg.prefix) ++ * self.text = _strdec(msg.text) ++ * self.log_level = msg.log_level # <<<<<<<<<<<<<< ++ * return self ++ * ++ */ ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_msg->log_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v_self->log_level); ++ __Pyx_DECREF(__pyx_v_self->log_level); ++ __pyx_v_self->log_level = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":179 +- * self.arg0 = input.arg0 +- * self.type = _strdec(input.type) ++ /* "vidcutter/libs/pympv/mpv.pyx":194 ++ * self.text = _strdec(msg.text) ++ * self.log_level = msg.log_level + * return self # <<<<<<<<<<<<<< + * + * +@@ -3696,12 +3733,12 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":176 +- * cdef public object arg0, type ++ /* "vidcutter/libs/pympv/mpv.pyx":189 ++ * cdef public object prefix, level, text, log_level + * +- * cdef _init(self, mpv_event_script_input_dispatch* input): # <<<<<<<<<<<<<< +- * self.arg0 = input.arg0 +- * self.type = _strdec(input.type) ++ * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< ++ * self.level = _strdec(msg.level) ++ * self.prefix = _strdec(msg.prefix) + */ + + /* function exit code */ +@@ -3710,7 +3747,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.InputDispatch._init", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage._init", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); +@@ -3718,34 +3755,34 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":174 +- * Wraps: mpv_event_script_input_dispatch ++/* "vidcutter/libs/pympv/mpv.pyx":187 ++ * Wraps: mpv_event_log_message + * """ +- * cdef public object arg0, type # <<<<<<<<<<<<<< ++ * cdef public object prefix, level, text, log_level # <<<<<<<<<<<<<< + * +- * cdef _init(self, mpv_event_script_input_dispatch* input): ++ * cdef _init(self, mpv_event_log_message* msg): + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_1__get__(PyObject *__pyx_v_self) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->arg0); +- __pyx_r = __pyx_v_self->arg0; ++ __Pyx_INCREF(__pyx_v_self->prefix); ++ __pyx_r = __pyx_v_self->prefix; + goto __pyx_L0; + + /* function exit code */ +@@ -3756,27 +3793,27 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0___get__(st + } + + /* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v_value) { ++static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 0); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->arg0); +- __Pyx_DECREF(__pyx_v_self->arg0); +- __pyx_v_self->arg0 = __pyx_v_value; ++ __Pyx_GOTREF(__pyx_v_self->prefix); ++ __Pyx_DECREF(__pyx_v_self->prefix); ++ __pyx_v_self->prefix = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; +@@ -3785,27 +3822,27 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_2__set__(struct + } + + /* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_5__del__(PyObject *__pyx_v_self) { ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(PyObject *__pyx_v_self); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(PyObject *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { ++static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 0); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->arg0); +- __Pyx_DECREF(__pyx_v_self->arg0); +- __pyx_v_self->arg0 = Py_None; ++ __Pyx_GOTREF(__pyx_v_self->prefix); ++ __Pyx_DECREF(__pyx_v_self->prefix); ++ __pyx_v_self->prefix = Py_None; + + /* function exit code */ + __pyx_r = 0; +@@ -3814,25 +3851,25 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_4__del__(struct + } + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_1__get__(PyObject *__pyx_v_self) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->type); +- __pyx_r = __pyx_v_self->type; ++ __Pyx_INCREF(__pyx_v_self->level); ++ __pyx_r = __pyx_v_self->level; + goto __pyx_L0; + + /* function exit code */ +@@ -3843,27 +3880,27 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type___get__(st + } + + /* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v_value) { ++static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__set__", 0); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->type); +- __Pyx_DECREF(__pyx_v_self->type); +- __pyx_v_self->type = __pyx_v_value; ++ __Pyx_GOTREF(__pyx_v_self->level); ++ __Pyx_DECREF(__pyx_v_self->level); ++ __pyx_v_self->level = __pyx_v_value; + + /* function exit code */ + __pyx_r = 0; +@@ -3872,27 +3909,27 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_2__set__(struct + } + + /* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_5__del__(PyObject *__pyx_v_self) { ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(PyObject *__pyx_v_self); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(PyObject *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { ++static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__del__", 0); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->type); +- __Pyx_DECREF(__pyx_v_self->type); +- __pyx_v_self->type = Py_None; ++ __Pyx_GOTREF(__pyx_v_self->level); ++ __Pyx_DECREF(__pyx_v_self->level); ++ __pyx_v_self->level = Py_None; + + /* function exit code */ + __pyx_r = 0; +@@ -3900,63 +3937,243 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_4__del__(struct + return __pyx_r; + } + +-/* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * cdef tuple state +- * cdef object _dict +- */ +- + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { +- PyObject *__pyx_v_state = 0; +- PyObject *__pyx_v__dict = 0; +- int __pyx_v_use_setstate; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__reduce_cython__", 0); ++ __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_self->text); ++ __pyx_r = __pyx_v_self->text; ++ goto __pyx_L0; + +- /* "(tree fragment)":5 +- * cdef object _dict +- * cdef bint use_setstate +- * state = (self.arg0, self.type) # <<<<<<<<<<<<<< +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: +- */ +- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(__pyx_v_self->arg0); +- __Pyx_GIVEREF(__pyx_v_self->arg0); +- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->arg0); +- __Pyx_INCREF(__pyx_v_self->type); +- __Pyx_GIVEREF(__pyx_v_self->type); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->type); ++ /* function exit code */ ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__", 0); ++ __Pyx_INCREF(__pyx_v_value); ++ __Pyx_GIVEREF(__pyx_v_value); ++ __Pyx_GOTREF(__pyx_v_self->text); ++ __Pyx_DECREF(__pyx_v_self->text); ++ __pyx_v_self->text = __pyx_v_value; ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(PyObject *__pyx_v_self); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(PyObject *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__", 0); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ __Pyx_GOTREF(__pyx_v_self->text); ++ __Pyx_DECREF(__pyx_v_self->text); ++ __pyx_v_self->text = Py_None; ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_self->log_level); ++ __pyx_r = __pyx_v_self->log_level; ++ goto __pyx_L0; ++ ++ /* function exit code */ ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__", 0); ++ __Pyx_INCREF(__pyx_v_value); ++ __Pyx_GIVEREF(__pyx_v_value); ++ __Pyx_GOTREF(__pyx_v_self->log_level); ++ __Pyx_DECREF(__pyx_v_self->log_level); ++ __pyx_v_self->log_level = __pyx_v_value; ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(PyObject *__pyx_v_self); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(PyObject *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__", 0); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ __Pyx_GOTREF(__pyx_v_self->log_level); ++ __Pyx_DECREF(__pyx_v_self->log_level); ++ __pyx_v_self->log_level = Py_None; ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * cdef tuple state ++ * cdef object _dict ++ */ ++ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { ++ PyObject *__pyx_v_state = 0; ++ PyObject *__pyx_v__dict = 0; ++ int __pyx_v_use_setstate; ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_2; ++ int __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; ++ int __pyx_t_5; ++ PyObject *__pyx_t_6 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__reduce_cython__", 0); ++ ++ /* "(tree fragment)":5 ++ * cdef object _dict ++ * cdef bint use_setstate ++ * state = (self.level, self.log_level, self.prefix, self.text) # <<<<<<<<<<<<<< ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: ++ */ ++ __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_INCREF(__pyx_v_self->level); ++ __Pyx_GIVEREF(__pyx_v_self->level); ++ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->level); ++ __Pyx_INCREF(__pyx_v_self->log_level); ++ __Pyx_GIVEREF(__pyx_v_self->log_level); ++ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->log_level); ++ __Pyx_INCREF(__pyx_v_self->prefix); ++ __Pyx_GIVEREF(__pyx_v_self->prefix); ++ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->prefix); ++ __Pyx_INCREF(__pyx_v_self->text); ++ __Pyx_GIVEREF(__pyx_v_self->text); ++ PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->text); + __pyx_v_state = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate +- * state = (self.arg0, self.type) ++ * state = (self.level, self.log_level, self.prefix, self.text) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) +@@ -3967,7 +4184,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ + __pyx_t_1 = 0; + + /* "(tree fragment)":7 +- * state = (self.arg0, self.type) ++ * state = (self.level, self.log_level, self.prefix, self.text) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) +@@ -4000,12 +4217,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: +- * use_setstate = self.arg0 is not None or self.type is not None ++ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 +- * state = (self.arg0, self.type) ++ * state = (self.level, self.log_level, self.prefix, self.text) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) +@@ -4017,19 +4234,33 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ + /* "(tree fragment)":11 + * use_setstate = True + * else: +- * use_setstate = self.arg0 is not None or self.type is not None # <<<<<<<<<<<<<< ++ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None # <<<<<<<<<<<<<< + * if use_setstate: +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state + */ + /*else*/ { +- __pyx_t_2 = (__pyx_v_self->arg0 != Py_None); ++ __pyx_t_2 = (__pyx_v_self->level != Py_None); ++ __pyx_t_5 = (__pyx_t_2 != 0); ++ if (!__pyx_t_5) { ++ } else { ++ __pyx_t_3 = __pyx_t_5; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_5 = (__pyx_v_self->log_level != Py_None); ++ __pyx_t_2 = (__pyx_t_5 != 0); ++ if (!__pyx_t_2) { ++ } else { ++ __pyx_t_3 = __pyx_t_2; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_2 = (__pyx_v_self->prefix != Py_None); + __pyx_t_5 = (__pyx_t_2 != 0); + if (!__pyx_t_5) { + } else { + __pyx_t_3 = __pyx_t_5; + goto __pyx_L4_bool_binop_done; + } +- __pyx_t_5 = (__pyx_v_self->type != Py_None); ++ __pyx_t_5 = (__pyx_v_self->text != Py_None); + __pyx_t_2 = (__pyx_t_5 != 0); + __pyx_t_3 = __pyx_t_2; + __pyx_L4_bool_binop_done:; +@@ -4039,32 +4270,32 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ + + /* "(tree fragment)":12 + * else: +- * use_setstate = self.arg0 is not None or self.type is not None ++ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None + * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state + * else: + */ + __pyx_t_3 = (__pyx_v_use_setstate != 0); + if (__pyx_t_3) { + + /* "(tree fragment)":13 +- * use_setstate = self.arg0 is not None or self.type is not None ++ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None + * if use_setstate: +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state # <<<<<<<<<<<<<< ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state # <<<<<<<<<<<<<< + * else: +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_InputDispatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_LogMessage); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_200688041); +- __Pyx_GIVEREF(__pyx_int_200688041); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_200688041); ++ __Pyx_INCREF(__pyx_int_142036910); ++ __Pyx_GIVEREF(__pyx_int_142036910); ++ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_142036910); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); +@@ -4085,32 +4316,32 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ + + /* "(tree fragment)":12 + * else: +- * use_setstate = self.arg0 is not None or self.type is not None ++ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None + * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state + * else: + */ + } + + /* "(tree fragment)":15 +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state + * else: +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) # <<<<<<<<<<<<<< ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_InputDispatch__set_state(self, __pyx_state) ++ * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_InputDispatch); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_LogMessage); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_200688041); +- __Pyx_GIVEREF(__pyx_int_200688041); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_200688041); ++ __Pyx_INCREF(__pyx_int_142036910); ++ __Pyx_GIVEREF(__pyx_int_142036910); ++ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_142036910); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); +@@ -4138,7 +4369,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); +- __Pyx_AddTraceback("vidcutter.libs.mpv.InputDispatch.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); +@@ -4150,25 +4381,25 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ + + /* "(tree fragment)":16 + * else: +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_InputDispatch__set_state(self, __pyx_state) ++ * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +@@ -4178,20 +4409,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cyth + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":17 +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) + * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_InputDispatch__set_state(self, __pyx_state) # <<<<<<<<<<<<<< ++ * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_InputDispatch__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: +- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) ++ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_InputDispatch__set_state(self, __pyx_state) ++ * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) + */ + + /* function exit code */ +@@ -4199,7 +4430,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cyth + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.InputDispatch.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); +@@ -4207,1494 +4438,1687 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cyth + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":189 +- * cdef public object prefix, level, text, log_level ++/* "vidcutter/libs/pympv/mpv.pyx":197 + * +- * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< +- * self.level = _strdec(msg.level) +- * self.prefix = _strdec(msg.prefix) ++ * ++ * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< ++ * if node.format == MPV_FORMAT_STRING: ++ * return _strdec(node.u.string) + */ + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, struct mpv_event_log_message *__pyx_v_msg) { ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_node __pyx_v_node) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; ++ int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_init", 0); ++ __Pyx_RefNannySetupContext("_convert_node_value", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":190 ++ /* "vidcutter/libs/pympv/mpv.pyx":198 + * +- * cdef _init(self, mpv_event_log_message* msg): +- * self.level = _strdec(msg.level) # <<<<<<<<<<<<<< +- * self.prefix = _strdec(msg.prefix) +- * self.text = _strdec(msg.text) +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->level); +- __Pyx_DECREF(__pyx_v_self->level); +- __pyx_v_self->level = __pyx_t_1; +- __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":191 +- * cdef _init(self, mpv_event_log_message* msg): +- * self.level = _strdec(msg.level) +- * self.prefix = _strdec(msg.prefix) # <<<<<<<<<<<<<< +- * self.text = _strdec(msg.text) +- * self.log_level = msg.log_level ++ * cdef _convert_node_value(mpv_node node): ++ * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< ++ * return _strdec(node.u.string) ++ * elif node.format == MPV_FORMAT_FLAG: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->prefix); +- __Pyx_DECREF(__pyx_v_self->prefix); +- __pyx_v_self->prefix = __pyx_t_1; +- __pyx_t_1 = 0; ++ switch (__pyx_v_node.format) { ++ case MPV_FORMAT_STRING: + +- /* "vidcutter/libs/pympv/mpv.pyx":192 +- * self.level = _strdec(msg.level) +- * self.prefix = _strdec(msg.prefix) +- * self.text = _strdec(msg.text) # <<<<<<<<<<<<<< +- * self.log_level = msg.log_level +- * return self ++ /* "vidcutter/libs/pympv/mpv.pyx":199 ++ * cdef _convert_node_value(mpv_node node): ++ * if node.format == MPV_FORMAT_STRING: ++ * return _strdec(node.u.string) # <<<<<<<<<<<<<< ++ * elif node.format == MPV_FORMAT_FLAG: ++ * return not not int(node.u.flag) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_node.u.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } + } +- } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->text); +- __Pyx_DECREF(__pyx_v_self->text); +- __pyx_v_self->text = __pyx_t_1; +- __pyx_t_1 = 0; ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":193 +- * self.prefix = _strdec(msg.prefix) +- * self.text = _strdec(msg.text) +- * self.log_level = msg.log_level # <<<<<<<<<<<<<< +- * return self ++ /* "vidcutter/libs/pympv/mpv.pyx":198 + * ++ * cdef _convert_node_value(mpv_node node): ++ * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< ++ * return _strdec(node.u.string) ++ * elif node.format == MPV_FORMAT_FLAG: + */ +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_msg->log_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->log_level); +- __Pyx_DECREF(__pyx_v_self->log_level); +- __pyx_v_self->log_level = __pyx_t_1; +- __pyx_t_1 = 0; ++ break; ++ case MPV_FORMAT_FLAG: + +- /* "vidcutter/libs/pympv/mpv.pyx":194 +- * self.text = _strdec(msg.text) +- * self.log_level = msg.log_level +- * return self # <<<<<<<<<<<<<< +- * +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":201 ++ * return _strdec(node.u.string) ++ * elif node.format == MPV_FORMAT_FLAG: ++ * return not not int(node.u.flag) # <<<<<<<<<<<<<< ++ * elif node.format == MPV_FORMAT_INT64: ++ * return int(node.u.int64) + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(((PyObject *)__pyx_v_self)); +- __pyx_r = ((PyObject *)__pyx_v_self); +- goto __pyx_L0; ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_node.u.flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 201, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_2 = __Pyx_PyBool_FromLong((!((!__pyx_t_5) != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_r = __pyx_t_2; ++ __pyx_t_2 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":189 +- * cdef public object prefix, level, text, log_level +- * +- * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< +- * self.level = _strdec(msg.level) +- * self.prefix = _strdec(msg.prefix) ++ /* "vidcutter/libs/pympv/mpv.pyx":200 ++ * if node.format == MPV_FORMAT_STRING: ++ * return _strdec(node.u.string) ++ * elif node.format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< ++ * return not not int(node.u.flag) ++ * elif node.format == MPV_FORMAT_INT64: + */ ++ break; ++ case MPV_FORMAT_INT64: + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage._init", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":203 ++ * return not not int(node.u.flag) ++ * elif node.format == MPV_FORMAT_INT64: ++ * return int(node.u.int64) # <<<<<<<<<<<<<< ++ * elif node.format == MPV_FORMAT_DOUBLE: ++ * return float(node.u.double_) ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_2 = __Pyx_PyInt_From_int64_t(__pyx_v_node.u.int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +-/* "vidcutter/libs/pympv/mpv.pyx":187 +- * Wraps: mpv_event_log_message +- * """ +- * cdef public object prefix, level, text, log_level # <<<<<<<<<<<<<< +- * +- * cdef _init(self, mpv_event_log_message* msg): ++ /* "vidcutter/libs/pympv/mpv.pyx":202 ++ * elif node.format == MPV_FORMAT_FLAG: ++ * return not not int(node.u.flag) ++ * elif node.format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< ++ * return int(node.u.int64) ++ * elif node.format == MPV_FORMAT_DOUBLE: + */ ++ break; ++ case MPV_FORMAT_DOUBLE: + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__", 0); +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->prefix); +- __pyx_r = __pyx_v_self->prefix; +- goto __pyx_L0; +- +- /* function exit code */ +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":205 ++ * return int(node.u.int64) ++ * elif node.format == MPV_FORMAT_DOUBLE: ++ * return float(node.u.double_) # <<<<<<<<<<<<<< ++ * elif node.format == MPV_FORMAT_NODE_MAP: ++ * return _convert_value(node.u.list, node.format) ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = PyFloat_FromDouble(__pyx_v_node.u.double_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ /* "vidcutter/libs/pympv/mpv.pyx":204 ++ * elif node.format == MPV_FORMAT_INT64: ++ * return int(node.u.int64) ++ * elif node.format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< ++ * return float(node.u.double_) ++ * elif node.format == MPV_FORMAT_NODE_MAP: ++ */ ++ break; ++ case MPV_FORMAT_NODE_MAP: + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":207 ++ * return float(node.u.double_) ++ * elif node.format == MPV_FORMAT_NODE_MAP: ++ * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< ++ * elif node.format == MPV_FORMAT_NODE_ARRAY: ++ * return _convert_value(node.u.list, node.format) ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +-static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__", 0); +- __Pyx_INCREF(__pyx_v_value); +- __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->prefix); +- __Pyx_DECREF(__pyx_v_self->prefix); +- __pyx_v_self->prefix = __pyx_v_value; ++ /* "vidcutter/libs/pympv/mpv.pyx":206 ++ * elif node.format == MPV_FORMAT_DOUBLE: ++ * return float(node.u.double_) ++ * elif node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< ++ * return _convert_value(node.u.list, node.format) ++ * elif node.format == MPV_FORMAT_NODE_ARRAY: ++ */ ++ break; ++ case MPV_FORMAT_NODE_ARRAY: + +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":209 ++ * return _convert_value(node.u.list, node.format) ++ * elif node.format == MPV_FORMAT_NODE_ARRAY: ++ * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< ++ * return None ++ * ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(PyObject *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); ++ /* "vidcutter/libs/pympv/mpv.pyx":208 ++ * elif node.format == MPV_FORMAT_NODE_MAP: ++ * return _convert_value(node.u.list, node.format) ++ * elif node.format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< ++ * return _convert_value(node.u.list, node.format) ++ * return None ++ */ ++ break; ++ default: break; ++ } + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":210 ++ * elif node.format == MPV_FORMAT_NODE_ARRAY: ++ * return _convert_value(node.u.list, node.format) ++ * return None # <<<<<<<<<<<<<< ++ * ++ * ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + +-static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__", 0); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->prefix); +- __Pyx_DECREF(__pyx_v_self->prefix); +- __pyx_v_self->prefix = Py_None; ++ /* "vidcutter/libs/pympv/mpv.pyx":197 ++ * ++ * ++ * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< ++ * if node.format == MPV_FORMAT_STRING: ++ * return _strdec(node.u.string) ++ */ + + /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._convert_node_value", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++/* "vidcutter/libs/pympv/mpv.pyx":213 ++ * ++ * ++ * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< ++ * cdef mpv_node node ++ * cdef mpv_node_list nodelist ++ */ + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data, enum mpv_format __pyx_v_format) { ++ struct mpv_node __pyx_v_node; ++ struct mpv_node_list __pyx_v_nodelist; ++ PyObject *__pyx_v_values = NULL; ++ int __pyx_v_i; ++ PyObject *__pyx_v_value = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__", 0); +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->level); +- __pyx_r = __pyx_v_self->level; +- goto __pyx_L0; ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_2; ++ int __pyx_t_3; ++ int __pyx_t_4; ++ int __pyx_t_5; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ PyObject *__pyx_t_8 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("_convert_value", 0); + +- /* function exit code */ +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":216 ++ * cdef mpv_node node ++ * cdef mpv_node_list nodelist ++ * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< ++ * node = (data)[0] ++ * return _convert_node_value(node) ++ */ ++ switch (__pyx_v_format) { ++ case MPV_FORMAT_NODE: + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ /* "vidcutter/libs/pympv/mpv.pyx":217 ++ * cdef mpv_node_list nodelist ++ * if format == MPV_FORMAT_NODE: ++ * node = (data)[0] # <<<<<<<<<<<<<< ++ * return _convert_node_value(node) ++ * elif format == MPV_FORMAT_NODE_ARRAY: ++ */ ++ __pyx_v_node = (((struct mpv_node *)__pyx_v_data)[0]); + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":218 ++ * if format == MPV_FORMAT_NODE: ++ * node = (data)[0] ++ * return _convert_node_value(node) # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_NODE_ARRAY: ++ * nodelist = (data)[0] ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +-static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__", 0); +- __Pyx_INCREF(__pyx_v_value); +- __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->level); +- __Pyx_DECREF(__pyx_v_self->level); +- __pyx_v_self->level = __pyx_v_value; ++ /* "vidcutter/libs/pympv/mpv.pyx":216 ++ * cdef mpv_node node ++ * cdef mpv_node_list nodelist ++ * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< ++ * node = (data)[0] ++ * return _convert_node_value(node) ++ */ ++ break; ++ case MPV_FORMAT_NODE_ARRAY: + +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":220 ++ * return _convert_node_value(node) ++ * elif format == MPV_FORMAT_NODE_ARRAY: ++ * nodelist = (data)[0] # <<<<<<<<<<<<<< ++ * values = [] ++ * for i in range(nodelist.num): ++ */ ++ __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(PyObject *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); ++ /* "vidcutter/libs/pympv/mpv.pyx":221 ++ * elif format == MPV_FORMAT_NODE_ARRAY: ++ * nodelist = (data)[0] ++ * values = [] # <<<<<<<<<<<<<< ++ * for i in range(nodelist.num): ++ * values.append(_convert_node_value(nodelist.values[i])) ++ */ ++ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_v_values = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":222 ++ * nodelist = (data)[0] ++ * values = [] ++ * for i in range(nodelist.num): # <<<<<<<<<<<<<< ++ * values.append(_convert_node_value(nodelist.values[i])) ++ * return values ++ */ ++ __pyx_t_2 = __pyx_v_nodelist.num; ++ __pyx_t_3 = __pyx_t_2; ++ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { ++ __pyx_v_i = __pyx_t_4; + +-static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__", 0); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->level); +- __Pyx_DECREF(__pyx_v_self->level); +- __pyx_v_self->level = Py_None; ++ /* "vidcutter/libs/pympv/mpv.pyx":223 ++ * values = [] ++ * for i in range(nodelist.num): ++ * values.append(_convert_node_value(nodelist.values[i])) # <<<<<<<<<<<<<< ++ * return values ++ * elif format == MPV_FORMAT_NODE_MAP: ++ */ ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_values, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 223, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ } + +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":224 ++ * for i in range(nodelist.num): ++ * values.append(_convert_node_value(nodelist.values[i])) ++ * return values # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_NODE_MAP: ++ * nodelist = (data)[0] ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_values); ++ __pyx_r = __pyx_v_values; ++ goto __pyx_L0; + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); ++ /* "vidcutter/libs/pympv/mpv.pyx":219 ++ * node = (data)[0] ++ * return _convert_node_value(node) ++ * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< ++ * nodelist = (data)[0] ++ * values = [] ++ */ ++ break; ++ case MPV_FORMAT_NODE_MAP: + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":226 ++ * return values ++ * elif format == MPV_FORMAT_NODE_MAP: ++ * nodelist = (data)[0] # <<<<<<<<<<<<<< ++ * values = {} ++ * for i in range(nodelist.num): ++ */ ++ __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__", 0); +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->text); +- __pyx_r = __pyx_v_self->text; +- goto __pyx_L0; ++ /* "vidcutter/libs/pympv/mpv.pyx":227 ++ * elif format == MPV_FORMAT_NODE_MAP: ++ * nodelist = (data)[0] ++ * values = {} # <<<<<<<<<<<<<< ++ * for i in range(nodelist.num): ++ * value = _convert_node_value(nodelist.values[i]) ++ */ ++ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_v_values = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* function exit code */ +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":228 ++ * nodelist = (data)[0] ++ * values = {} ++ * for i in range(nodelist.num): # <<<<<<<<<<<<<< ++ * value = _convert_node_value(nodelist.values[i]) ++ * values[_strdec(nodelist.keys[i])] = value ++ */ ++ __pyx_t_2 = __pyx_v_nodelist.num; ++ __pyx_t_3 = __pyx_t_2; ++ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { ++ __pyx_v_i = __pyx_t_4; + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ /* "vidcutter/libs/pympv/mpv.pyx":229 ++ * values = {} ++ * for i in range(nodelist.num): ++ * value = _convert_node_value(nodelist.values[i]) # <<<<<<<<<<<<<< ++ * values[_strdec(nodelist.keys[i])] = value ++ * return values ++ */ ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); ++ __pyx_t_1 = 0; + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":230 ++ * for i in range(nodelist.num): ++ * value = _convert_node_value(nodelist.values[i]) ++ * values[_strdec(nodelist.keys[i])] = value # <<<<<<<<<<<<<< ++ * return values ++ * elif format == MPV_FORMAT_STRING: ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 230, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_7 = __Pyx_PyBytes_FromString((__pyx_v_nodelist.keys[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_8 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_8)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_8); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(PyObject_SetItem(__pyx_v_values, __pyx_t_1, __pyx_v_value) < 0)) __PYX_ERR(0, 230, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__", 0); +- __Pyx_INCREF(__pyx_v_value); +- __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->text); +- __Pyx_DECREF(__pyx_v_self->text); +- __pyx_v_self->text = __pyx_v_value; ++ /* "vidcutter/libs/pympv/mpv.pyx":231 ++ * value = _convert_node_value(nodelist.values[i]) ++ * values[_strdec(nodelist.keys[i])] = value ++ * return values # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_STRING: ++ * return _strdec(((data)[0])) ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_values); ++ __pyx_r = __pyx_v_values; ++ goto __pyx_L0; + +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":225 ++ * values.append(_convert_node_value(nodelist.values[i])) ++ * return values ++ * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< ++ * nodelist = (data)[0] ++ * values = {} ++ */ ++ break; ++ case MPV_FORMAT_STRING: + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(PyObject *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__", 0); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->text); +- __Pyx_DECREF(__pyx_v_self->text); +- __pyx_v_self->text = Py_None; +- +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":233 ++ * return values ++ * elif format == MPV_FORMAT_STRING: ++ * return _strdec(((data)[0])) # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_FLAG: ++ * return not not (data)[0] ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 233, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_7 = __Pyx_PyBytes_FromString((((char **)__pyx_v_data)[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_8 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_8)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_8); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__", 0); +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->log_level); +- __pyx_r = __pyx_v_self->log_level; +- goto __pyx_L0; ++ /* "vidcutter/libs/pympv/mpv.pyx":232 ++ * values[_strdec(nodelist.keys[i])] = value ++ * return values ++ * elif format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< ++ * return _strdec(((data)[0])) ++ * elif format == MPV_FORMAT_FLAG: ++ */ ++ break; ++ case MPV_FORMAT_FLAG: + +- /* function exit code */ +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":235 ++ * return _strdec(((data)[0])) ++ * elif format == MPV_FORMAT_FLAG: ++ * return not not (data)[0] # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_INT64: ++ * return int((data)[0]) ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!((!((((uint64_t *)__pyx_v_data)[0]) != 0)) != 0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ /* "vidcutter/libs/pympv/mpv.pyx":234 ++ * elif format == MPV_FORMAT_STRING: ++ * return _strdec(((data)[0])) ++ * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< ++ * return not not (data)[0] ++ * elif format == MPV_FORMAT_INT64: ++ */ ++ break; ++ case MPV_FORMAT_INT64: + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":237 ++ * return not not (data)[0] ++ * elif format == MPV_FORMAT_INT64: ++ * return int((data)[0]) # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_DOUBLE: ++ * return float((data)[0]) ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t((((uint64_t *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 237, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_r = __pyx_t_6; ++ __pyx_t_6 = 0; ++ goto __pyx_L0; + +-static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__", 0); +- __Pyx_INCREF(__pyx_v_value); +- __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->log_level); +- __Pyx_DECREF(__pyx_v_self->log_level); +- __pyx_v_self->log_level = __pyx_v_value; ++ /* "vidcutter/libs/pympv/mpv.pyx":236 ++ * elif format == MPV_FORMAT_FLAG: ++ * return not not (data)[0] ++ * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< ++ * return int((data)[0]) ++ * elif format == MPV_FORMAT_DOUBLE: ++ */ ++ break; ++ case MPV_FORMAT_DOUBLE: + +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":239 ++ * return int((data)[0]) ++ * elif format == MPV_FORMAT_DOUBLE: ++ * return float((data)[0]) # <<<<<<<<<<<<<< ++ * return None ++ * ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_6 = PyFloat_FromDouble((((double *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 239, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_r = __pyx_t_6; ++ __pyx_t_6 = 0; ++ goto __pyx_L0; + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(PyObject *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); ++ /* "vidcutter/libs/pympv/mpv.pyx":238 ++ * elif format == MPV_FORMAT_INT64: ++ * return int((data)[0]) ++ * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< ++ * return float((data)[0]) ++ * return None ++ */ ++ break; ++ default: break; ++ } + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":240 ++ * elif format == MPV_FORMAT_DOUBLE: ++ * return float((data)[0]) ++ * return None # <<<<<<<<<<<<<< ++ * ++ * ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + +-static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__", 0); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->log_level); +- __Pyx_DECREF(__pyx_v_self->log_level); +- __pyx_v_self->log_level = Py_None; ++ /* "vidcutter/libs/pympv/mpv.pyx":213 ++ * ++ * ++ * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< ++ * cdef mpv_node node ++ * cdef mpv_node_list nodelist ++ */ + + /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._convert_value", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; ++ __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_values); ++ __Pyx_XDECREF(__pyx_v_value); ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * cdef tuple state +- * cdef object _dict ++/* "vidcutter/libs/pympv/mpv.pyx":250 ++ * cdef public object name, data ++ * ++ * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< ++ * self.name = _strdec(prop.name) ++ * self.data = _convert_value(prop.data, prop.format) + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, struct mpv_event_property *__pyx_v_prop) { ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("_init", 0); + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { +- PyObject *__pyx_v_state = 0; +- PyObject *__pyx_v__dict = 0; +- int __pyx_v_use_setstate; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__reduce_cython__", 0); +- +- /* "(tree fragment)":5 +- * cdef object _dict +- * cdef bint use_setstate +- * state = (self.level, self.log_level, self.prefix, self.text) # <<<<<<<<<<<<<< +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: ++ /* "vidcutter/libs/pympv/mpv.pyx":251 ++ * ++ * cdef _init(self, mpv_event_property* prop): ++ * self.name = _strdec(prop.name) # <<<<<<<<<<<<<< ++ * self.data = _convert_value(prop.data, prop.format) ++ * return self + */ +- __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_prop->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(__pyx_v_self->level); +- __Pyx_GIVEREF(__pyx_v_self->level); +- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->level); +- __Pyx_INCREF(__pyx_v_self->log_level); +- __Pyx_GIVEREF(__pyx_v_self->log_level); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->log_level); +- __Pyx_INCREF(__pyx_v_self->prefix); +- __Pyx_GIVEREF(__pyx_v_self->prefix); +- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->prefix); +- __Pyx_INCREF(__pyx_v_self->text); +- __Pyx_GIVEREF(__pyx_v_self->text); +- PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->text); +- __pyx_v_state = ((PyObject*)__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v_self->name); ++ __Pyx_DECREF(__pyx_v_self->name); ++ __pyx_v_self->name = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "(tree fragment)":6 +- * cdef bint use_setstate +- * state = (self.level, self.log_level, self.prefix, self.text) +- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< +- * if _dict is not None: +- * state += (_dict,) ++ /* "vidcutter/libs/pympv/mpv.pyx":252 ++ * cdef _init(self, mpv_event_property* prop): ++ * self.name = _strdec(prop.name) ++ * self.data = _convert_value(prop.data, prop.format) # <<<<<<<<<<<<<< ++ * return self ++ * + */ +- __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_prop->data, __pyx_v_prop->format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_v__dict = __pyx_t_1; ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v_self->data); ++ __Pyx_DECREF(__pyx_v_self->data); ++ __pyx_v_self->data = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "(tree fragment)":7 +- * state = (self.level, self.log_level, self.prefix, self.text) +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: # <<<<<<<<<<<<<< +- * state += (_dict,) +- * use_setstate = True ++ /* "vidcutter/libs/pympv/mpv.pyx":253 ++ * self.name = _strdec(prop.name) ++ * self.data = _convert_value(prop.data, prop.format) ++ * return self # <<<<<<<<<<<<<< ++ * ++ * + */ +- __pyx_t_2 = (__pyx_v__dict != Py_None); +- __pyx_t_3 = (__pyx_t_2 != 0); +- if (__pyx_t_3) { ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(((PyObject *)__pyx_v_self)); ++ __pyx_r = ((PyObject *)__pyx_v_self); ++ goto __pyx_L0; + +- /* "(tree fragment)":8 +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: +- * state += (_dict,) # <<<<<<<<<<<<<< +- * use_setstate = True +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":250 ++ * cdef public object name, data ++ * ++ * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< ++ * self.name = _strdec(prop.name) ++ * self.data = _convert_value(prop.data, prop.format) + */ +- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(__pyx_v__dict); +- __Pyx_GIVEREF(__pyx_v__dict); +- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); +- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); +- __pyx_t_4 = 0; + +- /* "(tree fragment)":9 +- * if _dict is not None: +- * state += (_dict,) +- * use_setstate = True # <<<<<<<<<<<<<< +- * else: +- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None +- */ +- __pyx_v_use_setstate = 1; ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Property._init", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "(tree fragment)":7 +- * state = (self.level, self.log_level, self.prefix, self.text) +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: # <<<<<<<<<<<<<< +- * state += (_dict,) +- * use_setstate = True ++/* "vidcutter/libs/pympv/mpv.pyx":248 ++ * Wraps: mpv_event_property ++ * """ ++ * cdef public object name, data # <<<<<<<<<<<<<< ++ * ++ * cdef _init(self, mpv_event_property* prop): + */ +- goto __pyx_L3; +- } + +- /* "(tree fragment)":11 +- * use_setstate = True +- * else: +- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None # <<<<<<<<<<<<<< +- * if use_setstate: +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state +- */ +- /*else*/ { +- __pyx_t_2 = (__pyx_v_self->level != Py_None); +- __pyx_t_5 = (__pyx_t_2 != 0); +- if (!__pyx_t_5) { +- } else { +- __pyx_t_3 = __pyx_t_5; +- goto __pyx_L4_bool_binop_done; +- } +- __pyx_t_5 = (__pyx_v_self->log_level != Py_None); +- __pyx_t_2 = (__pyx_t_5 != 0); +- if (!__pyx_t_2) { +- } else { +- __pyx_t_3 = __pyx_t_2; +- goto __pyx_L4_bool_binop_done; +- } +- __pyx_t_2 = (__pyx_v_self->prefix != Py_None); +- __pyx_t_5 = (__pyx_t_2 != 0); +- if (!__pyx_t_5) { +- } else { +- __pyx_t_3 = __pyx_t_5; +- goto __pyx_L4_bool_binop_done; +- } +- __pyx_t_5 = (__pyx_v_self->text != Py_None); +- __pyx_t_2 = (__pyx_t_5 != 0); +- __pyx_t_3 = __pyx_t_2; +- __pyx_L4_bool_binop_done:; +- __pyx_v_use_setstate = __pyx_t_3; +- } +- __pyx_L3:; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); + +- /* "(tree fragment)":12 +- * else: +- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None +- * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state +- * else: +- */ +- __pyx_t_3 = (__pyx_v_use_setstate != 0); +- if (__pyx_t_3) { ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "(tree fragment)":13 +- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None +- * if use_setstate: +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state # <<<<<<<<<<<<<< +- * else: +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_LogMessage); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_142036910); +- __Pyx_GIVEREF(__pyx_int_142036910); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_142036910); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); +- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_GIVEREF(__pyx_t_4); +- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); +- __Pyx_INCREF(__pyx_v_state); +- __Pyx_GIVEREF(__pyx_v_state); +- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state); +- __pyx_t_4 = 0; +- __pyx_t_1 = 0; +- __pyx_r = __pyx_t_6; +- __pyx_t_6 = 0; +- goto __pyx_L0; +- +- /* "(tree fragment)":12 +- * else: +- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None +- * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state +- * else: +- */ +- } +- +- /* "(tree fragment)":15 +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state +- * else: +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) +- */ +- /*else*/ { +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_LogMessage); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_142036910); +- __Pyx_GIVEREF(__pyx_int_142036910); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_142036910); +- __Pyx_INCREF(__pyx_v_state); +- __Pyx_GIVEREF(__pyx_v_state); +- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); +- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_GIVEREF(__pyx_t_6); +- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); +- __pyx_t_6 = 0; +- __pyx_t_1 = 0; +- __pyx_r = __pyx_t_4; +- __pyx_t_4 = 0; +- goto __pyx_L0; +- } +- +- /* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * cdef tuple state +- * cdef object _dict +- */ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_self->name); ++ __pyx_r = __pyx_v_self->name; ++ goto __pyx_L0; + + /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_state); +- __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "(tree fragment)":16 +- * else: +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) +- */ ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__", 0); ++ __Pyx_INCREF(__pyx_v_value); ++ __Pyx_GIVEREF(__pyx_v_value); ++ __Pyx_GOTREF(__pyx_v_self->name); ++ __Pyx_DECREF(__pyx_v_self->name); ++ __pyx_v_self->name = __pyx_v_value; ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = 0; ++static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(PyObject *__pyx_v_self); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(PyObject *__pyx_v_self) { ++ int __pyx_r; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); ++ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; ++static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { ++ int __pyx_r; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__setstate_cython__", 0); ++ __Pyx_RefNannySetupContext("__del__", 0); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ __Pyx_GOTREF(__pyx_v_self->name); ++ __Pyx_DECREF(__pyx_v_self->name); ++ __pyx_v_self->name = Py_None; + +- /* "(tree fragment)":17 +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) +- * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) # <<<<<<<<<<<<<< +- */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "(tree fragment)":16 +- * else: +- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) +- */ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_4data___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_self->data); ++ __pyx_r = __pyx_v_self->data; + goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ ++ /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":197 +- * +- * +- * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< +- * if node.format == MPV_FORMAT_STRING: +- * return _strdec(node.u.string) +- */ ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_node __pyx_v_node) { +- PyObject *__pyx_r = NULL; ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_t_5; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_convert_node_value", 0); ++ __Pyx_RefNannySetupContext("__set__", 0); ++ __Pyx_INCREF(__pyx_v_value); ++ __Pyx_GIVEREF(__pyx_v_value); ++ __Pyx_GOTREF(__pyx_v_self->data); ++ __Pyx_DECREF(__pyx_v_self->data); ++ __pyx_v_self->data = __pyx_v_value; + +- /* "vidcutter/libs/pympv/mpv.pyx":198 +- * +- * cdef _convert_node_value(mpv_node node): +- * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +- * return _strdec(node.u.string) +- * elif node.format == MPV_FORMAT_FLAG: ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(PyObject *__pyx_v_self); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(PyObject *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__", 0); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ __Pyx_GOTREF(__pyx_v_self->data); ++ __Pyx_DECREF(__pyx_v_self->data); ++ __pyx_v_self->data = Py_None; ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * cdef tuple state ++ * cdef object _dict + */ +- switch (__pyx_v_node.format) { +- case MPV_FORMAT_STRING: + +- /* "vidcutter/libs/pympv/mpv.pyx":199 +- * cdef _convert_node_value(mpv_node node): +- * if node.format == MPV_FORMAT_STRING: +- * return _strdec(node.u.string) # <<<<<<<<<<<<<< +- * elif node.format == MPV_FORMAT_FLAG: +- * return not not int(node.u.flag) ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { ++ PyObject *__pyx_v_state = 0; ++ PyObject *__pyx_v__dict = 0; ++ int __pyx_v_use_setstate; ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_2; ++ int __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; ++ int __pyx_t_5; ++ PyObject *__pyx_t_6 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__reduce_cython__", 0); ++ ++ /* "(tree fragment)":5 ++ * cdef object _dict ++ * cdef bint use_setstate ++ * state = (self.data, self.name) # <<<<<<<<<<<<<< ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_node.u.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_INCREF(__pyx_v_self->data); ++ __Pyx_GIVEREF(__pyx_v_self->data); ++ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->data); ++ __Pyx_INCREF(__pyx_v_self->name); ++ __Pyx_GIVEREF(__pyx_v_self->name); ++ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->name); ++ __pyx_v_state = ((PyObject*)__pyx_t_1); ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":198 +- * +- * cdef _convert_node_value(mpv_node node): +- * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +- * return _strdec(node.u.string) +- * elif node.format == MPV_FORMAT_FLAG: ++ /* "(tree fragment)":6 ++ * cdef bint use_setstate ++ * state = (self.data, self.name) ++ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< ++ * if _dict is not None: ++ * state += (_dict,) + */ +- break; +- case MPV_FORMAT_FLAG: ++ __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_v__dict = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":201 +- * return _strdec(node.u.string) +- * elif node.format == MPV_FORMAT_FLAG: +- * return not not int(node.u.flag) # <<<<<<<<<<<<<< +- * elif node.format == MPV_FORMAT_INT64: +- * return int(node.u.int64) ++ /* "(tree fragment)":7 ++ * state = (self.data, self.name) ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: # <<<<<<<<<<<<<< ++ * state += (_dict,) ++ * use_setstate = True + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_node.u.flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) ++ __pyx_t_2 = (__pyx_v__dict != Py_None); ++ __pyx_t_3 = (__pyx_t_2 != 0); ++ if (__pyx_t_3) { ++ ++ /* "(tree fragment)":8 ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: ++ * state += (_dict,) # <<<<<<<<<<<<<< ++ * use_setstate = True ++ * else: ++ */ ++ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_v__dict); ++ __Pyx_GIVEREF(__pyx_v__dict); ++ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); ++ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 201, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = __Pyx_PyBool_FromLong((!((!__pyx_t_5) != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_r = __pyx_t_2; +- __pyx_t_2 = 0; +- goto __pyx_L0; ++ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); ++ __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":200 +- * if node.format == MPV_FORMAT_STRING: +- * return _strdec(node.u.string) +- * elif node.format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< +- * return not not int(node.u.flag) +- * elif node.format == MPV_FORMAT_INT64: ++ /* "(tree fragment)":9 ++ * if _dict is not None: ++ * state += (_dict,) ++ * use_setstate = True # <<<<<<<<<<<<<< ++ * else: ++ * use_setstate = self.data is not None or self.name is not None + */ +- break; +- case MPV_FORMAT_INT64: ++ __pyx_v_use_setstate = 1; + +- /* "vidcutter/libs/pympv/mpv.pyx":203 +- * return not not int(node.u.flag) +- * elif node.format == MPV_FORMAT_INT64: +- * return int(node.u.int64) # <<<<<<<<<<<<<< +- * elif node.format == MPV_FORMAT_DOUBLE: +- * return float(node.u.double_) ++ /* "(tree fragment)":7 ++ * state = (self.data, self.name) ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: # <<<<<<<<<<<<<< ++ * state += (_dict,) ++ * use_setstate = True + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyInt_From_int64_t(__pyx_v_node.u.int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ goto __pyx_L3; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":202 +- * elif node.format == MPV_FORMAT_FLAG: +- * return not not int(node.u.flag) +- * elif node.format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< +- * return int(node.u.int64) +- * elif node.format == MPV_FORMAT_DOUBLE: ++ /* "(tree fragment)":11 ++ * use_setstate = True ++ * else: ++ * use_setstate = self.data is not None or self.name is not None # <<<<<<<<<<<<<< ++ * if use_setstate: ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state + */ +- break; +- case MPV_FORMAT_DOUBLE: ++ /*else*/ { ++ __pyx_t_2 = (__pyx_v_self->data != Py_None); ++ __pyx_t_5 = (__pyx_t_2 != 0); ++ if (!__pyx_t_5) { ++ } else { ++ __pyx_t_3 = __pyx_t_5; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_5 = (__pyx_v_self->name != Py_None); ++ __pyx_t_2 = (__pyx_t_5 != 0); ++ __pyx_t_3 = __pyx_t_2; ++ __pyx_L4_bool_binop_done:; ++ __pyx_v_use_setstate = __pyx_t_3; ++ } ++ __pyx_L3:; + +- /* "vidcutter/libs/pympv/mpv.pyx":205 +- * return int(node.u.int64) +- * elif node.format == MPV_FORMAT_DOUBLE: +- * return float(node.u.double_) # <<<<<<<<<<<<<< +- * elif node.format == MPV_FORMAT_NODE_MAP: +- * return _convert_value(node.u.list, node.format) ++ /* "(tree fragment)":12 ++ * else: ++ * use_setstate = self.data is not None or self.name is not None ++ * if use_setstate: # <<<<<<<<<<<<<< ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state ++ * else: ++ */ ++ __pyx_t_3 = (__pyx_v_use_setstate != 0); ++ if (__pyx_t_3) { ++ ++ /* "(tree fragment)":13 ++ * use_setstate = self.data is not None or self.name is not None ++ * if use_setstate: ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state # <<<<<<<<<<<<<< ++ * else: ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = PyFloat_FromDouble(__pyx_v_node.u.double_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Property); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; ++ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_INCREF(__pyx_int_5713169); ++ __Pyx_GIVEREF(__pyx_int_5713169); ++ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_5713169); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); ++ __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_GIVEREF(__pyx_t_4); ++ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); ++ __Pyx_GIVEREF(__pyx_t_1); ++ PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); ++ __Pyx_INCREF(__pyx_v_state); ++ __Pyx_GIVEREF(__pyx_v_state); ++ PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state); ++ __pyx_t_4 = 0; + __pyx_t_1 = 0; ++ __pyx_r = __pyx_t_6; ++ __pyx_t_6 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":204 +- * elif node.format == MPV_FORMAT_INT64: +- * return int(node.u.int64) +- * elif node.format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< +- * return float(node.u.double_) +- * elif node.format == MPV_FORMAT_NODE_MAP: ++ /* "(tree fragment)":12 ++ * else: ++ * use_setstate = self.data is not None or self.name is not None ++ * if use_setstate: # <<<<<<<<<<<<<< ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state ++ * else: + */ +- break; +- case MPV_FORMAT_NODE_MAP: ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":207 +- * return float(node.u.double_) +- * elif node.format == MPV_FORMAT_NODE_MAP: +- * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< +- * elif node.format == MPV_FORMAT_NODE_ARRAY: +- * return _convert_value(node.u.list, node.format) ++ /* "(tree fragment)":15 ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state ++ * else: ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * __pyx_unpickle_Property__set_state(self, __pyx_state) + */ ++ /*else*/ { + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_Property); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; ++ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_INCREF(__pyx_int_5713169); ++ __Pyx_GIVEREF(__pyx_int_5713169); ++ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_5713169); ++ __Pyx_INCREF(__pyx_v_state); ++ __Pyx_GIVEREF(__pyx_v_state); ++ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); ++ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_GIVEREF(__pyx_t_6); ++ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); ++ __Pyx_GIVEREF(__pyx_t_1); ++ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); ++ __pyx_t_6 = 0; + __pyx_t_1 = 0; ++ __pyx_r = __pyx_t_4; ++ __pyx_t_4 = 0; + goto __pyx_L0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":206 +- * elif node.format == MPV_FORMAT_DOUBLE: +- * return float(node.u.double_) +- * elif node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +- * return _convert_value(node.u.list, node.format) +- * elif node.format == MPV_FORMAT_NODE_ARRAY: ++ /* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * cdef tuple state ++ * cdef object _dict + */ +- break; +- case MPV_FORMAT_NODE_ARRAY: + +- /* "vidcutter/libs/pympv/mpv.pyx":209 +- * return _convert_value(node.u.list, node.format) +- * elif node.format == MPV_FORMAT_NODE_ARRAY: +- * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< +- * return None +- * +- */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Property.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_state); ++ __Pyx_XDECREF(__pyx_v__dict); ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":208 +- * elif node.format == MPV_FORMAT_NODE_MAP: +- * return _convert_value(node.u.list, node.format) +- * elif node.format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< +- * return _convert_value(node.u.list, node.format) +- * return None ++/* "(tree fragment)":16 ++ * else: ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_unpickle_Property__set_state(self, __pyx_state) + */ +- break; +- default: break; +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":210 +- * elif node.format == MPV_FORMAT_NODE_ARRAY: +- * return _convert_value(node.u.list, node.format) +- * return None # <<<<<<<<<<<<<< +- * +- * ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__setstate_cython__", 0); ++ ++ /* "(tree fragment)":17 ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) ++ * def __setstate_cython__(self, __pyx_state): ++ * __pyx_unpickle_Property__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; ++ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":197 +- * +- * +- * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< +- * if node.format == MPV_FORMAT_STRING: +- * return _strdec(node.u.string) ++ /* "(tree fragment)":16 ++ * else: ++ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_unpickle_Property__set_state(self, __pyx_state) + */ + + /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv._convert_node_value", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Property.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":213 +- * ++/* "vidcutter/libs/pympv/mpv.pyx":263 + * +- * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< +- * cdef mpv_node node +- * cdef mpv_node_list nodelist ++ * @property ++ * def error_str(self): # <<<<<<<<<<<<<< ++ * """mpv_error_string of the error proeprty""" ++ * cdef const char* err_c + */ + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data, enum mpv_format __pyx_v_format) { +- struct mpv_node __pyx_v_node; +- struct mpv_node_list __pyx_v_nodelist; +- PyObject *__pyx_v_values = NULL; +- int __pyx_v_i; +- PyObject *__pyx_v_value = NULL; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++ char const *__pyx_v_err_c; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- int __pyx_t_3; +- int __pyx_t_4; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- PyObject *__pyx_t_8 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_convert_value", 0); ++ __Pyx_RefNannySetupContext("__get__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":216 +- * cdef mpv_node node +- * cdef mpv_node_list nodelist +- * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< +- * node = (data)[0] +- * return _convert_node_value(node) ++ /* "vidcutter/libs/pympv/mpv.pyx":266 ++ * """mpv_error_string of the error proeprty""" ++ * cdef const char* err_c ++ * with nogil: # <<<<<<<<<<<<<< ++ * err_c = mpv_error_string(self.error) ++ * return _strdec(err_c) + */ +- switch (__pyx_v_format) { +- case MPV_FORMAT_NODE: ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":217 +- * cdef mpv_node_list nodelist +- * if format == MPV_FORMAT_NODE: +- * node = (data)[0] # <<<<<<<<<<<<<< +- * return _convert_node_value(node) +- * elif format == MPV_FORMAT_NODE_ARRAY: ++ /* "vidcutter/libs/pympv/mpv.pyx":267 ++ * cdef const char* err_c ++ * with nogil: ++ * err_c = mpv_error_string(self.error) # <<<<<<<<<<<<<< ++ * return _strdec(err_c) ++ * + */ +- __pyx_v_node = (((struct mpv_node *)__pyx_v_data)[0]); ++ __pyx_v_err_c = mpv_error_string(__pyx_v_self->error); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":218 +- * if format == MPV_FORMAT_NODE: +- * node = (data)[0] +- * return _convert_node_value(node) # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_NODE_ARRAY: +- * nodelist = (data)[0] ++ /* "vidcutter/libs/pympv/mpv.pyx":266 ++ * """mpv_error_string of the error proeprty""" ++ * cdef const char* err_c ++ * with nogil: # <<<<<<<<<<<<<< ++ * err_c = mpv_error_string(self.error) ++ * return _strdec(err_c) + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":216 +- * cdef mpv_node node +- * cdef mpv_node_list nodelist +- * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< +- * node = (data)[0] +- * return _convert_node_value(node) ++ /* "vidcutter/libs/pympv/mpv.pyx":268 ++ * with nogil: ++ * err_c = mpv_error_string(self.error) ++ * return _strdec(err_c) # <<<<<<<<<<<<<< ++ * ++ * cdef _data(self, mpv_event* event): + */ +- break; +- case MPV_FORMAT_NODE_ARRAY: ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":220 +- * return _convert_node_value(node) +- * elif format == MPV_FORMAT_NODE_ARRAY: +- * nodelist = (data)[0] # <<<<<<<<<<<<<< +- * values = [] +- * for i in range(nodelist.num): ++ /* "vidcutter/libs/pympv/mpv.pyx":263 ++ * ++ * @property ++ * def error_str(self): # <<<<<<<<<<<<<< ++ * """mpv_error_string of the error proeprty""" ++ * cdef const char* err_c + */ +- __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); + +- /* "vidcutter/libs/pympv/mpv.pyx":221 +- * elif format == MPV_FORMAT_NODE_ARRAY: +- * nodelist = (data)[0] +- * values = [] # <<<<<<<<<<<<<< +- * for i in range(nodelist.num): +- * values.append(_convert_node_value(nodelist.values[i])) ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error_str.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* "vidcutter/libs/pympv/mpv.pyx":270 ++ * return _strdec(err_c) ++ * ++ * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< ++ * cdef void* data = event.data ++ * cdef mpv_event_client_message* climsg + */ +- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_values = __pyx_t_1; +- __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":222 +- * nodelist = (data)[0] +- * values = [] +- * for i in range(nodelist.num): # <<<<<<<<<<<<<< +- * values.append(_convert_node_value(nodelist.values[i])) +- * return values ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event) { ++ void *__pyx_v_data; ++ struct mpv_event_client_message *__pyx_v_climsg; ++ PyObject *__pyx_v_args = NULL; ++ int __pyx_v_num_args; ++ int __pyx_v_i; ++ PyObject *__pyx_v_arg = NULL; ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ void *__pyx_t_1; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ int __pyx_t_4; ++ int __pyx_t_5; ++ int __pyx_t_6; ++ PyObject *__pyx_t_7 = NULL; ++ int __pyx_t_8; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("_data", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":271 ++ * ++ * cdef _data(self, mpv_event* event): ++ * cdef void* data = event.data # <<<<<<<<<<<<<< ++ * cdef mpv_event_client_message* climsg ++ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: + */ +- __pyx_t_2 = __pyx_v_nodelist.num; +- __pyx_t_3 = __pyx_t_2; +- for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { +- __pyx_v_i = __pyx_t_4; ++ __pyx_t_1 = __pyx_v_event->data; ++ __pyx_v_data = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":223 +- * values = [] +- * for i in range(nodelist.num): +- * values.append(_convert_node_value(nodelist.values[i])) # <<<<<<<<<<<<<< +- * return values +- * elif format == MPV_FORMAT_NODE_MAP: ++ /* "vidcutter/libs/pympv/mpv.pyx":273 ++ * cdef void* data = event.data ++ * cdef mpv_event_client_message* climsg ++ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< ++ * return Property()._init(data) ++ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: + */ +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_values, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 223, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- } ++ switch (__pyx_v_self->id) { ++ case MPV_EVENT_GET_PROPERTY_REPLY: + +- /* "vidcutter/libs/pympv/mpv.pyx":224 +- * for i in range(nodelist.num): +- * values.append(_convert_node_value(nodelist.values[i])) +- * return values # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_NODE_MAP: +- * nodelist = (data)[0] ++ /* "vidcutter/libs/pympv/mpv.pyx":274 ++ * cdef mpv_event_client_message* climsg ++ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: ++ * return Property()._init(data) # <<<<<<<<<<<<<< ++ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: ++ * return Property()._init(data) + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_values); +- __pyx_r = __pyx_v_values; ++ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":219 +- * node = (data)[0] +- * return _convert_node_value(node) +- * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< +- * nodelist = (data)[0] +- * values = [] ++ /* "vidcutter/libs/pympv/mpv.pyx":273 ++ * cdef void* data = event.data ++ * cdef mpv_event_client_message* climsg ++ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< ++ * return Property()._init(data) ++ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: + */ + break; +- case MPV_FORMAT_NODE_MAP: ++ case MPV_EVENT_PROPERTY_CHANGE: + +- /* "vidcutter/libs/pympv/mpv.pyx":226 +- * return values +- * elif format == MPV_FORMAT_NODE_MAP: +- * nodelist = (data)[0] # <<<<<<<<<<<<<< +- * values = {} +- * for i in range(nodelist.num): ++ /* "vidcutter/libs/pympv/mpv.pyx":276 ++ * return Property()._init(data) ++ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: ++ * return Property()._init(data) # <<<<<<<<<<<<<< ++ * elif self.id == MPV_EVENT_LOG_MESSAGE: ++ * return LogMessage()._init(data) + */ +- __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_r = __pyx_t_2; ++ __pyx_t_2 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":227 +- * elif format == MPV_FORMAT_NODE_MAP: +- * nodelist = (data)[0] +- * values = {} # <<<<<<<<<<<<<< +- * for i in range(nodelist.num): +- * value = _convert_node_value(nodelist.values[i]) ++ /* "vidcutter/libs/pympv/mpv.pyx":275 ++ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: ++ * return Property()._init(data) ++ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< ++ * return Property()._init(data) ++ * elif self.id == MPV_EVENT_LOG_MESSAGE: + */ +- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_values = __pyx_t_1; +- __pyx_t_1 = 0; ++ break; ++ case MPV_EVENT_LOG_MESSAGE: + +- /* "vidcutter/libs/pympv/mpv.pyx":228 +- * nodelist = (data)[0] +- * values = {} +- * for i in range(nodelist.num): # <<<<<<<<<<<<<< +- * value = _convert_node_value(nodelist.values[i]) +- * values[_strdec(nodelist.keys[i])] = value ++ /* "vidcutter/libs/pympv/mpv.pyx":278 ++ * return Property()._init(data) ++ * elif self.id == MPV_EVENT_LOG_MESSAGE: ++ * return LogMessage()._init(data) # <<<<<<<<<<<<<< ++ * # elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: ++ * # return InputDispatch()._init(data) + */ +- __pyx_t_2 = __pyx_v_nodelist.num; +- __pyx_t_3 = __pyx_t_2; +- for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { +- __pyx_v_i = __pyx_t_4; ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *)((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2), ((struct mpv_event_log_message *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":229 +- * values = {} +- * for i in range(nodelist.num): +- * value = _convert_node_value(nodelist.values[i]) # <<<<<<<<<<<<<< +- * values[_strdec(nodelist.keys[i])] = value +- * return values +- */ +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); +- __pyx_t_1 = 0; ++ /* "vidcutter/libs/pympv/mpv.pyx":277 ++ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: ++ * return Property()._init(data) ++ * elif self.id == MPV_EVENT_LOG_MESSAGE: # <<<<<<<<<<<<<< ++ * return LogMessage()._init(data) ++ * # elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: ++ */ ++ break; ++ case MPV_EVENT_CLIENT_MESSAGE: + +- /* "vidcutter/libs/pympv/mpv.pyx":230 +- * for i in range(nodelist.num): +- * value = _convert_node_value(nodelist.values[i]) +- * values[_strdec(nodelist.keys[i])] = value # <<<<<<<<<<<<<< +- * return values +- * elif format == MPV_FORMAT_STRING: ++ /* "vidcutter/libs/pympv/mpv.pyx":282 ++ * # return InputDispatch()._init(data) ++ * elif self.id == MPV_EVENT_CLIENT_MESSAGE: ++ * climsg = data # <<<<<<<<<<<<<< ++ * args = [] ++ * num_args = climsg.num_args + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 230, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = __Pyx_PyBytes_FromString((__pyx_v_nodelist.keys[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(PyObject_SetItem(__pyx_v_values, __pyx_t_1, __pyx_v_value) < 0)) __PYX_ERR(0, 230, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- } ++ __pyx_v_climsg = ((struct mpv_event_client_message *)__pyx_v_data); + +- /* "vidcutter/libs/pympv/mpv.pyx":231 +- * value = _convert_node_value(nodelist.values[i]) +- * values[_strdec(nodelist.keys[i])] = value +- * return values # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_STRING: +- * return _strdec(((data)[0])) ++ /* "vidcutter/libs/pympv/mpv.pyx":283 ++ * elif self.id == MPV_EVENT_CLIENT_MESSAGE: ++ * climsg = data ++ * args = [] # <<<<<<<<<<<<<< ++ * num_args = climsg.num_args ++ * for i in range(num_args): + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_values); +- __pyx_r = __pyx_v_values; +- goto __pyx_L0; ++ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 283, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_v_args = ((PyObject*)__pyx_t_3); ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":225 +- * values.append(_convert_node_value(nodelist.values[i])) +- * return values +- * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +- * nodelist = (data)[0] +- * values = {} ++ /* "vidcutter/libs/pympv/mpv.pyx":284 ++ * climsg = data ++ * args = [] ++ * num_args = climsg.num_args # <<<<<<<<<<<<<< ++ * for i in range(num_args): ++ * arg = climsg.args[i] + */ +- break; +- case MPV_FORMAT_STRING: ++ __pyx_t_4 = __pyx_v_climsg->num_args; ++ __pyx_v_num_args = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":233 +- * return values +- * elif format == MPV_FORMAT_STRING: +- * return _strdec(((data)[0])) # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_FLAG: +- * return not not (data)[0] ++ /* "vidcutter/libs/pympv/mpv.pyx":285 ++ * args = [] ++ * num_args = climsg.num_args ++ * for i in range(num_args): # <<<<<<<<<<<<<< ++ * arg = climsg.args[i] ++ * arg = _strdec(arg) + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 233, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = __Pyx_PyBytes_FromString((((char **)__pyx_v_data)[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __pyx_t_4 = __pyx_v_num_args; ++ __pyx_t_5 = __pyx_t_4; ++ for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { ++ __pyx_v_i = __pyx_t_6; + +- /* "vidcutter/libs/pympv/mpv.pyx":232 +- * values[_strdec(nodelist.keys[i])] = value +- * return values +- * elif format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +- * return _strdec(((data)[0])) +- * elif format == MPV_FORMAT_FLAG: ++ /* "vidcutter/libs/pympv/mpv.pyx":286 ++ * num_args = climsg.num_args ++ * for i in range(num_args): ++ * arg = climsg.args[i] # <<<<<<<<<<<<<< ++ * arg = _strdec(arg) ++ * args.append(arg) + */ +- break; +- case MPV_FORMAT_FLAG: ++ __pyx_t_3 = __Pyx_PyBytes_FromString(((char *)(__pyx_v_climsg->args[__pyx_v_i]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_3); ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":235 +- * return _strdec(((data)[0])) +- * elif format == MPV_FORMAT_FLAG: +- * return not not (data)[0] # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_INT64: +- * return int((data)[0]) ++ /* "vidcutter/libs/pympv/mpv.pyx":287 ++ * for i in range(num_args): ++ * arg = climsg.args[i] ++ * arg = _strdec(arg) # <<<<<<<<<<<<<< ++ * args.append(arg) ++ * return args + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyBool_FromLong((!((!((((uint64_t *)__pyx_v_data)[0]) != 0)) != 0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 287, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_7 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_7)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_7); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_arg) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_arg); ++ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF_SET(__pyx_v_arg, __pyx_t_3); ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":234 +- * elif format == MPV_FORMAT_STRING: +- * return _strdec(((data)[0])) +- * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< +- * return not not (data)[0] +- * elif format == MPV_FORMAT_INT64: ++ /* "vidcutter/libs/pympv/mpv.pyx":288 ++ * arg = climsg.args[i] ++ * arg = _strdec(arg) ++ * args.append(arg) # <<<<<<<<<<<<<< ++ * return args ++ * elif self.id == MPV_EVENT_END_FILE: + */ +- break; +- case MPV_FORMAT_INT64: ++ __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_args, __pyx_v_arg); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 288, __pyx_L1_error) ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":237 +- * return not not (data)[0] +- * elif format == MPV_FORMAT_INT64: +- * return int((data)[0]) # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_DOUBLE: +- * return float((data)[0]) ++ /* "vidcutter/libs/pympv/mpv.pyx":289 ++ * arg = _strdec(arg) ++ * args.append(arg) ++ * return args # <<<<<<<<<<<<<< ++ * elif self.id == MPV_EVENT_END_FILE: ++ * return EndOfFileReached()._init(data) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t((((uint64_t *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 237, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_r = __pyx_t_6; +- __pyx_t_6 = 0; ++ __Pyx_INCREF(__pyx_v_args); ++ __pyx_r = __pyx_v_args; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":236 +- * elif format == MPV_FORMAT_FLAG: +- * return not not (data)[0] +- * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< +- * return int((data)[0]) +- * elif format == MPV_FORMAT_DOUBLE: ++ /* "vidcutter/libs/pympv/mpv.pyx":281 ++ * # elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: ++ * # return InputDispatch()._init(data) ++ * elif self.id == MPV_EVENT_CLIENT_MESSAGE: # <<<<<<<<<<<<<< ++ * climsg = data ++ * args = [] + */ + break; +- case MPV_FORMAT_DOUBLE: ++ case MPV_EVENT_END_FILE: + +- /* "vidcutter/libs/pympv/mpv.pyx":239 +- * return int((data)[0]) +- * elif format == MPV_FORMAT_DOUBLE: +- * return float((data)[0]) # <<<<<<<<<<<<<< +- * return None ++ /* "vidcutter/libs/pympv/mpv.pyx":291 ++ * return args ++ * elif self.id == MPV_EVENT_END_FILE: ++ * return EndOfFileReached()._init(data) # <<<<<<<<<<<<<< ++ * return None + * + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_6 = PyFloat_FromDouble((((double *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 239, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_r = __pyx_t_6; +- __pyx_t_6 = 0; ++ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *)((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3), ((struct mpv_event_end_file *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_r = __pyx_t_2; ++ __pyx_t_2 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":238 +- * elif format == MPV_FORMAT_INT64: +- * return int((data)[0]) +- * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< +- * return float((data)[0]) +- * return None ++ /* "vidcutter/libs/pympv/mpv.pyx":290 ++ * args.append(arg) ++ * return args ++ * elif self.id == MPV_EVENT_END_FILE: # <<<<<<<<<<<<<< ++ * return EndOfFileReached()._init(data) ++ * return None + */ + break; + default: break; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":240 +- * elif format == MPV_FORMAT_DOUBLE: +- * return float((data)[0]) +- * return None # <<<<<<<<<<<<<< +- * +- * +- */ ++ /* "vidcutter/libs/pympv/mpv.pyx":292 ++ * elif self.id == MPV_EVENT_END_FILE: ++ * return EndOfFileReached()._init(data) ++ * return None # <<<<<<<<<<<<<< ++ * ++ * @property ++ */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":213 +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":270 ++ * return _strdec(err_c) + * +- * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< +- * cdef mpv_node node +- * cdef mpv_node_list nodelist ++ * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< ++ * cdef void* data = event.data ++ * cdef mpv_event_client_message* climsg + */ + + /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_AddTraceback("vidcutter.libs.mpv._convert_value", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event._data", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_values); +- __Pyx_XDECREF(__pyx_v_value); ++ __Pyx_XDECREF(__pyx_v_args); ++ __Pyx_XDECREF(__pyx_v_arg); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":250 +- * cdef public object name, data ++/* "vidcutter/libs/pympv/mpv.pyx":295 + * +- * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< +- * self.name = _strdec(prop.name) +- * self.data = _convert_value(prop.data, prop.format) ++ * @property ++ * def name(self): # <<<<<<<<<<<<<< ++ * """mpv_event_name of the event id""" ++ * cdef const char* name_c + */ + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, struct mpv_event_property *__pyx_v_prop) { ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++ char const *__pyx_v_name_c; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +@@ -5704,18 +6128,63 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_init", 0); ++ __Pyx_RefNannySetupContext("__get__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":251 ++ /* "vidcutter/libs/pympv/mpv.pyx":298 ++ * """mpv_event_name of the event id""" ++ * cdef const char* name_c ++ * with nogil: # <<<<<<<<<<<<<< ++ * name_c = mpv_event_name(self.id) ++ * return _strdec(name_c) ++ */ ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":299 ++ * cdef const char* name_c ++ * with nogil: ++ * name_c = mpv_event_name(self.id) # <<<<<<<<<<<<<< ++ * return _strdec(name_c) + * +- * cdef _init(self, mpv_event_property* prop): +- * self.name = _strdec(prop.name) # <<<<<<<<<<<<<< +- * self.data = _convert_value(prop.data, prop.format) +- * return self + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) ++ __pyx_v_name_c = mpv_event_name(__pyx_v_self->id); ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":298 ++ * """mpv_event_name of the event id""" ++ * cdef const char* name_c ++ * with nogil: # <<<<<<<<<<<<<< ++ * name_c = mpv_event_name(self.id) ++ * return _strdec(name_c) ++ */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":300 ++ * with nogil: ++ * name_c = mpv_event_name(self.id) ++ * return _strdec(name_c) # <<<<<<<<<<<<<< ++ * ++ * cdef _init(self, mpv_event* event, ctx): ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_prop->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -5730,48 +6199,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->name); +- __Pyx_DECREF(__pyx_v_self->name); +- __pyx_v_self->name = __pyx_t_1; +- __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":252 +- * cdef _init(self, mpv_event_property* prop): +- * self.name = _strdec(prop.name) +- * self.data = _convert_value(prop.data, prop.format) # <<<<<<<<<<<<<< +- * return self +- * +- */ +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_prop->data, __pyx_v_prop->format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->data); +- __Pyx_DECREF(__pyx_v_self->data); +- __pyx_v_self->data = __pyx_t_1; ++ __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":253 +- * self.name = _strdec(prop.name) +- * self.data = _convert_value(prop.data, prop.format) +- * return self # <<<<<<<<<<<<<< +- * +- * +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(((PyObject *)__pyx_v_self)); +- __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":250 +- * cdef public object name, data ++ /* "vidcutter/libs/pympv/mpv.pyx":295 + * +- * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< +- * self.name = _strdec(prop.name) +- * self.data = _convert_value(prop.data, prop.format) ++ * @property ++ * def name(self): # <<<<<<<<<<<<<< ++ * """mpv_event_name of the event id""" ++ * cdef const char* name_c + */ + + /* function exit code */ +@@ -5780,1547 +6220,1710 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Property._init", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":248 +- * Wraps: mpv_event_property +- * """ +- * cdef public object name, data # <<<<<<<<<<<<<< ++/* "vidcutter/libs/pympv/mpv.pyx":302 ++ * return _strdec(name_c) + * +- * cdef _init(self, mpv_event_property* prop): ++ * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< ++ * cdef uint64_t ctxid = id(ctx) ++ * self.id = event.event_id + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event, PyObject *__pyx_v_ctx) { ++ uint64_t __pyx_v_ctxid; ++ PyObject *__pyx_v_userdata = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__", 0); +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->name); +- __pyx_r = __pyx_v_self->name; +- goto __pyx_L0; +- +- /* function exit code */ +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ PyObject *__pyx_t_1 = NULL; ++ uint64_t __pyx_t_2; ++ enum mpv_event_id __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ PyObject *__pyx_t_6 = NULL; ++ int __pyx_t_7; ++ PyObject *__pyx_t_8 = NULL; ++ int __pyx_t_9; ++ int __pyx_t_10; ++ int __pyx_t_11; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("_init", 0); + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ /* "vidcutter/libs/pympv/mpv.pyx":303 ++ * ++ * cdef _init(self, mpv_event* event, ctx): ++ * cdef uint64_t ctxid = id(ctx) # <<<<<<<<<<<<<< ++ * self.id = event.event_id ++ * self.data = self._data(event) ++ */ ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 303, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_ctxid = ((uint64_t)__pyx_t_2); + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":304 ++ * cdef _init(self, mpv_event* event, ctx): ++ * cdef uint64_t ctxid = id(ctx) ++ * self.id = event.event_id # <<<<<<<<<<<<<< ++ * self.data = self._data(event) ++ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) ++ */ ++ __pyx_t_3 = __pyx_v_event->event_id; ++ __pyx_v_self->id = __pyx_t_3; + +-static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__", 0); +- __Pyx_INCREF(__pyx_v_value); +- __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->name); +- __Pyx_DECREF(__pyx_v_self->name); +- __pyx_v_self->name = __pyx_v_value; ++ /* "vidcutter/libs/pympv/mpv.pyx":305 ++ * cdef uint64_t ctxid = id(ctx) ++ * self.id = event.event_id ++ * self.data = self._data(event) # <<<<<<<<<<<<<< ++ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) ++ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: ++ */ ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)__pyx_v_self->__pyx_vtab)->_data(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v_self->data); ++ __Pyx_DECREF(__pyx_v_self->data); ++ __pyx_v_self->data = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":306 ++ * self.id = event.event_id ++ * self.data = self._data(event) ++ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) # <<<<<<<<<<<<<< ++ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: ++ * userdata.remove() ++ */ ++ __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_event->reply_userdata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_6 = NULL; ++ __pyx_t_7 = 0; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { ++ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); ++ if (likely(__pyx_t_6)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); ++ __Pyx_INCREF(__pyx_t_6); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_5, function); ++ __pyx_t_7 = 1; ++ } ++ } ++ #if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(__pyx_t_5)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; ++ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ } else ++ #endif ++ #if CYTHON_FAST_PYCCALL ++ if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; ++ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ } else ++ #endif ++ { ++ __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_8); ++ if (__pyx_t_6) { ++ __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; ++ } ++ __Pyx_GIVEREF(__pyx_t_4); ++ PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, Py_None); ++ __pyx_t_4 = 0; ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; ++ } ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __pyx_v_userdata = __pyx_t_1; ++ __pyx_t_1 = 0; + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(PyObject *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); ++ /* "vidcutter/libs/pympv/mpv.pyx":307 ++ * self.data = self._data(event) ++ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) ++ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< ++ * userdata.remove() ++ * if not userdata.observed and userdata.counter <= 0: ++ */ ++ __pyx_t_10 = (__pyx_v_userdata != Py_None); ++ __pyx_t_11 = (__pyx_t_10 != 0); ++ if (__pyx_t_11) { ++ } else { ++ __pyx_t_9 = __pyx_t_11; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_11 = ((__pyx_v_self->id != MPV_EVENT_PROPERTY_CHANGE) != 0); ++ __pyx_t_9 = __pyx_t_11; ++ __pyx_L4_bool_binop_done:; ++ if (__pyx_t_9) { + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":308 ++ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) ++ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: ++ * userdata.remove() # <<<<<<<<<<<<<< ++ * if not userdata.observed and userdata.counter <= 0: ++ * del _reply_userdatas[ctxid][event.reply_userdata] ++ */ ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __pyx_t_8 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { ++ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); ++ if (likely(__pyx_t_8)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); ++ __Pyx_INCREF(__pyx_t_8); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_5, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_5); ++ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +-static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__", 0); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->name); +- __Pyx_DECREF(__pyx_v_self->name); +- __pyx_v_self->name = Py_None; ++ /* "vidcutter/libs/pympv/mpv.pyx":309 ++ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: ++ * userdata.remove() ++ * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< ++ * del _reply_userdatas[ctxid][event.reply_userdata] ++ * if userdata is not None: ++ */ ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_observed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_10 = ((!__pyx_t_11) != 0); ++ if (__pyx_t_10) { ++ } else { ++ __pyx_t_9 = __pyx_t_10; ++ goto __pyx_L7_bool_binop_done; ++ } ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __pyx_t_9 = __pyx_t_10; ++ __pyx_L7_bool_binop_done:; ++ if (__pyx_t_9) { + +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":310 ++ * userdata.remove() ++ * if not userdata.observed and userdata.counter <= 0: ++ * del _reply_userdatas[ctxid][event.reply_userdata] # <<<<<<<<<<<<<< ++ * if userdata is not None: ++ * userdata = userdata.data ++ */ ++ __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ if (unlikely(__Pyx_DelItemInt(__pyx_t_5, __pyx_v_event->reply_userdata, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 310, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); ++ /* "vidcutter/libs/pympv/mpv.pyx":309 ++ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: ++ * userdata.remove() ++ * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< ++ * del _reply_userdatas[ctxid][event.reply_userdata] ++ * if userdata is not None: ++ */ ++ } + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":307 ++ * self.data = self._data(event) ++ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) ++ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< ++ * userdata.remove() ++ * if not userdata.observed and userdata.counter <= 0: ++ */ ++ } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_4data___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__", 0); +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->data); +- __pyx_r = __pyx_v_self->data; +- goto __pyx_L0; ++ /* "vidcutter/libs/pympv/mpv.pyx":311 ++ * if not userdata.observed and userdata.counter <= 0: ++ * del _reply_userdatas[ctxid][event.reply_userdata] ++ * if userdata is not None: # <<<<<<<<<<<<<< ++ * userdata = userdata.data ++ * self.reply_userdata = userdata ++ */ ++ __pyx_t_9 = (__pyx_v_userdata != Py_None); ++ __pyx_t_10 = (__pyx_t_9 != 0); ++ if (__pyx_t_10) { + +- /* function exit code */ +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":312 ++ * del _reply_userdatas[ctxid][event.reply_userdata] ++ * if userdata is not None: ++ * userdata = userdata.data # <<<<<<<<<<<<<< ++ * self.reply_userdata = userdata ++ * self.error = event.error ++ */ ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 312, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_DECREF_SET(__pyx_v_userdata, __pyx_t_5); ++ __pyx_t_5 = 0; + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ /* "vidcutter/libs/pympv/mpv.pyx":311 ++ * if not userdata.observed and userdata.counter <= 0: ++ * del _reply_userdatas[ctxid][event.reply_userdata] ++ * if userdata is not None: # <<<<<<<<<<<<<< ++ * userdata = userdata.data ++ * self.reply_userdata = userdata ++ */ ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":313 ++ * if userdata is not None: ++ * userdata = userdata.data ++ * self.reply_userdata = userdata # <<<<<<<<<<<<<< ++ * self.error = event.error ++ * return self ++ */ ++ __Pyx_INCREF(__pyx_v_userdata); ++ __Pyx_GIVEREF(__pyx_v_userdata); ++ __Pyx_GOTREF(__pyx_v_self->reply_userdata); ++ __Pyx_DECREF(__pyx_v_self->reply_userdata); ++ __pyx_v_self->reply_userdata = __pyx_v_userdata; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":314 ++ * userdata = userdata.data ++ * self.reply_userdata = userdata ++ * self.error = event.error # <<<<<<<<<<<<<< ++ * return self ++ * ++ */ ++ __pyx_t_7 = __pyx_v_event->error; ++ __pyx_v_self->error = __pyx_t_7; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":315 ++ * self.reply_userdata = userdata ++ * self.error = event.error ++ * return self # <<<<<<<<<<<<<< ++ * ++ * ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(((PyObject *)__pyx_v_self)); ++ __pyx_r = ((PyObject *)__pyx_v_self); ++ goto __pyx_L0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":302 ++ * return _strdec(name_c) ++ * ++ * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< ++ * cdef uint64_t ctxid = id(ctx) ++ * self.id = event.event_id ++ */ + + /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event._init", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; ++ __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_userdata); ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; ++/* "vidcutter/libs/pympv/mpv.pyx":258 ++ * cdef class Event(object): ++ * """Wraps: mpv_event""" ++ * cdef public mpv_event_id id # <<<<<<<<<<<<<< ++ * cdef public int error ++ * cdef public object data, reply_userdata ++ */ ++ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__", 0); +- __Pyx_INCREF(__pyx_v_value); +- __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->data); +- __Pyx_DECREF(__pyx_v_self->data); +- __pyx_v_self->data = __pyx_v_value; ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); + + /* function exit code */ +- __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; ++ ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + + /* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(PyObject *__pyx_v_self) { ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { ++static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__", 0); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->data); +- __Pyx_DECREF(__pyx_v_self->data); +- __pyx_v_self->data = Py_None; ++ enum mpv_event_id __pyx_t_1; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__set__", 0); ++ __pyx_t_1 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_value)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) ++ __pyx_v_self->id = __pyx_t_1; + + /* function exit code */ + __pyx_r = 0; ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = -1; ++ __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * cdef tuple state +- * cdef object _dict ++/* "vidcutter/libs/pympv/mpv.pyx":259 ++ * """Wraps: mpv_event""" ++ * cdef public mpv_event_id id ++ * cdef public int error # <<<<<<<<<<<<<< ++ * cdef public object data, reply_userdata ++ * + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { +- PyObject *__pyx_v_state = 0; +- PyObject *__pyx_v__dict = 0; +- int __pyx_v_use_setstate; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__reduce_cython__", 0); +- +- /* "(tree fragment)":5 +- * cdef object _dict +- * cdef bint use_setstate +- * state = (self.data, self.name) # <<<<<<<<<<<<<< +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: +- */ +- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(__pyx_v_self->data); +- __Pyx_GIVEREF(__pyx_v_self->data); +- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->data); +- __Pyx_INCREF(__pyx_v_self->name); +- __Pyx_GIVEREF(__pyx_v_self->name); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->name); +- __pyx_v_state = ((PyObject*)__pyx_t_1); ++ __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; ++ goto __pyx_L0; + +- /* "(tree fragment)":6 +- * cdef bint use_setstate +- * state = (self.data, self.name) +- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< +- * if _dict is not None: +- * state += (_dict,) +- */ +- __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v__dict = __pyx_t_1; +- __pyx_t_1 = 0; ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "(tree fragment)":7 +- * state = (self.data, self.name) +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: # <<<<<<<<<<<<<< +- * state += (_dict,) +- * use_setstate = True +- */ +- __pyx_t_2 = (__pyx_v__dict != Py_None); +- __pyx_t_3 = (__pyx_t_2 != 0); +- if (__pyx_t_3) { ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + +- /* "(tree fragment)":8 +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: +- * state += (_dict,) # <<<<<<<<<<<<<< +- * use_setstate = True +- * else: +- */ +- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(__pyx_v__dict); +- __Pyx_GIVEREF(__pyx_v__dict); +- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); +- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); +- __pyx_t_4 = 0; ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "(tree fragment)":9 +- * if _dict is not None: +- * state += (_dict,) +- * use_setstate = True # <<<<<<<<<<<<<< +- * else: +- * use_setstate = self.data is not None or self.name is not None +- */ +- __pyx_v_use_setstate = 1; +- +- /* "(tree fragment)":7 +- * state = (self.data, self.name) +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: # <<<<<<<<<<<<<< +- * state += (_dict,) +- * use_setstate = True +- */ +- goto __pyx_L3; +- } +- +- /* "(tree fragment)":11 +- * use_setstate = True +- * else: +- * use_setstate = self.data is not None or self.name is not None # <<<<<<<<<<<<<< +- * if use_setstate: +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state +- */ +- /*else*/ { +- __pyx_t_2 = (__pyx_v_self->data != Py_None); +- __pyx_t_5 = (__pyx_t_2 != 0); +- if (!__pyx_t_5) { +- } else { +- __pyx_t_3 = __pyx_t_5; +- goto __pyx_L4_bool_binop_done; +- } +- __pyx_t_5 = (__pyx_v_self->name != Py_None); +- __pyx_t_2 = (__pyx_t_5 != 0); +- __pyx_t_3 = __pyx_t_2; +- __pyx_L4_bool_binop_done:; +- __pyx_v_use_setstate = __pyx_t_3; +- } +- __pyx_L3:; +- +- /* "(tree fragment)":12 +- * else: +- * use_setstate = self.data is not None or self.name is not None +- * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state +- * else: +- */ +- __pyx_t_3 = (__pyx_v_use_setstate != 0); +- if (__pyx_t_3) { +- +- /* "(tree fragment)":13 +- * use_setstate = self.data is not None or self.name is not None +- * if use_setstate: +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state # <<<<<<<<<<<<<< +- * else: +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Property); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_5713169); +- __Pyx_GIVEREF(__pyx_int_5713169); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_5713169); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); +- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_GIVEREF(__pyx_t_4); +- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); +- __Pyx_INCREF(__pyx_v_state); +- __Pyx_GIVEREF(__pyx_v_state); +- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state); +- __pyx_t_4 = 0; +- __pyx_t_1 = 0; +- __pyx_r = __pyx_t_6; +- __pyx_t_6 = 0; +- goto __pyx_L0; +- +- /* "(tree fragment)":12 +- * else: +- * use_setstate = self.data is not None or self.name is not None +- * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state +- * else: +- */ +- } +- +- /* "(tree fragment)":15 +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state +- * else: +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_Property__set_state(self, __pyx_state) +- */ +- /*else*/ { +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_Property); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_5713169); +- __Pyx_GIVEREF(__pyx_int_5713169); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_5713169); +- __Pyx_INCREF(__pyx_v_state); +- __Pyx_GIVEREF(__pyx_v_state); +- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); +- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_GIVEREF(__pyx_t_6); +- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); +- __pyx_t_6 = 0; +- __pyx_t_1 = 0; +- __pyx_r = __pyx_t_4; +- __pyx_t_4 = 0; +- goto __pyx_L0; +- } +- +- /* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * cdef tuple state +- * cdef object _dict +- */ ++static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ int __pyx_t_1; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__set__", 0); ++ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L1_error) ++ __pyx_v_self->error = __pyx_t_1; + + /* function exit code */ ++ __pyx_r = 0; ++ goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Property.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = -1; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_state); +- __Pyx_XDECREF(__pyx_v__dict); +- __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "(tree fragment)":16 +- * else: +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_Property__set_state(self, __pyx_state) ++/* "vidcutter/libs/pympv/mpv.pyx":260 ++ * cdef public mpv_event_id id ++ * cdef public int error ++ * cdef public object data, reply_userdata # <<<<<<<<<<<<<< ++ * ++ * @property + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4data___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__setstate_cython__", 0); +- +- /* "(tree fragment)":17 +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) +- * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_Property__set_state(self, __pyx_state) # <<<<<<<<<<<<<< +- */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "(tree fragment)":16 +- * else: +- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_Property__set_state(self, __pyx_state) +- */ ++ __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_self->data); ++ __pyx_r = __pyx_v_self->data; ++ goto __pyx_L0; + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Property.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":263 +- * +- * @property +- * def error_str(self): # <<<<<<<<<<<<<< +- * """mpv_error_string of the error proeprty""" +- * cdef const char* err_c +- */ +- + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { +- char const *__pyx_v_err_c; +- PyObject *__pyx_r = NULL; ++static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_RefNannySetupContext("__set__", 0); ++ __Pyx_INCREF(__pyx_v_value); ++ __Pyx_GIVEREF(__pyx_v_value); ++ __Pyx_GOTREF(__pyx_v_self->data); ++ __Pyx_DECREF(__pyx_v_self->data); ++ __pyx_v_self->data = __pyx_v_value; + +- /* "vidcutter/libs/pympv/mpv.pyx":266 +- * """mpv_error_string of the error proeprty""" +- * cdef const char* err_c +- * with nogil: # <<<<<<<<<<<<<< +- * err_c = mpv_error_string(self.error) +- * return _strdec(err_c) +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":267 +- * cdef const char* err_c +- * with nogil: +- * err_c = mpv_error_string(self.error) # <<<<<<<<<<<<<< +- * return _strdec(err_c) +- * +- */ +- __pyx_v_err_c = mpv_error_string(__pyx_v_self->error); +- } ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(PyObject *__pyx_v_self); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(PyObject *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); + +- /* "vidcutter/libs/pympv/mpv.pyx":266 +- * """mpv_error_string of the error proeprty""" +- * cdef const char* err_c +- * with nogil: # <<<<<<<<<<<<<< +- * err_c = mpv_error_string(self.error) +- * return _strdec(err_c) +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":268 +- * with nogil: +- * err_c = mpv_error_string(self.error) +- * return _strdec(err_c) # <<<<<<<<<<<<<< +- * +- * cdef _data(self, mpv_event* event): +- */ ++static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__", 0); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ __Pyx_GOTREF(__pyx_v_self->data); ++ __Pyx_DECREF(__pyx_v_self->data); ++ __pyx_v_self->data = Py_None; ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; ++ __Pyx_INCREF(__pyx_v_self->reply_userdata); ++ __pyx_r = __pyx_v_self->reply_userdata; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":263 +- * +- * @property +- * def error_str(self): # <<<<<<<<<<<<<< +- * """mpv_error_string of the error proeprty""" +- * cdef const char* err_c +- */ +- + /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error_str.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":270 +- * return _strdec(err_c) +- * +- * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< +- * cdef void* data = event.data +- * cdef mpv_event_client_message* climsg ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__set__", 0); ++ __Pyx_INCREF(__pyx_v_value); ++ __Pyx_GIVEREF(__pyx_v_value); ++ __Pyx_GOTREF(__pyx_v_self->reply_userdata); ++ __Pyx_DECREF(__pyx_v_self->reply_userdata); ++ __pyx_v_self->reply_userdata = __pyx_v_value; ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(PyObject *__pyx_v_self); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(PyObject *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__del__", 0); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ __Pyx_GOTREF(__pyx_v_self->reply_userdata); ++ __Pyx_DECREF(__pyx_v_self->reply_userdata); ++ __pyx_v_self->reply_userdata = Py_None; ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * cdef tuple state ++ * cdef object _dict + */ + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event) { +- void *__pyx_v_data; +- struct mpv_event_client_message *__pyx_v_climsg; +- PyObject *__pyx_v_args = NULL; +- int __pyx_v_num_args; +- int __pyx_v_i; +- PyObject *__pyx_v_arg = NULL; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++ PyObject *__pyx_v_state = 0; ++ PyObject *__pyx_v__dict = 0; ++ int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- void *__pyx_t_1; ++ PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; +- PyObject *__pyx_t_7 = NULL; +- int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_data", 0); ++ __Pyx_RefNannySetupContext("__reduce_cython__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":271 +- * +- * cdef _data(self, mpv_event* event): +- * cdef void* data = event.data # <<<<<<<<<<<<<< +- * cdef mpv_event_client_message* climsg +- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: ++ /* "(tree fragment)":5 ++ * cdef object _dict ++ * cdef bint use_setstate ++ * state = (self.data, self.error, self.id, self.reply_userdata) # <<<<<<<<<<<<<< ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: + */ +- __pyx_t_1 = __pyx_v_event->data; +- __pyx_v_data = __pyx_t_1; ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_INCREF(__pyx_v_self->data); ++ __Pyx_GIVEREF(__pyx_v_self->data); ++ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->data); ++ __Pyx_GIVEREF(__pyx_t_1); ++ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_2); ++ PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); ++ __Pyx_INCREF(__pyx_v_self->reply_userdata); ++ __Pyx_GIVEREF(__pyx_v_self->reply_userdata); ++ PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->reply_userdata); ++ __pyx_t_1 = 0; ++ __pyx_t_2 = 0; ++ __pyx_v_state = ((PyObject*)__pyx_t_3); ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":273 +- * cdef void* data = event.data +- * cdef mpv_event_client_message* climsg +- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< +- * return Property()._init(data) +- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: +- */ +- switch (__pyx_v_self->id) { +- case MPV_EVENT_GET_PROPERTY_REPLY: +- +- /* "vidcutter/libs/pympv/mpv.pyx":274 +- * cdef mpv_event_client_message* climsg +- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: +- * return Property()._init(data) # <<<<<<<<<<<<<< +- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: +- * return Property()._init(data) ++ /* "(tree fragment)":6 ++ * cdef bint use_setstate ++ * state = (self.data, self.error, self.id, self.reply_userdata) ++ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< ++ * if _dict is not None: ++ * state += (_dict,) + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_v__dict = __pyx_t_3; ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":273 +- * cdef void* data = event.data +- * cdef mpv_event_client_message* climsg +- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< +- * return Property()._init(data) +- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: ++ /* "(tree fragment)":7 ++ * state = (self.data, self.error, self.id, self.reply_userdata) ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: # <<<<<<<<<<<<<< ++ * state += (_dict,) ++ * use_setstate = True + */ +- break; +- case MPV_EVENT_PROPERTY_CHANGE: ++ __pyx_t_4 = (__pyx_v__dict != Py_None); ++ __pyx_t_5 = (__pyx_t_4 != 0); ++ if (__pyx_t_5) { + +- /* "vidcutter/libs/pympv/mpv.pyx":276 +- * return Property()._init(data) +- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: +- * return Property()._init(data) # <<<<<<<<<<<<<< +- * elif self.id == MPV_EVENT_LOG_MESSAGE: +- * return LogMessage()._init(data) ++ /* "(tree fragment)":8 ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: ++ * state += (_dict,) # <<<<<<<<<<<<<< ++ * use_setstate = True ++ * else: + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) ++ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) ++ __Pyx_INCREF(__pyx_v__dict); ++ __Pyx_GIVEREF(__pyx_v__dict); ++ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict); ++ __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_r = __pyx_t_2; ++ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2)); + __pyx_t_2 = 0; +- goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":275 +- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: +- * return Property()._init(data) +- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< +- * return Property()._init(data) +- * elif self.id == MPV_EVENT_LOG_MESSAGE: ++ /* "(tree fragment)":9 ++ * if _dict is not None: ++ * state += (_dict,) ++ * use_setstate = True # <<<<<<<<<<<<<< ++ * else: ++ * use_setstate = self.data is not None or self.reply_userdata is not None + */ +- break; +- case MPV_EVENT_LOG_MESSAGE: ++ __pyx_v_use_setstate = 1; + +- /* "vidcutter/libs/pympv/mpv.pyx":278 +- * return Property()._init(data) +- * elif self.id == MPV_EVENT_LOG_MESSAGE: +- * return LogMessage()._init(data) # <<<<<<<<<<<<<< +- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: +- * return InputDispatch()._init(data) ++ /* "(tree fragment)":7 ++ * state = (self.data, self.error, self.id, self.reply_userdata) ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: # <<<<<<<<<<<<<< ++ * state += (_dict,) ++ * use_setstate = True ++ */ ++ goto __pyx_L3; ++ } ++ ++ /* "(tree fragment)":11 ++ * use_setstate = True ++ * else: ++ * use_setstate = self.data is not None or self.reply_userdata is not None # <<<<<<<<<<<<<< ++ * if use_setstate: ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state ++ */ ++ /*else*/ { ++ __pyx_t_4 = (__pyx_v_self->data != Py_None); ++ __pyx_t_6 = (__pyx_t_4 != 0); ++ if (!__pyx_t_6) { ++ } else { ++ __pyx_t_5 = __pyx_t_6; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_6 = (__pyx_v_self->reply_userdata != Py_None); ++ __pyx_t_4 = (__pyx_t_6 != 0); ++ __pyx_t_5 = __pyx_t_4; ++ __pyx_L4_bool_binop_done:; ++ __pyx_v_use_setstate = __pyx_t_5; ++ } ++ __pyx_L3:; ++ ++ /* "(tree fragment)":12 ++ * else: ++ * use_setstate = self.data is not None or self.reply_userdata is not None ++ * if use_setstate: # <<<<<<<<<<<<<< ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state ++ * else: ++ */ ++ __pyx_t_5 = (__pyx_v_use_setstate != 0); ++ if (__pyx_t_5) { ++ ++ /* "(tree fragment)":13 ++ * use_setstate = self.data is not None or self.reply_userdata is not None ++ * if use_setstate: ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state # <<<<<<<<<<<<<< ++ * else: ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_Event); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *)((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2), ((struct mpv_event_log_message *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) ++ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_r = __pyx_t_3; ++ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_INCREF(__pyx_int_228822053); ++ __Pyx_GIVEREF(__pyx_int_228822053); ++ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228822053); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None); ++ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_2); ++ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); ++ __Pyx_GIVEREF(__pyx_t_3); ++ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); ++ __Pyx_INCREF(__pyx_v_state); ++ __Pyx_GIVEREF(__pyx_v_state); ++ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); ++ __pyx_t_2 = 0; + __pyx_t_3 = 0; ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":277 +- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: +- * return Property()._init(data) +- * elif self.id == MPV_EVENT_LOG_MESSAGE: # <<<<<<<<<<<<<< +- * return LogMessage()._init(data) +- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: ++ /* "(tree fragment)":12 ++ * else: ++ * use_setstate = self.data is not None or self.reply_userdata is not None ++ * if use_setstate: # <<<<<<<<<<<<<< ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state ++ * else: + */ +- break; +- case MPV_EVENT_SCRIPT_INPUT_DISPATCH: ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":280 +- * return LogMessage()._init(data) +- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: +- * return InputDispatch()._init(data) # <<<<<<<<<<<<<< +- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: +- * climsg = data ++ /* "(tree fragment)":15 ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state ++ * else: ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * __pyx_unpickle_Event__set_state(self, __pyx_state) + */ ++ /*else*/ { + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_InputDispatch)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 280, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Event); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch *)((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_t_3), ((struct mpv_event_script_input_dispatch *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L1_error) ++ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_INCREF(__pyx_int_228822053); ++ __Pyx_GIVEREF(__pyx_int_228822053); ++ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228822053); ++ __Pyx_INCREF(__pyx_v_state); ++ __Pyx_GIVEREF(__pyx_v_state); ++ PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state); ++ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_GIVEREF(__pyx_t_1); ++ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_3); ++ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); ++ __pyx_t_1 = 0; ++ __pyx_t_3 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":279 +- * elif self.id == MPV_EVENT_LOG_MESSAGE: +- * return LogMessage()._init(data) +- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: # <<<<<<<<<<<<<< +- * return InputDispatch()._init(data) +- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: ++ /* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * cdef tuple state ++ * cdef object _dict + */ +- break; +- case MPV_EVENT_CLIENT_MESSAGE: + +- /* "vidcutter/libs/pympv/mpv.pyx":282 +- * return InputDispatch()._init(data) +- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: +- * climsg = data # <<<<<<<<<<<<<< +- * args = [] +- * num_args = climsg.num_args +- */ +- __pyx_v_climsg = ((struct mpv_event_client_message *)__pyx_v_data); ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_state); ++ __Pyx_XDECREF(__pyx_v__dict); ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":283 +- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: +- * climsg = data +- * args = [] # <<<<<<<<<<<<<< +- * num_args = climsg.num_args +- * for i in range(num_args): ++/* "(tree fragment)":16 ++ * else: ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_unpickle_Event__set_state(self, __pyx_state) + */ +- __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 283, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_v_args = ((PyObject*)__pyx_t_2); +- __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":284 +- * climsg = data +- * args = [] +- * num_args = climsg.num_args # <<<<<<<<<<<<<< +- * for i in range(num_args): +- * arg = climsg.args[i] +- */ +- __pyx_t_4 = __pyx_v_climsg->num_args; +- __pyx_v_num_args = __pyx_t_4; +- +- /* "vidcutter/libs/pympv/mpv.pyx":285 +- * args = [] +- * num_args = climsg.num_args +- * for i in range(num_args): # <<<<<<<<<<<<<< +- * arg = climsg.args[i] +- * arg = _strdec(arg) +- */ +- __pyx_t_4 = __pyx_v_num_args; +- __pyx_t_5 = __pyx_t_4; +- for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { +- __pyx_v_i = __pyx_t_6; +- +- /* "vidcutter/libs/pympv/mpv.pyx":286 +- * num_args = climsg.num_args +- * for i in range(num_args): +- * arg = climsg.args[i] # <<<<<<<<<<<<<< +- * arg = _strdec(arg) +- * args.append(arg) +- */ +- __pyx_t_2 = __Pyx_PyBytes_FromString(((char *)(__pyx_v_climsg->args[__pyx_v_i]))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 286, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_2); +- __pyx_t_2 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":287 +- * for i in range(num_args): +- * arg = climsg.args[i] +- * arg = _strdec(arg) # <<<<<<<<<<<<<< +- * args.append(arg) +- * return args +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strdec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_7 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_7)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_7); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } +- } +- __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_arg) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_arg); +- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 287, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_DECREF_SET(__pyx_v_arg, __pyx_t_2); +- __pyx_t_2 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":288 +- * arg = climsg.args[i] +- * arg = _strdec(arg) +- * args.append(arg) # <<<<<<<<<<<<<< +- * return args +- * elif self.id == MPV_EVENT_END_FILE: +- */ +- __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_args, __pyx_v_arg); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 288, __pyx_L1_error) +- } ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + +- /* "vidcutter/libs/pympv/mpv.pyx":289 +- * arg = _strdec(arg) +- * args.append(arg) +- * return args # <<<<<<<<<<<<<< +- * elif self.id == MPV_EVENT_END_FILE: +- * return EndOfFileReached()._init(data) +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_args); +- __pyx_r = __pyx_v_args; +- goto __pyx_L0; ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":281 +- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: +- * return InputDispatch()._init(data) +- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: # <<<<<<<<<<<<<< +- * climsg = data +- * args = [] +- */ +- break; +- case MPV_EVENT_END_FILE: ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__setstate_cython__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":291 +- * return args +- * elif self.id == MPV_EVENT_END_FILE: +- * return EndOfFileReached()._init(data) # <<<<<<<<<<<<<< +- * return None +- * ++ /* "(tree fragment)":17 ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) ++ * def __setstate_cython__(self, __pyx_state): ++ * __pyx_unpickle_Event__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *)((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_2), ((struct mpv_event_end_file *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":290 +- * args.append(arg) +- * return args +- * elif self.id == MPV_EVENT_END_FILE: # <<<<<<<<<<<<<< +- * return EndOfFileReached()._init(data) +- * return None ++ /* "(tree fragment)":16 ++ * else: ++ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_unpickle_Event__set_state(self, __pyx_state) + */ +- break; +- default: break; +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":292 +- * elif self.id == MPV_EVENT_END_FILE: +- * return EndOfFileReached()._init(data) +- * return None # <<<<<<<<<<<<<< +- * +- * @property +- */ +- __Pyx_XDECREF(__pyx_r); ++ /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":270 +- * return _strdec(err_c) ++/* "vidcutter/libs/pympv/mpv.pyx":318 + * +- * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< +- * cdef void* data = event.data +- * cdef mpv_event_client_message* climsg ++ * ++ * def _errors(fn): # <<<<<<<<<<<<<< ++ * def wrapped(*k, **kw): ++ * v = fn(*k, **kw) + */ + ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, PyObject *__pyx_v_fn); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_5_errors = {"_errors", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5_errors, METH_O, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, PyObject *__pyx_v_fn) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("_errors (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_4_errors(__pyx_self, ((PyObject *)__pyx_v_fn)); ++ + /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event._data", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_args); +- __Pyx_XDECREF(__pyx_v_arg); +- __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":295 ++/* "vidcutter/libs/pympv/mpv.pyx":319 + * +- * @property +- * def name(self): # <<<<<<<<<<<<<< +- * """mpv_event_name of the event id""" +- * cdef const char* name_c ++ * def _errors(fn): ++ * def wrapped(*k, **kw): # <<<<<<<<<<<<<< ++ * v = fn(*k, **kw) ++ * if v < 0: + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(PyObject *__pyx_v_self) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped = {"wrapped", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_k = 0; ++ PyObject *__pyx_v_kw = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("wrapped (wrapper)", 0); ++ if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "wrapped", 1))) return NULL; ++ __pyx_v_kw = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kw)) return NULL; ++ __Pyx_GOTREF(__pyx_v_kw); ++ __Pyx_INCREF(__pyx_args); ++ __pyx_v_k = __pyx_args; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(__pyx_self, __pyx_v_k, __pyx_v_kw); + + /* function exit code */ ++ __Pyx_XDECREF(__pyx_v_k); ++ __Pyx_XDECREF(__pyx_v_kw); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { +- char const *__pyx_v_name_c; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_kw) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_cur_scope; ++ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_outer_scope; ++ PyObject *__pyx_v_v = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; ++ int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_RefNannySetupContext("wrapped", 0); ++ __pyx_outer_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *) __Pyx_CyFunction_GetClosure(__pyx_self); ++ __pyx_cur_scope = __pyx_outer_scope; + +- /* "vidcutter/libs/pympv/mpv.pyx":298 +- * """mpv_event_name of the event id""" +- * cdef const char* name_c +- * with nogil: # <<<<<<<<<<<<<< +- * name_c = mpv_event_name(self.id) +- * return _strdec(name_c) ++ /* "vidcutter/libs/pympv/mpv.pyx":320 ++ * def _errors(fn): ++ * def wrapped(*k, **kw): ++ * v = fn(*k, **kw) # <<<<<<<<<<<<<< ++ * if v < 0: ++ * raise MPVError(v) + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ if (unlikely(!__pyx_cur_scope->__pyx_v_fn)) { __Pyx_RaiseClosureNameError("fn"); __PYX_ERR(0, 320, __pyx_L1_error) } ++ __pyx_t_1 = PyDict_Copy(__pyx_v_kw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_fn, __pyx_v_k, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_v = __pyx_t_2; ++ __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":299 +- * cdef const char* name_c +- * with nogil: +- * name_c = mpv_event_name(self.id) # <<<<<<<<<<<<<< +- * return _strdec(name_c) +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":321 ++ * def wrapped(*k, **kw): ++ * v = fn(*k, **kw) ++ * if v < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(v) ++ * return wrapped + */ +- __pyx_v_name_c = mpv_event_name(__pyx_v_self->id); +- } ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_v, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 321, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (unlikely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":298 +- * """mpv_event_name of the event id""" +- * cdef const char* name_c +- * with nogil: # <<<<<<<<<<<<<< +- * name_c = mpv_event_name(self.id) +- * return _strdec(name_c) ++ /* "vidcutter/libs/pympv/mpv.pyx":322 ++ * v = fn(*k, **kw) ++ * if v < 0: ++ * raise MPVError(v) # <<<<<<<<<<<<<< ++ * return wrapped ++ * + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_1, function); + } +- } ++ } ++ __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_v) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_v); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_Raise(__pyx_t_2, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __PYX_ERR(0, 322, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":300 +- * with nogil: +- * name_c = mpv_event_name(self.id) +- * return _strdec(name_c) # <<<<<<<<<<<<<< +- * +- * cdef _init(self, mpv_event* event, ctx): ++ /* "vidcutter/libs/pympv/mpv.pyx":321 ++ * def wrapped(*k, **kw): ++ * v = fn(*k, **kw) ++ * if v < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(v) ++ * return wrapped + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } + } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":295 ++ /* "vidcutter/libs/pympv/mpv.pyx":319 + * +- * @property +- * def name(self): # <<<<<<<<<<<<<< +- * """mpv_event_name of the event id""" +- * cdef const char* name_c ++ * def _errors(fn): ++ * def wrapped(*k, **kw): # <<<<<<<<<<<<<< ++ * v = fn(*k, **kw) ++ * if v < 0: + */ + + /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._errors.wrapped", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_v); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":302 +- * return _strdec(name_c) ++/* "vidcutter/libs/pympv/mpv.pyx":318 + * +- * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< +- * cdef uint64_t ctxid = id(ctx) +- * self.id = event.event_id ++ * ++ * def _errors(fn): # <<<<<<<<<<<<<< ++ * def wrapped(*k, **kw): ++ * v = fn(*k, **kw) + */ + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event, PyObject *__pyx_v_ctx) { +- uint64_t __pyx_v_ctxid; +- PyObject *__pyx_v_userdata = NULL; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fn) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_cur_scope; ++ PyObject *__pyx_v_wrapped = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- uint64_t __pyx_t_2; +- enum mpv_event_id __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- PyObject *__pyx_t_6 = NULL; +- int __pyx_t_7; +- PyObject *__pyx_t_8 = NULL; +- int __pyx_t_9; +- int __pyx_t_10; +- int __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_init", 0); ++ __Pyx_RefNannySetupContext("_errors", 0); ++ __pyx_cur_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(__pyx_ptype_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, __pyx_empty_tuple, NULL); ++ if (unlikely(!__pyx_cur_scope)) { ++ __pyx_cur_scope = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)Py_None); ++ __Pyx_INCREF(Py_None); ++ __PYX_ERR(0, 318, __pyx_L1_error) ++ } else { ++ __Pyx_GOTREF(__pyx_cur_scope); ++ } ++ __pyx_cur_scope->__pyx_v_fn = __pyx_v_fn; ++ __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fn); ++ __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fn); + +- /* "vidcutter/libs/pympv/mpv.pyx":303 ++ /* "vidcutter/libs/pympv/mpv.pyx":319 + * +- * cdef _init(self, mpv_event* event, ctx): +- * cdef uint64_t ctxid = id(ctx) # <<<<<<<<<<<<<< +- * self.id = event.event_id +- * self.data = self._data(event) ++ * def _errors(fn): ++ * def wrapped(*k, **kw): # <<<<<<<<<<<<<< ++ * v = fn(*k, **kw) ++ * if v < 0: + */ +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped, 0, __pyx_n_s_errors_locals_wrapped, ((PyObject*)__pyx_cur_scope), __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 303, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_ctxid = ((uint64_t)__pyx_t_2); ++ __pyx_v_wrapped = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":304 +- * cdef _init(self, mpv_event* event, ctx): +- * cdef uint64_t ctxid = id(ctx) +- * self.id = event.event_id # <<<<<<<<<<<<<< +- * self.data = self._data(event) +- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) ++ /* "vidcutter/libs/pympv/mpv.pyx":323 ++ * if v < 0: ++ * raise MPVError(v) ++ * return wrapped # <<<<<<<<<<<<<< ++ * ++ * + */ +- __pyx_t_3 = __pyx_v_event->event_id; +- __pyx_v_self->id = __pyx_t_3; ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_wrapped); ++ __pyx_r = __pyx_v_wrapped; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":305 +- * cdef uint64_t ctxid = id(ctx) +- * self.id = event.event_id +- * self.data = self._data(event) # <<<<<<<<<<<<<< +- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) +- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: ++ /* "vidcutter/libs/pympv/mpv.pyx":318 ++ * ++ * ++ * def _errors(fn): # <<<<<<<<<<<<<< ++ * def wrapped(*k, **kw): ++ * v = fn(*k, **kw) + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)__pyx_v_self->__pyx_vtab)->_data(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->data); +- __Pyx_DECREF(__pyx_v_self->data); +- __pyx_v_self->data = __pyx_t_1; +- __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":306 +- * self.id = event.event_id +- * self.data = self._data(event) +- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) # <<<<<<<<<<<<<< +- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: +- * userdata.remove() ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._errors", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_wrapped); ++ __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* "vidcutter/libs/pympv/mpv.pyx":329 ++ * code = None ++ * ++ * def __init__(self, e): # <<<<<<<<<<<<<< ++ * self.code = e ++ * cdef const char* err_c + */ +- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 306, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_event->reply_userdata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_6 = NULL; +- __pyx_t_7 = 0; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { +- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); +- if (likely(__pyx_t_6)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); +- __Pyx_INCREF(__pyx_t_6); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_5, function); +- __pyx_t_7 = 1; +- } +- } +- #if CYTHON_FAST_PYCALL +- if (PyFunction_Check(__pyx_t_5)) { +- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; +- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- } else +- #endif +- #if CYTHON_FAST_PYCCALL +- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { +- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; +- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- } else +- #endif ++ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_self = 0; ++ PyObject *__pyx_v_e = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { +- __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 306, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_8); +- if (__pyx_t_6) { +- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_e,0}; ++ PyObject* values[2] = {0,0}; ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_e)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 329, __pyx_L3_error) ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 329, __pyx_L3_error) ++ } ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { ++ goto __pyx_L5_argtuple_error; ++ } else { ++ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } +- __Pyx_GIVEREF(__pyx_t_4); +- PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, Py_None); +- __pyx_t_4 = 0; +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; ++ __pyx_v_self = values[0]; ++ __pyx_v_e = values[1]; + } +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __pyx_v_userdata = __pyx_t_1; +- __pyx_t_1 = 0; ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 329, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(__pyx_self, __pyx_v_self, __pyx_v_e); + +- /* "vidcutter/libs/pympv/mpv.pyx":307 +- * self.data = self._data(event) +- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) +- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< +- * userdata.remove() +- * if not userdata.observed and userdata.counter <= 0: +- */ +- __pyx_t_10 = (__pyx_v_userdata != Py_None); +- __pyx_t_11 = (__pyx_t_10 != 0); +- if (__pyx_t_11) { +- } else { +- __pyx_t_9 = __pyx_t_11; +- goto __pyx_L4_bool_binop_done; +- } +- __pyx_t_11 = ((__pyx_v_self->id != MPV_EVENT_PROPERTY_CHANGE) != 0); +- __pyx_t_9 = __pyx_t_11; +- __pyx_L4_bool_binop_done:; +- if (__pyx_t_9) { ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":308 +- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) +- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: +- * userdata.remove() # <<<<<<<<<<<<<< +- * if not userdata.observed and userdata.counter <= 0: +- * del _reply_userdatas[ctxid][event.reply_userdata] +- */ +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_5, function); +- } +- } +- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_e) { ++ char const *__pyx_v_err_c; ++ int __pyx_v_e_i; ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ int __pyx_t_1; ++ int __pyx_t_2; ++ int __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__init__", 0); ++ __Pyx_INCREF(__pyx_v_e); + +- /* "vidcutter/libs/pympv/mpv.pyx":309 +- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: +- * userdata.remove() +- * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< +- * del _reply_userdatas[ctxid][event.reply_userdata] +- * if userdata is not None: ++ /* "vidcutter/libs/pympv/mpv.pyx":330 ++ * ++ * def __init__(self, e): ++ * self.code = e # <<<<<<<<<<<<<< ++ * cdef const char* err_c ++ * cdef int e_i + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_observed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_10 = ((!__pyx_t_11) != 0); +- if (__pyx_t_10) { +- } else { +- __pyx_t_9 = __pyx_t_10; +- goto __pyx_L7_bool_binop_done; +- } +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __pyx_t_9 = __pyx_t_10; +- __pyx_L7_bool_binop_done:; +- if (__pyx_t_9) { ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_e) < 0) __PYX_ERR(0, 330, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":310 +- * userdata.remove() +- * if not userdata.observed and userdata.counter <= 0: +- * del _reply_userdatas[ctxid][event.reply_userdata] # <<<<<<<<<<<<<< +- * if userdata is not None: +- * userdata = userdata.data ++ /* "vidcutter/libs/pympv/mpv.pyx":333 ++ * cdef const char* err_c ++ * cdef int e_i ++ * if not isinstance(e, basestring): # <<<<<<<<<<<<<< ++ * e_i = e ++ * with nogil: + */ +- __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- if (unlikely(__Pyx_DelItemInt(__pyx_t_5, __pyx_v_event->reply_userdata, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 310, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __pyx_t_1 = __Pyx_PyBaseString_Check(__pyx_v_e); ++ __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); ++ if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":309 +- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: +- * userdata.remove() +- * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< +- * del _reply_userdatas[ctxid][event.reply_userdata] +- * if userdata is not None: ++ /* "vidcutter/libs/pympv/mpv.pyx":334 ++ * cdef int e_i ++ * if not isinstance(e, basestring): ++ * e_i = e # <<<<<<<<<<<<<< ++ * with nogil: ++ * err_c = mpv_error_string(e_i) + */ +- } ++ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_e); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L1_error) ++ __pyx_v_e_i = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":307 +- * self.data = self._data(event) +- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) +- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< +- * userdata.remove() +- * if not userdata.observed and userdata.counter <= 0: ++ /* "vidcutter/libs/pympv/mpv.pyx":335 ++ * if not isinstance(e, basestring): ++ * e_i = e ++ * with nogil: # <<<<<<<<<<<<<< ++ * err_c = mpv_error_string(e_i) ++ * e = _strdec(err_c) + */ +- } ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":311 +- * if not userdata.observed and userdata.counter <= 0: +- * del _reply_userdatas[ctxid][event.reply_userdata] +- * if userdata is not None: # <<<<<<<<<<<<<< +- * userdata = userdata.data +- * self.reply_userdata = userdata ++ /* "vidcutter/libs/pympv/mpv.pyx":336 ++ * e_i = e ++ * with nogil: ++ * err_c = mpv_error_string(e_i) # <<<<<<<<<<<<<< ++ * e = _strdec(err_c) ++ * Exception.__init__(self, e) + */ +- __pyx_t_9 = (__pyx_v_userdata != Py_None); +- __pyx_t_10 = (__pyx_t_9 != 0); +- if (__pyx_t_10) { ++ __pyx_v_err_c = mpv_error_string(__pyx_v_e_i); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":312 +- * del _reply_userdatas[ctxid][event.reply_userdata] +- * if userdata is not None: +- * userdata = userdata.data # <<<<<<<<<<<<<< +- * self.reply_userdata = userdata +- * self.error = event.error ++ /* "vidcutter/libs/pympv/mpv.pyx":335 ++ * if not isinstance(e, basestring): ++ * e_i = e ++ * with nogil: # <<<<<<<<<<<<<< ++ * err_c = mpv_error_string(e_i) ++ * e = _strdec(err_c) + */ +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 312, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_DECREF_SET(__pyx_v_userdata, __pyx_t_5); +- __pyx_t_5 = 0; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L6; ++ } ++ __pyx_L6:; ++ } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":311 +- * if not userdata.observed and userdata.counter <= 0: +- * del _reply_userdatas[ctxid][event.reply_userdata] +- * if userdata is not None: # <<<<<<<<<<<<<< +- * userdata = userdata.data +- * self.reply_userdata = userdata +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":313 +- * if userdata is not None: +- * userdata = userdata.data +- * self.reply_userdata = userdata # <<<<<<<<<<<<<< +- * self.error = event.error +- * return self ++ /* "vidcutter/libs/pympv/mpv.pyx":337 ++ * with nogil: ++ * err_c = mpv_error_string(e_i) ++ * e = _strdec(err_c) # <<<<<<<<<<<<<< ++ * Exception.__init__(self, e) ++ * + */ +- __Pyx_INCREF(__pyx_v_userdata); +- __Pyx_GIVEREF(__pyx_v_userdata); +- __Pyx_GOTREF(__pyx_v_self->reply_userdata); +- __Pyx_DECREF(__pyx_v_self->reply_userdata); +- __pyx_v_self->reply_userdata = __pyx_v_userdata; ++ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_strdec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_7 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { ++ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); ++ if (likely(__pyx_t_7)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); ++ __Pyx_INCREF(__pyx_t_7); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_5, function); ++ } ++ } ++ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF_SET(__pyx_v_e, __pyx_t_4); ++ __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":314 +- * userdata = userdata.data +- * self.reply_userdata = userdata +- * self.error = event.error # <<<<<<<<<<<<<< +- * return self +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":333 ++ * cdef const char* err_c ++ * cdef int e_i ++ * if not isinstance(e, basestring): # <<<<<<<<<<<<<< ++ * e_i = e ++ * with nogil: + */ +- __pyx_t_7 = __pyx_v_event->error; +- __pyx_v_self->error = __pyx_t_7; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":315 +- * self.reply_userdata = userdata +- * self.error = event.error +- * return self # <<<<<<<<<<<<<< +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":338 ++ * err_c = mpv_error_string(e_i) ++ * e = _strdec(err_c) ++ * Exception.__init__(self, e) # <<<<<<<<<<<<<< + * ++ * class PyMPVError(Exception): + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(((PyObject *)__pyx_v_self)); +- __pyx_r = ((PyObject *)__pyx_v_self); +- goto __pyx_L0; ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __pyx_t_6 = NULL; ++ __pyx_t_3 = 0; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { ++ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); ++ if (likely(__pyx_t_6)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); ++ __Pyx_INCREF(__pyx_t_6); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_5, function); ++ __pyx_t_3 = 1; ++ } ++ } ++ #if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(__pyx_t_5)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; ++ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_GOTREF(__pyx_t_4); ++ } else ++ #endif ++ #if CYTHON_FAST_PYCCALL ++ if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; ++ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_GOTREF(__pyx_t_4); ++ } else ++ #endif ++ { ++ __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ if (__pyx_t_6) { ++ __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; ++ } ++ __Pyx_INCREF(__pyx_v_self); ++ __Pyx_GIVEREF(__pyx_v_self); ++ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_3, __pyx_v_self); ++ __Pyx_INCREF(__pyx_v_e); ++ __Pyx_GIVEREF(__pyx_v_e); ++ PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_v_e); ++ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ } ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":302 +- * return _strdec(name_c) ++ /* "vidcutter/libs/pympv/mpv.pyx":329 ++ * code = None + * +- * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< +- * cdef uint64_t ctxid = id(ctx) +- * self.id = event.event_id ++ * def __init__(self, e): # <<<<<<<<<<<<<< ++ * self.code = e ++ * cdef const char* err_c + */ + + /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event._init", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_userdata); ++ __Pyx_XDECREF(__pyx_v_e); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":258 +- * cdef class Event(object): +- * """Wraps: mpv_event""" +- * cdef public mpv_event_id id # <<<<<<<<<<<<<< +- * cdef public int error +- * cdef public object data, reply_userdata ++/* "vidcutter/libs/pympv/mpv.pyx":347 ++ * ++ * class _ReplyUserData(object): ++ * def __init__(self, data): # <<<<<<<<<<<<<< ++ * self.counter = 0 ++ * self.data = data + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(PyObject *__pyx_v_self) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_self = 0; ++ PyObject *__pyx_v_data = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_data,0}; ++ PyObject* values[2] = {0,0}; ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 347, __pyx_L3_error) ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 347, __pyx_L3_error) ++ } ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { ++ goto __pyx_L5_argtuple_error; ++ } else { ++ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ } ++ __pyx_v_self = values[0]; ++ __pyx_v_data = values[1]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 347, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(__pyx_self, __pyx_v_self, __pyx_v_data); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_data) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__get__", 0); +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; +- +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ __Pyx_RefNannySetupContext("__init__", 0); + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ /* "vidcutter/libs/pympv/mpv.pyx":348 ++ * class _ReplyUserData(object): ++ * def __init__(self, data): ++ * self.counter = 0 # <<<<<<<<<<<<<< ++ * self.data = data ++ * self.observed = False ++ */ ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_int_0) < 0) __PYX_ERR(0, 348, __pyx_L1_error) + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":349 ++ * def __init__(self, data): ++ * self.counter = 0 ++ * self.data = data # <<<<<<<<<<<<<< ++ * self.observed = False ++ * ++ */ ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 349, __pyx_L1_error) + +-static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- enum mpv_event_id __pyx_t_1; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__set__", 0); +- __pyx_t_1 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_value)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) +- __pyx_v_self->id = __pyx_t_1; ++ /* "vidcutter/libs/pympv/mpv.pyx":350 ++ * self.counter = 0 ++ * self.data = data ++ * self.observed = False # <<<<<<<<<<<<<< ++ * ++ * def add(self): ++ */ ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 350, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":347 ++ * ++ * class _ReplyUserData(object): ++ * def __init__(self, data): # <<<<<<<<<<<<<< ++ * self.counter = 0 ++ * self.data = data ++ */ + + /* function exit code */ +- __pyx_r = 0; ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = -1; ++ __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":259 +- * """Wraps: mpv_event""" +- * cdef public mpv_event_id id +- * cdef public int error # <<<<<<<<<<<<<< +- * cdef public object data, reply_userdata ++/* "vidcutter/libs/pympv/mpv.pyx":352 ++ * self.observed = False ++ * ++ * def add(self): # <<<<<<<<<<<<<< ++ * self.counter += 1 + * + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(PyObject *__pyx_v_self) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add = {"add", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, METH_O, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("add (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__get__", 0); +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error) ++ __Pyx_RefNannySetupContext("add", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":353 ++ * ++ * def add(self): ++ * self.counter += 1 # <<<<<<<<<<<<<< ++ * ++ * def remove(self): ++ */ ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 353, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":352 ++ * self.observed = False ++ * ++ * def add(self): # <<<<<<<<<<<<<< ++ * self.counter += 1 ++ * ++ */ + + /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.add", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); +@@ -7328,1181 +7931,1253 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(struct __p + return __pyx_r; + } + ++/* "vidcutter/libs/pympv/mpv.pyx":355 ++ * self.counter += 1 ++ * ++ * def remove(self): # <<<<<<<<<<<<<< ++ * self.counter -= 1 ++ * ++ */ ++ + /* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove = {"remove", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, METH_O, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove(PyObject *__pyx_self, PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ __Pyx_RefNannySetupContext("remove (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- int __pyx_t_1; ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__set__", 0); +- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L1_error) +- __pyx_v_self->error = __pyx_t_1; ++ __Pyx_RefNannySetupContext("remove", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":356 ++ * ++ * def remove(self): ++ * self.counter -= 1 # <<<<<<<<<<<<<< ++ * ++ * ++ */ ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 356, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":355 ++ * self.counter += 1 ++ * ++ * def remove(self): # <<<<<<<<<<<<<< ++ * self.counter -= 1 ++ * ++ */ + + /* function exit code */ +- __pyx_r = 0; ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = -1; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":260 +- * cdef public mpv_event_id id +- * cdef public int error +- * cdef public object data, reply_userdata # <<<<<<<<<<<<<< ++/* "vidcutter/libs/pympv/mpv.pyx":370 + * + * @property ++ * def api_version(self): # <<<<<<<<<<<<<< ++ * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION ++ * + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(PyObject *__pyx_v_self) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4data___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":371 ++ * @property ++ * def api_version(self): ++ * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION # <<<<<<<<<<<<<< ++ * ++ * @property ++ */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->data); +- __pyx_r = __pyx_v_self->data; ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_GIVEREF(__pyx_t_1); ++ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_2); ++ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); ++ __Pyx_GIVEREF(__pyx_t_3); ++ PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); ++ __pyx_t_1 = 0; ++ __pyx_t_2 = 0; ++ __pyx_t_3 = 0; ++ __pyx_r = __pyx_t_4; ++ __pyx_t_4 = 0; + goto __pyx_L0; + ++ /* "vidcutter/libs/pympv/mpv.pyx":370 ++ * ++ * @property ++ * def api_version(self): # <<<<<<<<<<<<<< ++ * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION ++ * ++ */ ++ + /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.api_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + ++/* "vidcutter/libs/pympv/mpv.pyx":374 ++ * ++ * @property ++ * def name(self): # <<<<<<<<<<<<<< ++ * """Unique name for every context created. ++ * ++ */ ++ + /* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { ++ char const *__pyx_v_name; ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__", 0); +- __Pyx_INCREF(__pyx_v_value); +- __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->data); +- __Pyx_DECREF(__pyx_v_self->data); +- __pyx_v_self->data = __pyx_v_value; +- +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(PyObject *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__get__", 0); + +-static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__", 0); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->data); +- __Pyx_DECREF(__pyx_v_self->data); +- __pyx_v_self->data = Py_None; ++ /* "vidcutter/libs/pympv/mpv.pyx":380 ++ * """ ++ * cdef const char* name ++ * assert self._ctx # <<<<<<<<<<<<<< ++ * with nogil: ++ * name = mpv_client_name(self._ctx) ++ */ ++ #ifndef CYTHON_WITHOUT_ASSERTIONS ++ if (unlikely(!Py_OptimizeFlag)) { ++ if (unlikely(!(__pyx_v_self->_ctx != 0))) { ++ PyErr_SetNone(PyExc_AssertionError); ++ __PYX_ERR(0, 380, __pyx_L1_error) ++ } ++ } ++ #endif + +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":381 ++ * cdef const char* name ++ * assert self._ctx ++ * with nogil: # <<<<<<<<<<<<<< ++ * name = mpv_client_name(self._ctx) ++ * return _strdec(name) ++ */ ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ /* "vidcutter/libs/pympv/mpv.pyx":382 ++ * assert self._ctx ++ * with nogil: ++ * name = mpv_client_name(self._ctx) # <<<<<<<<<<<<<< ++ * return _strdec(name) ++ * ++ */ ++ __pyx_v_name = mpv_client_name(__pyx_v_self->_ctx); ++ } + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":381 ++ * cdef const char* name ++ * assert self._ctx ++ * with nogil: # <<<<<<<<<<<<<< ++ * name = mpv_client_name(self._ctx) ++ * return _strdec(name) ++ */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__", 0); ++ /* "vidcutter/libs/pympv/mpv.pyx":383 ++ * with nogil: ++ * name = mpv_client_name(self._ctx) ++ * return _strdec(name) # <<<<<<<<<<<<<< ++ * ++ * @property ++ */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_self->reply_userdata); +- __pyx_r = __pyx_v_self->reply_userdata; ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 383, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 383, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 383, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; + goto __pyx_L0; + ++ /* "vidcutter/libs/pympv/mpv.pyx":374 ++ * ++ * @property ++ * def name(self): # <<<<<<<<<<<<<< ++ * """Unique name for every context created. ++ * ++ */ ++ + /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__set__", 0); +- __Pyx_INCREF(__pyx_v_value); +- __Pyx_GIVEREF(__pyx_v_value); +- __Pyx_GOTREF(__pyx_v_self->reply_userdata); +- __Pyx_DECREF(__pyx_v_self->reply_userdata); +- __pyx_v_self->reply_userdata = __pyx_v_value; +- +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(PyObject *__pyx_v_self); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(PyObject *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__del__", 0); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->reply_userdata); +- __Pyx_DECREF(__pyx_v_self->reply_userdata); +- __pyx_v_self->reply_userdata = Py_None; +- +- /* function exit code */ +- __pyx_r = 0; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * cdef tuple state +- * cdef object _dict ++/* "vidcutter/libs/pympv/mpv.pyx":386 ++ * ++ * @property ++ * def time(self): # <<<<<<<<<<<<<< ++ * """Internal mpv client time. ++ * + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(PyObject *__pyx_v_self); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { +- PyObject *__pyx_v_state = 0; +- PyObject *__pyx_v__dict = 0; +- int __pyx_v_use_setstate; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { ++ int64_t __pyx_v_time; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- int __pyx_t_4; +- int __pyx_t_5; +- int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__reduce_cython__", 0); ++ __Pyx_RefNannySetupContext("__get__", 0); + +- /* "(tree fragment)":5 +- * cdef object _dict +- * cdef bint use_setstate +- * state = (self.data, self.error, self.id, self.reply_userdata) # <<<<<<<<<<<<<< +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: +- */ +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_INCREF(__pyx_v_self->data); +- __Pyx_GIVEREF(__pyx_v_self->data); +- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->data); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_2); +- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); +- __Pyx_INCREF(__pyx_v_self->reply_userdata); +- __Pyx_GIVEREF(__pyx_v_self->reply_userdata); +- PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->reply_userdata); +- __pyx_t_1 = 0; +- __pyx_t_2 = 0; +- __pyx_v_state = ((PyObject*)__pyx_t_3); +- __pyx_t_3 = 0; +- +- /* "(tree fragment)":6 +- * cdef bint use_setstate +- * state = (self.data, self.error, self.id, self.reply_userdata) +- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< +- * if _dict is not None: +- * state += (_dict,) +- */ +- __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_v__dict = __pyx_t_3; +- __pyx_t_3 = 0; +- +- /* "(tree fragment)":7 +- * state = (self.data, self.error, self.id, self.reply_userdata) +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: # <<<<<<<<<<<<<< +- * state += (_dict,) +- * use_setstate = True +- */ +- __pyx_t_4 = (__pyx_v__dict != Py_None); +- __pyx_t_5 = (__pyx_t_4 != 0); +- if (__pyx_t_5) { +- +- /* "(tree fragment)":8 +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: +- * state += (_dict,) # <<<<<<<<<<<<<< +- * use_setstate = True +- * else: +- */ +- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_INCREF(__pyx_v__dict); +- __Pyx_GIVEREF(__pyx_v__dict); +- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict); +- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2)); +- __pyx_t_2 = 0; +- +- /* "(tree fragment)":9 +- * if _dict is not None: +- * state += (_dict,) +- * use_setstate = True # <<<<<<<<<<<<<< +- * else: +- * use_setstate = self.data is not None or self.reply_userdata is not None +- */ +- __pyx_v_use_setstate = 1; +- +- /* "(tree fragment)":7 +- * state = (self.data, self.error, self.id, self.reply_userdata) +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: # <<<<<<<<<<<<<< +- * state += (_dict,) +- * use_setstate = True +- */ +- goto __pyx_L3; +- } +- +- /* "(tree fragment)":11 +- * use_setstate = True +- * else: +- * use_setstate = self.data is not None or self.reply_userdata is not None # <<<<<<<<<<<<<< +- * if use_setstate: +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state ++ /* "vidcutter/libs/pympv/mpv.pyx":394 ++ * """ ++ * cdef int64_t time ++ * assert self._ctx # <<<<<<<<<<<<<< ++ * with nogil: ++ * time = mpv_get_time_us(self._ctx) + */ +- /*else*/ { +- __pyx_t_4 = (__pyx_v_self->data != Py_None); +- __pyx_t_6 = (__pyx_t_4 != 0); +- if (!__pyx_t_6) { +- } else { +- __pyx_t_5 = __pyx_t_6; +- goto __pyx_L4_bool_binop_done; ++ #ifndef CYTHON_WITHOUT_ASSERTIONS ++ if (unlikely(!Py_OptimizeFlag)) { ++ if (unlikely(!(__pyx_v_self->_ctx != 0))) { ++ PyErr_SetNone(PyExc_AssertionError); ++ __PYX_ERR(0, 394, __pyx_L1_error) + } +- __pyx_t_6 = (__pyx_v_self->reply_userdata != Py_None); +- __pyx_t_4 = (__pyx_t_6 != 0); +- __pyx_t_5 = __pyx_t_4; +- __pyx_L4_bool_binop_done:; +- __pyx_v_use_setstate = __pyx_t_5; + } +- __pyx_L3:; ++ #endif + +- /* "(tree fragment)":12 +- * else: +- * use_setstate = self.data is not None or self.reply_userdata is not None +- * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":395 ++ * cdef int64_t time ++ * assert self._ctx ++ * with nogil: # <<<<<<<<<<<<<< ++ * time = mpv_get_time_us(self._ctx) ++ * return time + */ +- __pyx_t_5 = (__pyx_v_use_setstate != 0); +- if (__pyx_t_5) { ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "(tree fragment)":13 +- * use_setstate = self.data is not None or self.reply_userdata is not None +- * if use_setstate: +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state # <<<<<<<<<<<<<< +- * else: +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) ++ /* "vidcutter/libs/pympv/mpv.pyx":396 ++ * assert self._ctx ++ * with nogil: ++ * time = mpv_get_time_us(self._ctx) # <<<<<<<<<<<<<< ++ * return time ++ * + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_Event); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_228822053); +- __Pyx_GIVEREF(__pyx_int_228822053); +- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228822053); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None); +- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_2); +- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); +- __Pyx_GIVEREF(__pyx_t_3); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); +- __Pyx_INCREF(__pyx_v_state); +- __Pyx_GIVEREF(__pyx_v_state); +- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); +- __pyx_t_2 = 0; +- __pyx_t_3 = 0; +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __pyx_v_time = mpv_get_time_us(__pyx_v_self->_ctx); ++ } + +- /* "(tree fragment)":12 +- * else: +- * use_setstate = self.data is not None or self.reply_userdata is not None +- * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":395 ++ * cdef int64_t time ++ * assert self._ctx ++ * with nogil: # <<<<<<<<<<<<<< ++ * time = mpv_get_time_us(self._ctx) ++ * return time + */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } + } + +- /* "(tree fragment)":15 +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state +- * else: +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_Event__set_state(self, __pyx_state) ++ /* "vidcutter/libs/pympv/mpv.pyx":397 ++ * with nogil: ++ * time = mpv_get_time_us(self._ctx) ++ * return time # <<<<<<<<<<<<<< ++ * ++ * # def suspend(self): + */ +- /*else*/ { +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Event); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_228822053); +- __Pyx_GIVEREF(__pyx_int_228822053); +- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228822053); +- __Pyx_INCREF(__pyx_v_state); +- __Pyx_GIVEREF(__pyx_v_state); +- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state); +- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_3); +- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); +- __pyx_t_1 = 0; +- __pyx_t_3 = 0; +- __pyx_r = __pyx_t_2; +- __pyx_t_2 = 0; +- goto __pyx_L0; +- } ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_v_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +- /* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * cdef tuple state +- * cdef object _dict ++ /* "vidcutter/libs/pympv/mpv.pyx":386 ++ * ++ * @property ++ * def time(self): # <<<<<<<<<<<<<< ++ * """Internal mpv client time. ++ * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_state); +- __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "(tree fragment)":16 +- * else: +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_Event__set_state(self, __pyx_state) ++/* "vidcutter/libs/pympv/mpv.pyx":412 ++ * ++ * @_errors ++ * def request_event(self, event, enable): # <<<<<<<<<<<<<< ++ * """Enable or disable a given event. ++ * + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_request_event[] = "Enable or disable a given event.\n\n Arguments:\n event - See Events\n enable - True to enable, False to disable\n\n Wraps: mpv_request_event\n "; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_event = 0; ++ PyObject *__pyx_v_enable = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); ++ __Pyx_RefNannySetupContext("request_event (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_event,&__pyx_n_s_enable,0}; ++ PyObject* values[2] = {0,0}; ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, 1); __PYX_ERR(0, 412, __pyx_L3_error) ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "request_event") < 0)) __PYX_ERR(0, 412, __pyx_L3_error) ++ } ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { ++ goto __pyx_L5_argtuple_error; ++ } else { ++ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ } ++ __pyx_v_event = values[0]; ++ __pyx_v_enable = values[1]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 412, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_event, __pyx_v_enable); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_enable) { ++ int __pyx_v_enable_i; ++ int __pyx_v_err; ++ enum mpv_event_id __pyx_v_event_id; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_1; ++ int __pyx_t_2; ++ enum mpv_event_id __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__setstate_cython__", 0); ++ __Pyx_RefNannySetupContext("request_event", 0); + +- /* "(tree fragment)":17 +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) +- * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_Event__set_state(self, __pyx_state) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":421 ++ * Wraps: mpv_request_event ++ * """ ++ * assert self._ctx # <<<<<<<<<<<<<< ++ * cdef int enable_i = 1 if enable else 0 ++ * cdef int err + */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ #ifndef CYTHON_WITHOUT_ASSERTIONS ++ if (unlikely(!Py_OptimizeFlag)) { ++ if (unlikely(!(__pyx_v_self->_ctx != 0))) { ++ PyErr_SetNone(PyExc_AssertionError); ++ __PYX_ERR(0, 421, __pyx_L1_error) ++ } ++ } ++ #endif + +- /* "(tree fragment)":16 +- * else: +- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_Event__set_state(self, __pyx_state) ++ /* "vidcutter/libs/pympv/mpv.pyx":422 ++ * """ ++ * assert self._ctx ++ * cdef int enable_i = 1 if enable else 0 # <<<<<<<<<<<<<< ++ * cdef int err ++ * cdef mpv_event_id event_id = event + */ ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_enable); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 422, __pyx_L1_error) ++ if (__pyx_t_2) { ++ __pyx_t_1 = 1; ++ } else { ++ __pyx_t_1 = 0; ++ } ++ __pyx_v_enable_i = __pyx_t_1; + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":424 ++ * cdef int enable_i = 1 if enable else 0 ++ * cdef int err ++ * cdef mpv_event_id event_id = event # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_request_event(self._ctx, event_id, enable_i) ++ */ ++ __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_event)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 424, __pyx_L1_error) ++ __pyx_v_event_id = __pyx_t_3; + +-/* "vidcutter/libs/pympv/mpv.pyx":318 ++ /* "vidcutter/libs/pympv/mpv.pyx":425 ++ * cdef int err ++ * cdef mpv_event_id event_id = event ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_request_event(self._ctx, event_id, enable_i) ++ * return err ++ */ ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":426 ++ * cdef mpv_event_id event_id = event ++ * with nogil: ++ * err = mpv_request_event(self._ctx, event_id, enable_i) # <<<<<<<<<<<<<< ++ * return err + * ++ */ ++ __pyx_v_err = mpv_request_event(__pyx_v_self->_ctx, __pyx_v_event_id, __pyx_v_enable_i); ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":425 ++ * cdef int err ++ * cdef mpv_event_id event_id = event ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_request_event(self._ctx, event_id, enable_i) ++ * return err ++ */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":427 ++ * with nogil: ++ * err = mpv_request_event(self._ctx, event_id, enable_i) ++ * return err # <<<<<<<<<<<<<< + * +- * def _errors(fn): # <<<<<<<<<<<<<< +- * def wrapped(*k, **kw): +- * v = fn(*k, **kw) ++ * @_errors + */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_r = __pyx_t_4; ++ __pyx_t_4 = 0; ++ goto __pyx_L0; + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, PyObject *__pyx_v_fn); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_5_errors = {"_errors", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5_errors, METH_O, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, PyObject *__pyx_v_fn) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("_errors (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_4_errors(__pyx_self, ((PyObject *)__pyx_v_fn)); ++ /* "vidcutter/libs/pympv/mpv.pyx":412 ++ * ++ * @_errors ++ * def request_event(self, event, enable): # <<<<<<<<<<<<<< ++ * """Enable or disable a given event. ++ * ++ */ + + /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":319 ++/* "vidcutter/libs/pympv/mpv.pyx":430 + * +- * def _errors(fn): +- * def wrapped(*k, **kw): # <<<<<<<<<<<<<< +- * v = fn(*k, **kw) +- * if v < 0: ++ * @_errors ++ * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_request_log_messages""" ++ * assert self._ctx + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped = {"wrapped", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_k = 0; +- PyObject *__pyx_v_kw = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_3set_log_level(PyObject *__pyx_v_self, PyObject *__pyx_v_loglevel); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_2set_log_level[] = "Wraps: mpv_request_log_messages"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_3set_log_level(PyObject *__pyx_v_self, PyObject *__pyx_v_loglevel) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("wrapped (wrapper)", 0); +- if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "wrapped", 1))) return NULL; +- if (unlikely(__pyx_kwds)) { +- __pyx_v_kw = PyDict_Copy(__pyx_kwds); if (unlikely(!__pyx_v_kw)) return NULL; +- __Pyx_GOTREF(__pyx_v_kw); +- } else { +- __pyx_v_kw = NULL; +- } +- __Pyx_INCREF(__pyx_args); +- __pyx_v_k = __pyx_args; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(__pyx_self, __pyx_v_k, __pyx_v_kw); ++ __Pyx_RefNannySetupContext("set_log_level (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_loglevel)); + + /* function exit code */ +- __Pyx_XDECREF(__pyx_v_k); +- __Pyx_XDECREF(__pyx_v_kw); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_kw) { +- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_cur_scope; +- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_outer_scope; +- PyObject *__pyx_v_v = NULL; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_loglevel) { ++ char const *__pyx_v_loglevel_c; ++ int __pyx_v_err; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; ++ PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; ++ char const *__pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("wrapped", 0); +- __pyx_outer_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *) __Pyx_CyFunction_GetClosure(__pyx_self); +- __pyx_cur_scope = __pyx_outer_scope; ++ __Pyx_RefNannySetupContext("set_log_level", 0); ++ __Pyx_INCREF(__pyx_v_loglevel); + +- /* "vidcutter/libs/pympv/mpv.pyx":320 +- * def _errors(fn): +- * def wrapped(*k, **kw): +- * v = fn(*k, **kw) # <<<<<<<<<<<<<< +- * if v < 0: +- * raise MPVError(v) ++ /* "vidcutter/libs/pympv/mpv.pyx":432 ++ * def set_log_level(self, loglevel): ++ * """Wraps: mpv_request_log_messages""" ++ * assert self._ctx # <<<<<<<<<<<<<< ++ * loglevel = _strenc(loglevel) ++ * cdef const char* loglevel_c = loglevel + */ +- if (unlikely(!__pyx_cur_scope->__pyx_v_fn)) { __Pyx_RaiseClosureNameError("fn"); __PYX_ERR(0, 320, __pyx_L1_error) } +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_fn, __pyx_v_k, __pyx_v_kw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) ++ #ifndef CYTHON_WITHOUT_ASSERTIONS ++ if (unlikely(!Py_OptimizeFlag)) { ++ if (unlikely(!(__pyx_v_self->_ctx != 0))) { ++ PyErr_SetNone(PyExc_AssertionError); ++ __PYX_ERR(0, 432, __pyx_L1_error) ++ } ++ } ++ #endif ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":433 ++ * """Wraps: mpv_request_log_messages""" ++ * assert self._ctx ++ * loglevel = _strenc(loglevel) # <<<<<<<<<<<<<< ++ * cdef const char* loglevel_c = loglevel ++ * cdef int err ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 433, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_loglevel) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_loglevel); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_v = __pyx_t_1; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF_SET(__pyx_v_loglevel, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":321 +- * def wrapped(*k, **kw): +- * v = fn(*k, **kw) +- * if v < 0: # <<<<<<<<<<<<<< +- * raise MPVError(v) +- * return wrapped ++ /* "vidcutter/libs/pympv/mpv.pyx":434 ++ * assert self._ctx ++ * loglevel = _strenc(loglevel) ++ * cdef const char* loglevel_c = loglevel # <<<<<<<<<<<<<< ++ * cdef int err ++ * with nogil: + */ +- __pyx_t_1 = PyObject_RichCompare(__pyx_v_v, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error) +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 321, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- if (unlikely(__pyx_t_2)) { ++ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_loglevel); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 434, __pyx_L1_error) ++ __pyx_v_loglevel_c = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":322 +- * v = fn(*k, **kw) +- * if v < 0: +- * raise MPVError(v) # <<<<<<<<<<<<<< +- * return wrapped ++ /* "vidcutter/libs/pympv/mpv.pyx":436 ++ * cdef const char* loglevel_c = loglevel ++ * cdef int err ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_request_log_messages(self._ctx, loglevel_c) ++ * return err ++ */ ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":437 ++ * cdef int err ++ * with nogil: ++ * err = mpv_request_log_messages(self._ctx, loglevel_c) # <<<<<<<<<<<<<< ++ * return err + * + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); ++ __pyx_v_err = mpv_request_log_messages(__pyx_v_self->_ctx, __pyx_v_loglevel_c); + } +- } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_v) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_v); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 322, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":321 +- * def wrapped(*k, **kw): +- * v = fn(*k, **kw) +- * if v < 0: # <<<<<<<<<<<<<< +- * raise MPVError(v) +- * return wrapped ++ /* "vidcutter/libs/pympv/mpv.pyx":436 ++ * cdef const char* loglevel_c = loglevel ++ * cdef int err ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_request_log_messages(self._ctx, loglevel_c) ++ * return err + */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":319 ++ /* "vidcutter/libs/pympv/mpv.pyx":438 ++ * with nogil: ++ * err = mpv_request_log_messages(self._ctx, loglevel_c) ++ * return err # <<<<<<<<<<<<<< + * +- * def _errors(fn): +- * def wrapped(*k, **kw): # <<<<<<<<<<<<<< +- * v = fn(*k, **kw) +- * if v < 0: ++ * @_errors ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":430 ++ * ++ * @_errors ++ * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_request_log_messages""" ++ * assert self._ctx + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv._errors.wrapped", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_v); ++ __Pyx_XDECREF(__pyx_v_loglevel); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":318 +- * ++/* "vidcutter/libs/pympv/mpv.pyx":441 + * +- * def _errors(fn): # <<<<<<<<<<<<<< +- * def wrapped(*k, **kw): +- * v = fn(*k, **kw) ++ * @_errors ++ * def load_config(self, filename): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_load_config_file""" ++ * assert self._ctx + */ + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fn) { +- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_cur_scope; +- PyObject *__pyx_v_wrapped = 0; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_5load_config(PyObject *__pyx_v_self, PyObject *__pyx_v_filename); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_4load_config[] = "Wraps: mpv_load_config_file"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_5load_config(PyObject *__pyx_v_self, PyObject *__pyx_v_filename) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("load_config (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_filename)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_filename) { ++ char const *__pyx_v__filename; ++ int __pyx_v_err; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ char const *__pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_errors", 0); +- __pyx_cur_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(__pyx_ptype_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, __pyx_empty_tuple, NULL); +- if (unlikely(!__pyx_cur_scope)) { +- __pyx_cur_scope = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)Py_None); +- __Pyx_INCREF(Py_None); +- __PYX_ERR(0, 318, __pyx_L1_error) +- } else { +- __Pyx_GOTREF(__pyx_cur_scope); ++ __Pyx_RefNannySetupContext("load_config", 0); ++ __Pyx_INCREF(__pyx_v_filename); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":443 ++ * def load_config(self, filename): ++ * """Wraps: mpv_load_config_file""" ++ * assert self._ctx # <<<<<<<<<<<<<< ++ * filename = _strenc(filename) ++ * cdef const char* _filename = filename ++ */ ++ #ifndef CYTHON_WITHOUT_ASSERTIONS ++ if (unlikely(!Py_OptimizeFlag)) { ++ if (unlikely(!(__pyx_v_self->_ctx != 0))) { ++ PyErr_SetNone(PyExc_AssertionError); ++ __PYX_ERR(0, 443, __pyx_L1_error) ++ } + } +- __pyx_cur_scope->__pyx_v_fn = __pyx_v_fn; +- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fn); +- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fn); ++ #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":319 +- * +- * def _errors(fn): +- * def wrapped(*k, **kw): # <<<<<<<<<<<<<< +- * v = fn(*k, **kw) +- * if v < 0: ++ /* "vidcutter/libs/pympv/mpv.pyx":444 ++ * """Wraps: mpv_load_config_file""" ++ * assert self._ctx ++ * filename = _strenc(filename) # <<<<<<<<<<<<<< ++ * cdef const char* _filename = filename ++ * cdef int err + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped, 0, __pyx_n_s_errors_locals_wrapped, ((PyObject*)__pyx_cur_scope), __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 444, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_wrapped = __pyx_t_1; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":323 +- * if v < 0: +- * raise MPVError(v) +- * return wrapped # <<<<<<<<<<<<<< +- * +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":445 ++ * assert self._ctx ++ * filename = _strenc(filename) ++ * cdef const char* _filename = filename # <<<<<<<<<<<<<< ++ * cdef int err ++ * with nogil: ++ */ ++ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 445, __pyx_L1_error) ++ __pyx_v__filename = __pyx_t_4; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":447 ++ * cdef const char* _filename = filename ++ * cdef int err ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_load_config_file(self._ctx, _filename) ++ * return err ++ */ ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":448 ++ * cdef int err ++ * with nogil: ++ * err = mpv_load_config_file(self._ctx, _filename) # <<<<<<<<<<<<<< ++ * return err ++ * ++ */ ++ __pyx_v_err = mpv_load_config_file(__pyx_v_self->_ctx, __pyx_v__filename); ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":447 ++ * cdef const char* _filename = filename ++ * cdef int err ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_load_config_file(self._ctx, _filename) ++ * return err ++ */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":449 ++ * with nogil: ++ * err = mpv_load_config_file(self._ctx, _filename) ++ * return err # <<<<<<<<<<<<<< ++ * ++ * def _format_for(self, value): + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_wrapped); +- __pyx_r = __pyx_v_wrapped; ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":318 +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":441 + * +- * def _errors(fn): # <<<<<<<<<<<<<< +- * def wrapped(*k, **kw): +- * v = fn(*k, **kw) ++ * @_errors ++ * def load_config(self, filename): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_load_config_file""" ++ * assert self._ctx + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv._errors", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.load_config", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_wrapped); +- __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); ++ __Pyx_XDECREF(__pyx_v_filename); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":329 +- * code = None ++/* "vidcutter/libs/pympv/mpv.pyx":451 ++ * return err + * +- * def __init__(self, e): # <<<<<<<<<<<<<< +- * self.code = e +- * cdef const char* err_c ++ * def _format_for(self, value): # <<<<<<<<<<<<<< ++ * if isinstance(value, basestring): ++ * return MPV_FORMAT_STRING + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_self = 0; +- PyObject *__pyx_v_e = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_7_format_for(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_7_format_for(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_e,0}; +- PyObject* values[2] = {0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_e)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 329, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 329, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- } +- __pyx_v_self = values[0]; +- __pyx_v_e = values[1]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 329, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(__pyx_self, __pyx_v_self, __pyx_v_e); ++ __Pyx_RefNannySetupContext("_format_for (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_e) { +- char const *__pyx_v_err_c; +- int __pyx_v_e_i; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__init__", 0); +- __Pyx_INCREF(__pyx_v_e); ++ __Pyx_RefNannySetupContext("_format_for", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":330 ++ /* "vidcutter/libs/pympv/mpv.pyx":452 + * +- * def __init__(self, e): +- * self.code = e # <<<<<<<<<<<<<< +- * cdef const char* err_c +- * cdef int e_i +- */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_e) < 0) __PYX_ERR(0, 330, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":333 +- * cdef const char* err_c +- * cdef int e_i +- * if not isinstance(e, basestring): # <<<<<<<<<<<<<< +- * e_i = e +- * with nogil: ++ * def _format_for(self, value): ++ * if isinstance(value, basestring): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_STRING ++ * elif isinstance(value, bool): + */ +- __pyx_t_1 = __Pyx_PyBaseString_Check(__pyx_v_e); +- __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); ++ __pyx_t_1 = __Pyx_PyBaseString_Check(__pyx_v_value); ++ __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":334 +- * cdef int e_i +- * if not isinstance(e, basestring): +- * e_i = e # <<<<<<<<<<<<<< +- * with nogil: +- * err_c = mpv_error_string(e_i) ++ /* "vidcutter/libs/pympv/mpv.pyx":453 ++ * def _format_for(self, value): ++ * if isinstance(value, basestring): ++ * return MPV_FORMAT_STRING # <<<<<<<<<<<<<< ++ * elif isinstance(value, bool): ++ * return MPV_FORMAT_FLAG + */ +- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_e); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L1_error) +- __pyx_v_e_i = __pyx_t_3; ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":335 +- * if not isinstance(e, basestring): +- * e_i = e +- * with nogil: # <<<<<<<<<<<<<< +- * err_c = mpv_error_string(e_i) +- * e = _strdec(err_c) ++ /* "vidcutter/libs/pympv/mpv.pyx":452 ++ * ++ * def _format_for(self, value): ++ * if isinstance(value, basestring): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_STRING ++ * elif isinstance(value, bool): + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":336 +- * e_i = e +- * with nogil: +- * err_c = mpv_error_string(e_i) # <<<<<<<<<<<<<< +- * e = _strdec(err_c) +- * Exception.__init__(self, e) ++ /* "vidcutter/libs/pympv/mpv.pyx":454 ++ * if isinstance(value, basestring): ++ * return MPV_FORMAT_STRING ++ * elif isinstance(value, bool): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_FLAG ++ * elif isinstance(value, int): + */ +- __pyx_v_err_c = mpv_error_string(__pyx_v_e_i); +- } ++ __pyx_t_3 = ((PyObject*)&PyBool_Type); ++ __Pyx_INCREF(__pyx_t_3); ++ __pyx_t_2 = PyObject_IsInstance(__pyx_v_value, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 454, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_t_1 = (__pyx_t_2 != 0); ++ if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":335 +- * if not isinstance(e, basestring): +- * e_i = e +- * with nogil: # <<<<<<<<<<<<<< +- * err_c = mpv_error_string(e_i) +- * e = _strdec(err_c) ++ /* "vidcutter/libs/pympv/mpv.pyx":455 ++ * return MPV_FORMAT_STRING ++ * elif isinstance(value, bool): ++ * return MPV_FORMAT_FLAG # <<<<<<<<<<<<<< ++ * elif isinstance(value, int): ++ * return MPV_FORMAT_INT64 + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L6; +- } +- __pyx_L6:; +- } +- } ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":337 +- * with nogil: +- * err_c = mpv_error_string(e_i) +- * e = _strdec(err_c) # <<<<<<<<<<<<<< +- * Exception.__init__(self, e) +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":454 ++ * if isinstance(value, basestring): ++ * return MPV_FORMAT_STRING ++ * elif isinstance(value, bool): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_FLAG ++ * elif isinstance(value, int): + */ +- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_strdec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { +- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); +- if (likely(__pyx_t_7)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); +- __Pyx_INCREF(__pyx_t_7); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_5, function); +- } +- } +- __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF_SET(__pyx_v_e, __pyx_t_4); +- __pyx_t_4 = 0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":333 +- * cdef const char* err_c +- * cdef int e_i +- * if not isinstance(e, basestring): # <<<<<<<<<<<<<< +- * e_i = e +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":456 ++ * elif isinstance(value, bool): ++ * return MPV_FORMAT_FLAG ++ * elif isinstance(value, int): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_INT64 ++ * elif isinstance(value, float): ++ */ ++ __pyx_t_1 = PyInt_Check(__pyx_v_value); ++ __pyx_t_2 = (__pyx_t_1 != 0); ++ if (__pyx_t_2) { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":457 ++ * return MPV_FORMAT_FLAG ++ * elif isinstance(value, int): ++ * return MPV_FORMAT_INT64 # <<<<<<<<<<<<<< ++ * elif isinstance(value, float): ++ * return MPV_FORMAT_DOUBLE ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":456 ++ * elif isinstance(value, bool): ++ * return MPV_FORMAT_FLAG ++ * elif isinstance(value, int): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_INT64 ++ * elif isinstance(value, float): + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":338 +- * err_c = mpv_error_string(e_i) +- * e = _strdec(err_c) +- * Exception.__init__(self, e) # <<<<<<<<<<<<<< +- * +- * class PyMPVError(Exception): ++ /* "vidcutter/libs/pympv/mpv.pyx":458 ++ * elif isinstance(value, int): ++ * return MPV_FORMAT_INT64 ++ * elif isinstance(value, float): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_DOUBLE ++ * elif isinstance(value, (tuple, list)): ++ */ ++ __pyx_t_2 = PyFloat_Check(__pyx_v_value); ++ __pyx_t_1 = (__pyx_t_2 != 0); ++ if (__pyx_t_1) { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":459 ++ * return MPV_FORMAT_INT64 ++ * elif isinstance(value, float): ++ * return MPV_FORMAT_DOUBLE # <<<<<<<<<<<<<< ++ * elif isinstance(value, (tuple, list)): ++ * return MPV_FORMAT_NODE_ARRAY ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":458 ++ * elif isinstance(value, int): ++ * return MPV_FORMAT_INT64 ++ * elif isinstance(value, float): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_DOUBLE ++ * elif isinstance(value, (tuple, list)): + */ +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_6 = NULL; +- __pyx_t_3 = 0; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { +- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); +- if (likely(__pyx_t_6)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); +- __Pyx_INCREF(__pyx_t_6); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_5, function); +- __pyx_t_3 = 1; +- } + } +- #if CYTHON_FAST_PYCALL +- if (PyFunction_Check(__pyx_t_5)) { +- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; +- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_GOTREF(__pyx_t_4); +- } else +- #endif +- #if CYTHON_FAST_PYCCALL +- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { +- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; +- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_GOTREF(__pyx_t_4); +- } else +- #endif +- { +- __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 338, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- if (__pyx_t_6) { +- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; +- } +- __Pyx_INCREF(__pyx_v_self); +- __Pyx_GIVEREF(__pyx_v_self); +- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_3, __pyx_v_self); +- __Pyx_INCREF(__pyx_v_e); +- __Pyx_GIVEREF(__pyx_v_e); +- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_v_e); +- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":460 ++ * elif isinstance(value, float): ++ * return MPV_FORMAT_DOUBLE ++ * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_NODE_ARRAY ++ * elif isinstance(value, dict): ++ */ ++ __pyx_t_2 = PyTuple_Check(__pyx_v_value); ++ __pyx_t_4 = (__pyx_t_2 != 0); ++ if (!__pyx_t_4) { ++ } else { ++ __pyx_t_1 = __pyx_t_4; ++ goto __pyx_L4_bool_binop_done; + } +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_4 = PyList_Check(__pyx_v_value); ++ __pyx_t_2 = (__pyx_t_4 != 0); ++ __pyx_t_1 = __pyx_t_2; ++ __pyx_L4_bool_binop_done:; ++ __pyx_t_2 = (__pyx_t_1 != 0); ++ if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":329 +- * code = None +- * +- * def __init__(self, e): # <<<<<<<<<<<<<< +- * self.code = e +- * cdef const char* err_c ++ /* "vidcutter/libs/pympv/mpv.pyx":461 ++ * return MPV_FORMAT_DOUBLE ++ * elif isinstance(value, (tuple, list)): ++ * return MPV_FORMAT_NODE_ARRAY # <<<<<<<<<<<<<< ++ * elif isinstance(value, dict): ++ * return MPV_FORMAT_NODE_MAP + */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_e); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":460 ++ * elif isinstance(value, float): ++ * return MPV_FORMAT_DOUBLE ++ * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_NODE_ARRAY ++ * elif isinstance(value, dict): ++ */ ++ } + +-/* "vidcutter/libs/pympv/mpv.pyx":347 +- * +- * class _ReplyUserData(object): +- * def __init__(self, data): # <<<<<<<<<<<<<< +- * self.counter = 0 +- * self.data = data ++ /* "vidcutter/libs/pympv/mpv.pyx":462 ++ * elif isinstance(value, (tuple, list)): ++ * return MPV_FORMAT_NODE_ARRAY ++ * elif isinstance(value, dict): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_NODE_MAP ++ * return MPV_FORMAT_NONE + */ ++ __pyx_t_2 = PyDict_Check(__pyx_v_value); ++ __pyx_t_1 = (__pyx_t_2 != 0); ++ if (__pyx_t_1) { + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_self = 0; +- PyObject *__pyx_v_data = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_data,0}; +- PyObject* values[2] = {0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 347, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 347, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- } +- __pyx_v_self = values[0]; +- __pyx_v_data = values[1]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 347, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(__pyx_self, __pyx_v_self, __pyx_v_data); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_data) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__init__", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":348 +- * class _ReplyUserData(object): +- * def __init__(self, data): +- * self.counter = 0 # <<<<<<<<<<<<<< +- * self.data = data +- * self.observed = False ++ /* "vidcutter/libs/pympv/mpv.pyx":463 ++ * return MPV_FORMAT_NODE_ARRAY ++ * elif isinstance(value, dict): ++ * return MPV_FORMAT_NODE_MAP # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_NONE ++ * + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_int_0) < 0) __PYX_ERR(0, 348, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":349 +- * def __init__(self, data): +- * self.counter = 0 +- * self.data = data # <<<<<<<<<<<<<< +- * self.observed = False +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":462 ++ * elif isinstance(value, (tuple, list)): ++ * return MPV_FORMAT_NODE_ARRAY ++ * elif isinstance(value, dict): # <<<<<<<<<<<<<< ++ * return MPV_FORMAT_NODE_MAP ++ * return MPV_FORMAT_NONE + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 349, __pyx_L1_error) ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":350 +- * self.counter = 0 +- * self.data = data +- * self.observed = False # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":464 ++ * elif isinstance(value, dict): ++ * return MPV_FORMAT_NODE_MAP ++ * return MPV_FORMAT_NONE # <<<<<<<<<<<<<< + * +- * def add(self): ++ * cdef mpv_node_list* _prep_node_list(self, values): + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 350, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 464, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":347 ++ /* "vidcutter/libs/pympv/mpv.pyx":451 ++ * return err + * +- * class _ReplyUserData(object): +- * def __init__(self, data): # <<<<<<<<<<<<<< +- * self.counter = 0 +- * self.data = data ++ * def _format_for(self, value): # <<<<<<<<<<<<<< ++ * if isinstance(value, basestring): ++ * return MPV_FORMAT_STRING + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context._format_for", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); +@@ -8510,1160 +9185,1186 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":352 +- * self.observed = False +- * +- * def add(self): # <<<<<<<<<<<<<< +- * self.counter += 1 ++/* "vidcutter/libs/pympv/mpv.pyx":466 ++ * return MPV_FORMAT_NONE + * ++ * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< ++ * cdef mpv_node node ++ * cdef mpv_format format + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add = {"add", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, METH_O, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add(PyObject *__pyx_self, PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("add (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(__pyx_self, ((PyObject *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { +- PyObject *__pyx_r = NULL; ++static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_values) { ++ struct mpv_node __pyx_v_node; ++ enum mpv_format __pyx_v_format; ++ struct mpv_node_list *__pyx_v_node_list; ++ PyObject *__pyx_v_i = NULL; ++ PyObject *__pyx_v_value = NULL; ++ struct mpv_node_list *__pyx_r; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; ++ Py_ssize_t __pyx_t_1; ++ int __pyx_t_2; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *(*__pyx_t_5)(PyObject *); ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ PyObject *__pyx_t_8 = NULL; ++ enum mpv_format __pyx_t_9; ++ Py_ssize_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("add", 0); ++ __Pyx_RefNannySetupContext("_prep_node_list", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":353 +- * +- * def add(self): +- * self.counter += 1 # <<<<<<<<<<<<<< +- * +- * def remove(self): ++ /* "vidcutter/libs/pympv/mpv.pyx":469 ++ * cdef mpv_node node ++ * cdef mpv_format format ++ * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) # <<<<<<<<<<<<<< ++ * node_list.num = len(values) ++ * node_list.values = NULL + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 353, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v_node_list = ((struct mpv_node_list *)malloc((sizeof(struct mpv_node_list)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":352 +- * self.observed = False +- * +- * def add(self): # <<<<<<<<<<<<<< +- * self.counter += 1 +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":470 ++ * cdef mpv_format format ++ * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) ++ * node_list.num = len(values) # <<<<<<<<<<<<<< ++ * node_list.values = NULL ++ * node_list.keys = NULL + */ ++ __pyx_t_1 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 470, __pyx_L1_error) ++ __pyx_v_node_list->num = __pyx_t_1; + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.add", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":355 +- * self.counter += 1 +- * +- * def remove(self): # <<<<<<<<<<<<<< +- * self.counter -= 1 +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":471 ++ * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) ++ * node_list.num = len(values) ++ * node_list.values = NULL # <<<<<<<<<<<<<< ++ * node_list.keys = NULL ++ * if node_list.num: + */ ++ __pyx_v_node_list->values = NULL; + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove = {"remove", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, METH_O, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove(PyObject *__pyx_self, PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("remove (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(__pyx_self, ((PyObject *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":472 ++ * node_list.num = len(values) ++ * node_list.values = NULL ++ * node_list.keys = NULL # <<<<<<<<<<<<<< ++ * if node_list.num: ++ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) ++ */ ++ __pyx_v_node_list->keys = NULL; + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("remove", 0); ++ /* "vidcutter/libs/pympv/mpv.pyx":473 ++ * node_list.values = NULL ++ * node_list.keys = NULL ++ * if node_list.num: # <<<<<<<<<<<<<< ++ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) ++ * for i, value in enumerate(values): ++ */ ++ __pyx_t_2 = (__pyx_v_node_list->num != 0); ++ if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":356 +- * +- * def remove(self): +- * self.counter -= 1 # <<<<<<<<<<<<<< +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":474 ++ * node_list.keys = NULL ++ * if node_list.num: ++ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) # <<<<<<<<<<<<<< ++ * for i, value in enumerate(values): ++ * format = self._format_for(value) ++ */ ++ __pyx_v_node_list->values = ((struct mpv_node *)malloc((__pyx_v_node_list->num * (sizeof(struct mpv_node))))); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":473 ++ * node_list.values = NULL ++ * node_list.keys = NULL ++ * if node_list.num: # <<<<<<<<<<<<<< ++ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) ++ * for i, value in enumerate(values): ++ */ ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":475 ++ * if node_list.num: ++ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) ++ * for i, value in enumerate(values): # <<<<<<<<<<<<<< ++ * format = self._format_for(value) ++ * node = self._prep_native_value(value, format) ++ */ ++ __Pyx_INCREF(__pyx_int_0); ++ __pyx_t_3 = __pyx_int_0; ++ if (likely(PyList_CheckExact(__pyx_v_values)) || PyTuple_CheckExact(__pyx_v_values)) { ++ __pyx_t_4 = __pyx_v_values; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0; ++ __pyx_t_5 = NULL; ++ } else { ++ __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 475, __pyx_L1_error) ++ } ++ for (;;) { ++ if (likely(!__pyx_t_5)) { ++ if (likely(PyList_CheckExact(__pyx_t_4))) { ++ if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break; ++ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) ++ #else ++ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ #endif ++ } else { ++ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break; ++ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) ++ #else ++ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ #endif ++ } ++ } else { ++ __pyx_t_6 = __pyx_t_5(__pyx_t_4); ++ if (unlikely(!__pyx_t_6)) { ++ PyObject* exc_type = PyErr_Occurred(); ++ if (exc_type) { ++ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); ++ else __PYX_ERR(0, 475, __pyx_L1_error) ++ } ++ break; ++ } ++ __Pyx_GOTREF(__pyx_t_6); ++ } ++ __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); ++ __pyx_t_6 = 0; ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); ++ __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_DECREF(__pyx_t_3); ++ __pyx_t_3 = __pyx_t_6; ++ __pyx_t_6 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":476 ++ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) ++ * for i, value in enumerate(values): ++ * format = self._format_for(value) # <<<<<<<<<<<<<< ++ * node = self._prep_native_value(value, format) ++ * node_list.values[i] = node ++ */ ++ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 476, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_8 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { ++ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); ++ if (likely(__pyx_t_8)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); ++ __Pyx_INCREF(__pyx_t_8); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_7, function); ++ } ++ } ++ __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); ++ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; ++ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __pyx_t_9 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_v_format = __pyx_t_9; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":477 ++ * for i, value in enumerate(values): ++ * format = self._format_for(value) ++ * node = self._prep_native_value(value, format) # <<<<<<<<<<<<<< ++ * node_list.values[i] = node ++ * return node_list ++ */ ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_6); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":478 ++ * format = self._format_for(value) ++ * node = self._prep_native_value(value, format) ++ * node_list.values[i] = node # <<<<<<<<<<<<<< ++ * return node_list + * + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 356, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) ++ (__pyx_v_node_list->values[__pyx_t_10]) = __pyx_v_node; + +- /* "vidcutter/libs/pympv/mpv.pyx":355 +- * self.counter += 1 ++ /* "vidcutter/libs/pympv/mpv.pyx":475 ++ * if node_list.num: ++ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) ++ * for i, value in enumerate(values): # <<<<<<<<<<<<<< ++ * format = self._format_for(value) ++ * node = self._prep_native_value(value, format) ++ */ ++ } ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":479 ++ * node = self._prep_native_value(value, format) ++ * node_list.values[i] = node ++ * return node_list # <<<<<<<<<<<<<< + * +- * def remove(self): # <<<<<<<<<<<<<< +- * self.counter -= 1 ++ * cdef mpv_node_list* _prep_node_map(self, map): ++ */ ++ __pyx_r = __pyx_v_node_list; ++ goto __pyx_L0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":466 ++ * return MPV_FORMAT_NONE + * ++ * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< ++ * cdef mpv_node node ++ * cdef mpv_format format + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_node_list", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __pyx_r = 0; + __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_XDECREF(__pyx_v_i); ++ __Pyx_XDECREF(__pyx_v_value); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":370 +- * +- * @property +- * def api_version(self): # <<<<<<<<<<<<<< +- * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION ++/* "vidcutter/libs/pympv/mpv.pyx":481 ++ * return node_list + * ++ * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< ++ * cdef char* ckey ++ * cdef mpv_node_list* list + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- PyObject *__pyx_r = NULL; ++static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_map) { ++ char *__pyx_v_ckey; ++ struct mpv_node_list *__pyx_v_list; ++ PyObject *__pyx_v_keys = NULL; ++ PyObject *__pyx_v_i = NULL; ++ PyObject *__pyx_v_key = NULL; ++ struct mpv_node_list *__pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; ++ Py_ssize_t __pyx_t_4; ++ int __pyx_t_5; ++ PyObject *(*__pyx_t_6)(PyObject *); ++ PyObject *__pyx_t_7 = NULL; ++ PyObject *__pyx_t_8 = NULL; ++ char *__pyx_t_9; ++ Py_ssize_t __pyx_t_10; ++ Py_ssize_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__get__", 0); ++ __Pyx_RefNannySetupContext("_prep_node_map", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":371 +- * @property +- * def api_version(self): +- * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION # <<<<<<<<<<<<<< +- * +- * @property ++ /* "vidcutter/libs/pympv/mpv.pyx":484 ++ * cdef char* ckey ++ * cdef mpv_node_list* list ++ * list = self._prep_node_list(map.values()) # <<<<<<<<<<<<<< ++ * keys = map.keys() ++ * if not len(keys): + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 484, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_2); +- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); +- __Pyx_GIVEREF(__pyx_t_3); +- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); +- __pyx_t_1 = 0; +- __pyx_t_2 = 0; +- __pyx_t_3 = 0; +- __pyx_r = __pyx_t_4; +- __pyx_t_4 = 0; +- goto __pyx_L0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":370 +- * +- * @property +- * def api_version(self): # <<<<<<<<<<<<<< +- * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION +- * +- */ +- +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.api_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":374 +- * +- * @property +- * def name(self): # <<<<<<<<<<<<<< +- * """Unique name for every context created. +- * +- */ +- +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- char const *__pyx_v_name; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__get__", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":380 +- * """ +- * cdef const char* name +- * assert self._ctx # <<<<<<<<<<<<<< +- * with nogil: +- * name = mpv_client_name(self._ctx) +- */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 380, __pyx_L1_error) ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); + } + } +- #endif +- +- /* "vidcutter/libs/pympv/mpv.pyx":381 +- * cdef const char* name +- * assert self._ctx +- * with nogil: # <<<<<<<<<<<<<< +- * name = mpv_client_name(self._ctx) +- * return _strdec(name) +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":382 +- * assert self._ctx +- * with nogil: +- * name = mpv_client_name(self._ctx) # <<<<<<<<<<<<<< +- * return _strdec(name) +- * +- */ +- __pyx_v_name = mpv_client_name(__pyx_v_self->_ctx); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":381 +- * cdef const char* name +- * assert self._ctx +- * with nogil: # <<<<<<<<<<<<<< +- * name = mpv_client_name(self._ctx) +- * return _strdec(name) +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v_list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":383 +- * with nogil: +- * name = mpv_client_name(self._ctx) +- * return _strdec(name) # <<<<<<<<<<<<<< +- * +- * @property ++ /* "vidcutter/libs/pympv/mpv.pyx":485 ++ * cdef mpv_node_list* list ++ * list = self._prep_node_list(map.values()) ++ * keys = map.keys() # <<<<<<<<<<<<<< ++ * if not len(keys): ++ * return list + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 383, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 383, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 383, __pyx_L1_error) ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_r = __pyx_t_1; ++ __pyx_v_keys = __pyx_t_1; + __pyx_t_1 = 0; +- goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":374 +- * +- * @property +- * def name(self): # <<<<<<<<<<<<<< +- * """Unique name for every context created. +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":486 ++ * list = self._prep_node_list(map.values()) ++ * keys = map.keys() ++ * if not len(keys): # <<<<<<<<<<<<<< ++ * return list ++ * list.keys = malloc(list.num) + */ ++ __pyx_t_4 = PyObject_Length(__pyx_v_keys); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 486, __pyx_L1_error) ++ __pyx_t_5 = ((!(__pyx_t_4 != 0)) != 0); ++ if (__pyx_t_5) { + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":386 +- * +- * @property +- * def time(self): # <<<<<<<<<<<<<< +- * """Internal mpv client time. +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":487 ++ * keys = map.keys() ++ * if not len(keys): ++ * return list # <<<<<<<<<<<<<< ++ * list.keys = malloc(list.num) ++ * for i, key in enumerate(keys): + */ ++ __pyx_r = __pyx_v_list; ++ goto __pyx_L0; + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(PyObject *__pyx_v_self); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ /* "vidcutter/libs/pympv/mpv.pyx":486 ++ * list = self._prep_node_list(map.values()) ++ * keys = map.keys() ++ * if not len(keys): # <<<<<<<<<<<<<< ++ * return list ++ * list.keys = malloc(list.num) ++ */ ++ } + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":488 ++ * if not len(keys): ++ * return list ++ * list.keys = malloc(list.num) # <<<<<<<<<<<<<< ++ * for i, key in enumerate(keys): ++ * key = _strenc(key) ++ */ ++ __pyx_v_list->keys = ((char **)malloc(__pyx_v_list->num)); + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- int64_t __pyx_v_time; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__get__", 0); ++ /* "vidcutter/libs/pympv/mpv.pyx":489 ++ * return list ++ * list.keys = malloc(list.num) ++ * for i, key in enumerate(keys): # <<<<<<<<<<<<<< ++ * key = _strenc(key) ++ * ckey = key ++ */ ++ __Pyx_INCREF(__pyx_int_0); ++ __pyx_t_1 = __pyx_int_0; ++ if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) { ++ __pyx_t_2 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; ++ __pyx_t_6 = NULL; ++ } else { ++ __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 489, __pyx_L1_error) ++ } ++ for (;;) { ++ if (likely(!__pyx_t_6)) { ++ if (likely(PyList_CheckExact(__pyx_t_2))) { ++ if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; ++ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) ++ #else ++ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ #endif ++ } else { ++ if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; ++ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) ++ #else ++ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ #endif ++ } ++ } else { ++ __pyx_t_3 = __pyx_t_6(__pyx_t_2); ++ if (unlikely(!__pyx_t_3)) { ++ PyObject* exc_type = PyErr_Occurred(); ++ if (exc_type) { ++ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); ++ else __PYX_ERR(0, 489, __pyx_L1_error) ++ } ++ break; ++ } ++ __Pyx_GOTREF(__pyx_t_3); ++ } ++ __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3); ++ __pyx_t_3 = 0; ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); ++ __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_1); ++ __pyx_t_1 = __pyx_t_3; ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":394 +- * """ +- * cdef int64_t time +- * assert self._ctx # <<<<<<<<<<<<<< +- * with nogil: +- * time = mpv_get_time_us(self._ctx) ++ /* "vidcutter/libs/pympv/mpv.pyx":490 ++ * list.keys = malloc(list.num) ++ * for i, key in enumerate(keys): ++ * key = _strenc(key) # <<<<<<<<<<<<<< ++ * ckey = key ++ * list.keys[i] = malloc(len(key) + 1) + */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 394, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_strenc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_8 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { ++ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); ++ if (likely(__pyx_t_8)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); ++ __Pyx_INCREF(__pyx_t_8); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_7, function); ++ } + } +- } +- #endif ++ __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key); ++ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_3); ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":395 +- * cdef int64_t time +- * assert self._ctx +- * with nogil: # <<<<<<<<<<<<<< +- * time = mpv_get_time_us(self._ctx) +- * return time ++ /* "vidcutter/libs/pympv/mpv.pyx":491 ++ * for i, key in enumerate(keys): ++ * key = _strenc(key) ++ * ckey = key # <<<<<<<<<<<<<< ++ * list.keys[i] = malloc(len(key) + 1) ++ * strcpy(list.keys[i], ckey) + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_9 = __Pyx_PyObject_AsWritableString(__pyx_v_key); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 491, __pyx_L1_error) ++ __pyx_v_ckey = __pyx_t_9; + +- /* "vidcutter/libs/pympv/mpv.pyx":396 +- * assert self._ctx +- * with nogil: +- * time = mpv_get_time_us(self._ctx) # <<<<<<<<<<<<<< +- * return time ++ /* "vidcutter/libs/pympv/mpv.pyx":492 ++ * key = _strenc(key) ++ * ckey = key ++ * list.keys[i] = malloc(len(key) + 1) # <<<<<<<<<<<<<< ++ * strcpy(list.keys[i], ckey) ++ * return list ++ */ ++ __pyx_t_10 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 492, __pyx_L1_error) ++ __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L1_error) ++ (__pyx_v_list->keys[__pyx_t_11]) = ((char *)malloc((__pyx_t_10 + 1))); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":493 ++ * ckey = key ++ * list.keys[i] = malloc(len(key) + 1) ++ * strcpy(list.keys[i], ckey) # <<<<<<<<<<<<<< ++ * return list + * + */ +- __pyx_v_time = mpv_get_time_us(__pyx_v_self->_ctx); +- } ++ __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error) ++ (void)(strcpy((__pyx_v_list->keys[__pyx_t_10]), __pyx_v_ckey)); + +- /* "vidcutter/libs/pympv/mpv.pyx":395 +- * cdef int64_t time +- * assert self._ctx +- * with nogil: # <<<<<<<<<<<<<< +- * time = mpv_get_time_us(self._ctx) +- * return time ++ /* "vidcutter/libs/pympv/mpv.pyx":489 ++ * return list ++ * list.keys = malloc(list.num) ++ * for i, key in enumerate(keys): # <<<<<<<<<<<<<< ++ * key = _strenc(key) ++ * ckey = key + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } + } ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":397 +- * with nogil: +- * time = mpv_get_time_us(self._ctx) +- * return time # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":494 ++ * list.keys[i] = malloc(len(key) + 1) ++ * strcpy(list.keys[i], ckey) ++ * return list # <<<<<<<<<<<<<< + * +- * def suspend(self): ++ * cdef mpv_node _prep_native_value(self, value, format): + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_v_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; ++ __pyx_r = __pyx_v_list; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":386 +- * +- * @property +- * def time(self): # <<<<<<<<<<<<<< +- * """Internal mpv client time. ++ /* "vidcutter/libs/pympv/mpv.pyx":481 ++ * return node_list + * ++ * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< ++ * cdef char* ckey ++ * cdef mpv_node_list* list + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_node_map", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __pyx_r = 0; + __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_XDECREF(__pyx_v_keys); ++ __Pyx_XDECREF(__pyx_v_i); ++ __Pyx_XDECREF(__pyx_v_key); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":399 +- * return time ++/* "vidcutter/libs/pympv/mpv.pyx":496 ++ * return list + * +- * def suspend(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_suspend""" +- * assert self._ctx ++ * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< ++ * cdef mpv_node node ++ * node.format = format + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1suspend(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_suspend[] = "Wraps: mpv_suspend"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1suspend(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("suspend (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_suspend(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_suspend(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- PyObject *__pyx_r = NULL; ++static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value, PyObject *__pyx_v_format) { ++ struct mpv_node __pyx_v_node; ++ struct mpv_node __pyx_r; + __Pyx_RefNannyDeclarations ++ enum mpv_format __pyx_t_1; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ int __pyx_t_4; ++ PyObject *__pyx_t_5 = NULL; ++ Py_ssize_t __pyx_t_6; ++ char const *__pyx_t_7; ++ int __pyx_t_8; ++ int64_t __pyx_t_9; ++ double __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("suspend", 0); ++ __Pyx_RefNannySetupContext("_prep_native_value", 0); ++ __Pyx_INCREF(__pyx_v_value); + +- /* "vidcutter/libs/pympv/mpv.pyx":401 +- * def suspend(self): +- * """Wraps: mpv_suspend""" +- * assert self._ctx # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_suspend(self._ctx) ++ /* "vidcutter/libs/pympv/mpv.pyx":498 ++ * cdef mpv_node _prep_native_value(self, value, format): ++ * cdef mpv_node node ++ * node.format = format # <<<<<<<<<<<<<< ++ * if format == MPV_FORMAT_STRING: ++ * value = _strenc(value) + */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 401, __pyx_L1_error) +- } +- } +- #endif +- +- /* "vidcutter/libs/pympv/mpv.pyx":402 +- * """Wraps: mpv_suspend""" +- * assert self._ctx +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_suspend(self._ctx) +- * +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_1 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L1_error) ++ __pyx_v_node.format = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":403 +- * assert self._ctx +- * with nogil: +- * mpv_suspend(self._ctx) # <<<<<<<<<<<<<< +- * +- * def resume(self): ++ /* "vidcutter/libs/pympv/mpv.pyx":499 ++ * cdef mpv_node node ++ * node.format = format ++ * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< ++ * value = _strenc(value) ++ * node.u.string = malloc(len(value) + 1) + */ +- mpv_suspend(__pyx_v_self->_ctx); +- } ++ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 499, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":402 +- * """Wraps: mpv_suspend""" +- * assert self._ctx +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_suspend(self._ctx) +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":500 ++ * node.format = format ++ * if format == MPV_FORMAT_STRING: ++ * value = _strenc(value) # <<<<<<<<<<<<<< ++ * node.u.string = malloc(len(value) + 1) ++ * strcpy(node.u.string, value) + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); + } +- } ++ } ++ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3); ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":399 +- * return time +- * +- * def suspend(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_suspend""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":501 ++ * if format == MPV_FORMAT_STRING: ++ * value = _strenc(value) ++ * node.u.string = malloc(len(value) + 1) # <<<<<<<<<<<<<< ++ * strcpy(node.u.string, value) ++ * elif format == MPV_FORMAT_FLAG: + */ ++ __pyx_t_6 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 501, __pyx_L1_error) ++ __pyx_v_node.u.string = ((char *)malloc((__pyx_t_6 + 1))); + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.suspend", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":405 +- * mpv_suspend(self._ctx) +- * +- * def resume(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_resume""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":502 ++ * value = _strenc(value) ++ * node.u.string = malloc(len(value) + 1) ++ * strcpy(node.u.string, value) # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_FLAG: ++ * node.u.flag = 1 if value else 0 + */ ++ __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error) ++ (void)(strcpy(__pyx_v_node.u.string, __pyx_t_7)); + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_3resume(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_2resume[] = "Wraps: mpv_resume"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_3resume(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("resume (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_2resume(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":499 ++ * cdef mpv_node node ++ * node.format = format ++ * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< ++ * value = _strenc(value) ++ * node.u.string = malloc(len(value) + 1) ++ */ ++ goto __pyx_L3; ++ } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2resume(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("resume", 0); ++ /* "vidcutter/libs/pympv/mpv.pyx":503 ++ * node.u.string = malloc(len(value) + 1) ++ * strcpy(node.u.string, value) ++ * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< ++ * node.u.flag = 1 if value else 0 ++ * elif format == MPV_FORMAT_INT64: ++ */ ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 503, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":407 +- * def resume(self): +- * """Wraps: mpv_resume""" +- * assert self._ctx # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_resume(self._ctx) ++ /* "vidcutter/libs/pympv/mpv.pyx":504 ++ * strcpy(node.u.string, value) ++ * elif format == MPV_FORMAT_FLAG: ++ * node.u.flag = 1 if value else 0 # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_INT64: ++ * node.u.int64 = value + */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 407, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 504, __pyx_L1_error) ++ if (__pyx_t_4) { ++ __pyx_t_8 = 1; ++ } else { ++ __pyx_t_8 = 0; + } ++ __pyx_v_node.u.flag = __pyx_t_8; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":503 ++ * node.u.string = malloc(len(value) + 1) ++ * strcpy(node.u.string, value) ++ * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< ++ * node.u.flag = 1 if value else 0 ++ * elif format == MPV_FORMAT_INT64: ++ */ ++ goto __pyx_L3; + } +- #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":408 +- * """Wraps: mpv_resume""" +- * assert self._ctx +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_resume(self._ctx) +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":505 ++ * elif format == MPV_FORMAT_FLAG: ++ * node.u.flag = 1 if value else 0 ++ * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< ++ * node.u.int64 = value ++ * elif format == MPV_FORMAT_DOUBLE: + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 505, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":409 +- * assert self._ctx +- * with nogil: +- * mpv_resume(self._ctx) # <<<<<<<<<<<<<< +- * +- * @_errors ++ /* "vidcutter/libs/pympv/mpv.pyx":506 ++ * node.u.flag = 1 if value else 0 ++ * elif format == MPV_FORMAT_INT64: ++ * node.u.int64 = value # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_DOUBLE: ++ * node.u.double_ = value + */ +- mpv_resume(__pyx_v_self->_ctx); +- } ++ __pyx_t_9 = __Pyx_PyInt_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_9 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) ++ __pyx_v_node.u.int64 = __pyx_t_9; + +- /* "vidcutter/libs/pympv/mpv.pyx":408 +- * """Wraps: mpv_resume""" +- * assert self._ctx +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_resume(self._ctx) +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":505 ++ * elif format == MPV_FORMAT_FLAG: ++ * node.u.flag = 1 if value else 0 ++ * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< ++ * node.u.int64 = value ++ * elif format == MPV_FORMAT_DOUBLE: + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } ++ goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":405 +- * mpv_suspend(self._ctx) +- * +- * def resume(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_resume""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":507 ++ * elif format == MPV_FORMAT_INT64: ++ * node.u.int64 = value ++ * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< ++ * node.u.double_ = value ++ * elif format == MPV_FORMAT_NODE_ARRAY: + */ ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 507, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 507, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (__pyx_t_4) { + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.resume", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":508 ++ * node.u.int64 = value ++ * elif format == MPV_FORMAT_DOUBLE: ++ * node.u.double_ = value # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_NODE_ARRAY: ++ * node.u.list = self._prep_node_list(value) ++ */ ++ __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 508, __pyx_L1_error) ++ __pyx_v_node.u.double_ = __pyx_t_10; + +-/* "vidcutter/libs/pympv/mpv.pyx":412 +- * +- * @_errors +- * def request_event(self, event, enable): # <<<<<<<<<<<<<< +- * """Enable or disable a given event. +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":507 ++ * elif format == MPV_FORMAT_INT64: ++ * node.u.int64 = value ++ * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< ++ * node.u.double_ = value ++ * elif format == MPV_FORMAT_NODE_ARRAY: + */ +- +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_5request_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_4request_event[] = "Enable or disable a given event.\n\n Arguments:\n event - See Events\n enable - True to enable, False to disable\n\n Wraps: mpv_request_event\n "; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_5request_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_event = 0; +- PyObject *__pyx_v_enable = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("request_event (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_event,&__pyx_n_s_enable,0}; +- PyObject* values[2] = {0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, 1); __PYX_ERR(0, 412, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "request_event") < 0)) __PYX_ERR(0, 412, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- } +- __pyx_v_event = values[0]; +- __pyx_v_enable = values[1]; ++ goto __pyx_L3; + } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 412, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4request_event(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_event, __pyx_v_enable); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4request_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_enable) { +- int __pyx_v_enable_i; +- int __pyx_v_err; +- enum mpv_event_id __pyx_v_event_id; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- int __pyx_t_2; +- enum mpv_event_id __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("request_event", 0); ++ /* "vidcutter/libs/pympv/mpv.pyx":509 ++ * elif format == MPV_FORMAT_DOUBLE: ++ * node.u.double_ = value ++ * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< ++ * node.u.list = self._prep_node_list(value) ++ * elif format == MPV_FORMAT_NODE_MAP: ++ */ ++ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 509, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 509, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":421 +- * Wraps: mpv_request_event +- * """ +- * assert self._ctx # <<<<<<<<<<<<<< +- * cdef int enable_i = 1 if enable else 0 +- * cdef int err ++ /* "vidcutter/libs/pympv/mpv.pyx":510 ++ * node.u.double_ = value ++ * elif format == MPV_FORMAT_NODE_ARRAY: ++ * node.u.list = self._prep_node_list(value) # <<<<<<<<<<<<<< ++ * elif format == MPV_FORMAT_NODE_MAP: ++ * node.u.list = self._prep_node_map(value) + */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 421, __pyx_L1_error) +- } +- } +- #endif ++ __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_v_value); + +- /* "vidcutter/libs/pympv/mpv.pyx":422 +- * """ +- * assert self._ctx +- * cdef int enable_i = 1 if enable else 0 # <<<<<<<<<<<<<< +- * cdef int err +- * cdef mpv_event_id event_id = event ++ /* "vidcutter/libs/pympv/mpv.pyx":509 ++ * elif format == MPV_FORMAT_DOUBLE: ++ * node.u.double_ = value ++ * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< ++ * node.u.list = self._prep_node_list(value) ++ * elif format == MPV_FORMAT_NODE_MAP: + */ +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_enable); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 422, __pyx_L1_error) +- if (__pyx_t_2) { +- __pyx_t_1 = 1; +- } else { +- __pyx_t_1 = 0; ++ goto __pyx_L3; + } +- __pyx_v_enable_i = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":424 +- * cdef int enable_i = 1 if enable else 0 +- * cdef int err +- * cdef mpv_event_id event_id = event # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_request_event(self._ctx, event_id, enable_i) ++ /* "vidcutter/libs/pympv/mpv.pyx":511 ++ * elif format == MPV_FORMAT_NODE_ARRAY: ++ * node.u.list = self._prep_node_list(value) ++ * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< ++ * node.u.list = self._prep_node_map(value) ++ * else: + */ +- __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_event)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 424, __pyx_L1_error) +- __pyx_v_event_id = __pyx_t_3; ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 511, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":425 +- * cdef int err +- * cdef mpv_event_id event_id = event +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_request_event(self._ctx, event_id, enable_i) +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":512 ++ * node.u.list = self._prep_node_list(value) ++ * elif format == MPV_FORMAT_NODE_MAP: ++ * node.u.list = self._prep_node_map(value) # <<<<<<<<<<<<<< ++ * else: ++ * node.format = MPV_FORMAT_NONE + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_map(__pyx_v_self, __pyx_v_value); + +- /* "vidcutter/libs/pympv/mpv.pyx":426 +- * cdef mpv_event_id event_id = event +- * with nogil: +- * err = mpv_request_event(self._ctx, event_id, enable_i) # <<<<<<<<<<<<<< +- * return err +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":511 ++ * elif format == MPV_FORMAT_NODE_ARRAY: ++ * node.u.list = self._prep_node_list(value) ++ * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< ++ * node.u.list = self._prep_node_map(value) ++ * else: + */ +- __pyx_v_err = mpv_request_event(__pyx_v_self->_ctx, __pyx_v_event_id, __pyx_v_enable_i); +- } ++ goto __pyx_L3; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":425 +- * cdef int err +- * cdef mpv_event_id event_id = event +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_request_event(self._ctx, event_id, enable_i) +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":514 ++ * node.u.list = self._prep_node_map(value) ++ * else: ++ * node.format = MPV_FORMAT_NONE # <<<<<<<<<<<<<< ++ * return node ++ * + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } ++ /*else*/ { ++ __pyx_v_node.format = MPV_FORMAT_NONE; + } ++ __pyx_L3:; + +- /* "vidcutter/libs/pympv/mpv.pyx":427 +- * with nogil: +- * err = mpv_request_event(self._ctx, event_id, enable_i) +- * return err # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":515 ++ * else: ++ * node.format = MPV_FORMAT_NONE ++ * return node # <<<<<<<<<<<<<< + * +- * @_errors ++ * cdef _free_native_value(self, mpv_node node): + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_r = __pyx_t_4; +- __pyx_t_4 = 0; ++ __pyx_r = __pyx_v_node; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":412 +- * +- * @_errors +- * def request_event(self, event, enable): # <<<<<<<<<<<<<< +- * """Enable or disable a given event. ++ /* "vidcutter/libs/pympv/mpv.pyx":496 ++ * return list + * ++ * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< ++ * cdef mpv_node node ++ * node.format = format + */ + + /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_native_value", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __Pyx_pretend_to_initialize(&__pyx_r); + __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_XDECREF(__pyx_v_value); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":430 ++/* "vidcutter/libs/pympv/mpv.pyx":517 ++ * return node + * +- * @_errors +- * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< +- * """Wraps: mpv_request_log_messages""" +- * assert self._ctx ++ * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< ++ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): ++ * for i in range(node.u.list.num): + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_7set_log_level(PyObject *__pyx_v_self, PyObject *__pyx_v_loglevel); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_6set_log_level[] = "Wraps: mpv_request_log_messages"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_7set_log_level(PyObject *__pyx_v_self, PyObject *__pyx_v_loglevel) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_log_level (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_6set_log_level(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_loglevel)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6set_log_level(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_loglevel) { +- char const *__pyx_v_loglevel_c; +- int __pyx_v_err; ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, struct mpv_node __pyx_v_node) { ++ int __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- char const *__pyx_t_4; ++ int __pyx_t_1; ++ int __pyx_t_2; ++ int __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; ++ int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("set_log_level", 0); +- __Pyx_INCREF(__pyx_v_loglevel); ++ __Pyx_RefNannySetupContext("_free_native_value", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":432 +- * def set_log_level(self, loglevel): +- * """Wraps: mpv_request_log_messages""" +- * assert self._ctx # <<<<<<<<<<<<<< +- * loglevel = _strenc(loglevel) +- * cdef const char* loglevel_c = loglevel ++ /* "vidcutter/libs/pympv/mpv.pyx":518 ++ * ++ * cdef _free_native_value(self, mpv_node node): ++ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< ++ * for i in range(node.u.list.num): ++ * self._free_native_value(node.u.list.values[i]) + */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 432, __pyx_L1_error) +- } +- } +- #endif ++ switch (__pyx_v_node.format) { ++ case MPV_FORMAT_NODE_ARRAY: ++ case MPV_FORMAT_NODE_MAP: + +- /* "vidcutter/libs/pympv/mpv.pyx":433 +- * """Wraps: mpv_request_log_messages""" +- * assert self._ctx +- * loglevel = _strenc(loglevel) # <<<<<<<<<<<<<< +- * cdef const char* loglevel_c = loglevel +- * cdef int err ++ /* "vidcutter/libs/pympv/mpv.pyx":519 ++ * cdef _free_native_value(self, mpv_node node): ++ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): ++ * for i in range(node.u.list.num): # <<<<<<<<<<<<<< ++ * self._free_native_value(node.u.list.values[i]) ++ * free(node.u.list.values) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 433, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); ++ __pyx_t_1 = __pyx_v_node.u.list->num; ++ __pyx_t_2 = __pyx_t_1; ++ for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { ++ __pyx_v_i = __pyx_t_3; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":520 ++ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): ++ * for i in range(node.u.list.num): ++ * self._free_native_value(node.u.list.values[i]) # <<<<<<<<<<<<<< ++ * free(node.u.list.values) ++ * if node.format == MPV_FORMAT_NODE_MAP: ++ */ ++ __pyx_t_4 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, (__pyx_v_node.u.list->values[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } +- } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_loglevel) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_loglevel); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF_SET(__pyx_v_loglevel, __pyx_t_1); +- __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":434 +- * assert self._ctx +- * loglevel = _strenc(loglevel) +- * cdef const char* loglevel_c = loglevel # <<<<<<<<<<<<<< +- * cdef int err +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":521 ++ * for i in range(node.u.list.num): ++ * self._free_native_value(node.u.list.values[i]) ++ * free(node.u.list.values) # <<<<<<<<<<<<<< ++ * if node.format == MPV_FORMAT_NODE_MAP: ++ * for i in range(node.u.list.num): + */ +- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_loglevel); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 434, __pyx_L1_error) +- __pyx_v_loglevel_c = __pyx_t_4; ++ free(__pyx_v_node.u.list->values); + +- /* "vidcutter/libs/pympv/mpv.pyx":436 +- * cdef const char* loglevel_c = loglevel +- * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_request_log_messages(self._ctx, loglevel_c) +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":522 ++ * self._free_native_value(node.u.list.values[i]) ++ * free(node.u.list.values) ++ * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< ++ * for i in range(node.u.list.num): ++ * free(node.u.list.keys[i]) + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_5 = ((__pyx_v_node.format == MPV_FORMAT_NODE_MAP) != 0); ++ if (__pyx_t_5) { + +- /* "vidcutter/libs/pympv/mpv.pyx":437 +- * cdef int err +- * with nogil: +- * err = mpv_request_log_messages(self._ctx, loglevel_c) # <<<<<<<<<<<<<< +- * return err +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":523 ++ * free(node.u.list.values) ++ * if node.format == MPV_FORMAT_NODE_MAP: ++ * for i in range(node.u.list.num): # <<<<<<<<<<<<<< ++ * free(node.u.list.keys[i]) ++ * free(node.u.list.keys) + */ +- __pyx_v_err = mpv_request_log_messages(__pyx_v_self->_ctx, __pyx_v_loglevel_c); +- } ++ __pyx_t_1 = __pyx_v_node.u.list->num; ++ __pyx_t_2 = __pyx_t_1; ++ for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { ++ __pyx_v_i = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":436 +- * cdef const char* loglevel_c = loglevel +- * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_request_log_messages(self._ctx, loglevel_c) +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":524 ++ * if node.format == MPV_FORMAT_NODE_MAP: ++ * for i in range(node.u.list.num): ++ * free(node.u.list.keys[i]) # <<<<<<<<<<<<<< ++ * free(node.u.list.keys) ++ * free(node.u.list) + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; ++ free((__pyx_v_node.u.list->keys[__pyx_v_i])); + } +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":438 +- * with nogil: +- * err = mpv_request_log_messages(self._ctx, loglevel_c) +- * return err # <<<<<<<<<<<<<< +- * +- * @_errors ++ /* "vidcutter/libs/pympv/mpv.pyx":525 ++ * for i in range(node.u.list.num): ++ * free(node.u.list.keys[i]) ++ * free(node.u.list.keys) # <<<<<<<<<<<<<< ++ * free(node.u.list) ++ * elif node.format == MPV_FORMAT_STRING: + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ free(__pyx_v_node.u.list->keys); + +- /* "vidcutter/libs/pympv/mpv.pyx":430 +- * +- * @_errors +- * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< +- * """Wraps: mpv_request_log_messages""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":522 ++ * self._free_native_value(node.u.list.values[i]) ++ * free(node.u.list.values) ++ * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< ++ * for i in range(node.u.list.num): ++ * free(node.u.list.keys[i]) + */ ++ } + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_loglevel); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":526 ++ * free(node.u.list.keys[i]) ++ * free(node.u.list.keys) ++ * free(node.u.list) # <<<<<<<<<<<<<< ++ * elif node.format == MPV_FORMAT_STRING: ++ * free(node.u.string) ++ */ ++ free(__pyx_v_node.u.list); + +-/* "vidcutter/libs/pympv/mpv.pyx":441 ++ /* "vidcutter/libs/pympv/mpv.pyx":518 + * +- * @_errors +- * def load_config(self, filename): # <<<<<<<<<<<<<< +- * """Wraps: mpv_load_config_file""" +- * assert self._ctx ++ * cdef _free_native_value(self, mpv_node node): ++ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< ++ * for i in range(node.u.list.num): ++ * self._free_native_value(node.u.list.values[i]) + */ ++ break; ++ case MPV_FORMAT_STRING: + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9load_config(PyObject *__pyx_v_self, PyObject *__pyx_v_filename); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_8load_config[] = "Wraps: mpv_load_config_file"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9load_config(PyObject *__pyx_v_self, PyObject *__pyx_v_filename) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("load_config (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_8load_config(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_filename)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8load_config(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_filename) { +- char const *__pyx_v__filename; ++ /* "vidcutter/libs/pympv/mpv.pyx":528 ++ * free(node.u.list) ++ * elif node.format == MPV_FORMAT_STRING: ++ * free(node.u.string) # <<<<<<<<<<<<<< ++ * ++ * def command(self, *cmdlist, asynchronous=False, data=None): ++ */ ++ free(__pyx_v_node.u.string); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":527 ++ * free(node.u.list.keys) ++ * free(node.u.list) ++ * elif node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< ++ * free(node.u.string) ++ * ++ */ ++ break; ++ default: break; ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":517 ++ * return node ++ * ++ * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< ++ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): ++ * for i in range(node.u.list.num): ++ */ ++ ++ /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context._free_native_value", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* "vidcutter/libs/pympv/mpv.pyx":530 ++ * free(node.u.string) ++ * ++ * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< ++ * """Send a command to mpv. ++ * ++ */ ++ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_8command[] = "Send a command to mpv.\n\n Non-async success returns the command's response data, otherwise None\n\n Arguments:\n Accepts parameters as args\n\n Keyword Arguments:\n asynchronous: True will return right away, status comes in as MPV_EVENT_COMMAND_REPLY\n data: Only valid if async, gets sent back as reply_userdata in the Event\n\n Wraps: mpv_command_node and mpv_command_node_async\n "; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_asynchronous = 0; ++ PyObject *__pyx_v_data = 0; ++ PyObject *__pyx_v_cmdlist = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("command (wrapper)", 0); ++ if (PyTuple_GET_SIZE(__pyx_args) > 0) { ++ __pyx_v_cmdlist = PyTuple_GetSlice(__pyx_args, 0, PyTuple_GET_SIZE(__pyx_args)); ++ if (unlikely(!__pyx_v_cmdlist)) { ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ } ++ __Pyx_GOTREF(__pyx_v_cmdlist); ++ } else { ++ __pyx_v_cmdlist = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); ++ } ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asynchronous,&__pyx_n_s_data,0}; ++ PyObject* values[2] = {0,0}; ++ values[0] = ((PyObject *)Py_False); ++ values[1] = ((PyObject *)Py_None); ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ default: ++ case 0: break; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ if (kw_args > 0 && likely(kw_args <= 2)) { ++ Py_ssize_t index; ++ for (index = 0; index < 2 && kw_args > 0; index++) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); ++ if (value) { values[index] = value; kw_args--; } ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "command") < 0)) __PYX_ERR(0, 530, __pyx_L3_error) ++ } ++ } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { ++ goto __pyx_L5_argtuple_error; ++ } else { ++ } ++ __pyx_v_asynchronous = values[0]; ++ __pyx_v_data = values[1]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("command", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 530, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_DECREF(__pyx_v_cmdlist); __pyx_v_cmdlist = 0; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_asynchronous, __pyx_v_data, __pyx_v_cmdlist); ++ ++ /* function exit code */ ++ __Pyx_XDECREF(__pyx_v_cmdlist); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data, PyObject *__pyx_v_cmdlist) { ++ struct mpv_node __pyx_v_node; ++ struct mpv_node __pyx_v_noderesult; + int __pyx_v_err; ++ uint64_t __pyx_v_data_id; ++ PyObject *__pyx_v_result = NULL; ++ PyObject *__pyx_v_userdatas = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; +- char const *__pyx_t_4; ++ uint64_t __pyx_t_4; ++ int __pyx_t_5; ++ int __pyx_t_6; ++ int __pyx_t_7; ++ int __pyx_t_8; ++ char const *__pyx_t_9; ++ PyObject *__pyx_t_10 = NULL; ++ PyObject *__pyx_t_11 = NULL; ++ PyObject *__pyx_t_12 = NULL; ++ PyObject *__pyx_t_13 = NULL; ++ PyObject *__pyx_t_14 = NULL; ++ PyObject *__pyx_t_15 = NULL; ++ PyObject *__pyx_t_16 = NULL; ++ PyObject *__pyx_t_17 = NULL; ++ char const *__pyx_t_18; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("load_config", 0); +- __Pyx_INCREF(__pyx_v_filename); ++ __Pyx_RefNannySetupContext("command", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":443 +- * def load_config(self, filename): +- * """Wraps: mpv_load_config_file""" ++ /* "vidcutter/libs/pympv/mpv.pyx":544 ++ * Wraps: mpv_command_node and mpv_command_node_async ++ * """ + * assert self._ctx # <<<<<<<<<<<<<< +- * filename = _strenc(filename) +- * cdef const char* _filename = filename ++ * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) ++ * cdef mpv_node noderesult + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 443, __pyx_L1_error) ++ __PYX_ERR(0, 544, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":444 +- * """Wraps: mpv_load_config_file""" ++ /* "vidcutter/libs/pympv/mpv.pyx":545 ++ * """ + * assert self._ctx +- * filename = _strenc(filename) # <<<<<<<<<<<<<< +- * cdef const char* _filename = filename ++ * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) # <<<<<<<<<<<<<< ++ * cdef mpv_node noderesult + * cdef int err + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 444, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +@@ -9672,679 +10373,724 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8load_config(struct __p + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_cmdlist) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cmdlist); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1); +- __pyx_t_1 = 0; ++ __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_cmdlist, __pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":445 +- * assert self._ctx +- * filename = _strenc(filename) +- * cdef const char* _filename = filename # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":549 + * cdef int err +- * with nogil: ++ * cdef uint64_t data_id ++ * result = None # <<<<<<<<<<<<<< ++ * try: ++ * data_id = id(data) + */ +- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 445, __pyx_L1_error) +- __pyx_v__filename = __pyx_t_4; ++ __Pyx_INCREF(Py_None); ++ __pyx_v_result = Py_None; + +- /* "vidcutter/libs/pympv/mpv.pyx":447 +- * cdef const char* _filename = filename +- * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_load_config_file(self._ctx, _filename) +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":550 ++ * cdef uint64_t data_id ++ * result = None ++ * try: # <<<<<<<<<<<<<< ++ * data_id = id(data) ++ * if not asynchronous: + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":448 +- * cdef int err +- * with nogil: +- * err = mpv_load_config_file(self._ctx, _filename) # <<<<<<<<<<<<<< +- * return err +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":551 ++ * result = None ++ * try: ++ * data_id = id(data) # <<<<<<<<<<<<<< ++ * if not asynchronous: ++ * with nogil: + */ +- __pyx_v_err = mpv_load_config_file(__pyx_v_self->_ctx, __pyx_v__filename); +- } ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_4 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 551, __pyx_L4_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_data_id = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":447 +- * cdef const char* _filename = filename +- * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_load_config_file(self._ctx, _filename) +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":552 ++ * try: ++ * data_id = id(data) ++ * if not asynchronous: # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_command_node(self._ctx, &node, &noderesult) + */ +- /*finally:*/ { +- /*normal exit:*/{ ++ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 552, __pyx_L4_error) ++ __pyx_t_6 = ((!__pyx_t_5) != 0); ++ if (__pyx_t_6) { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":553 ++ * data_id = id(data) ++ * if not asynchronous: ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_command_node(self._ctx, &node, &noderesult) ++ * try: ++ */ ++ { + #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); + #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":449 +- * with nogil: +- * err = mpv_load_config_file(self._ctx, _filename) +- * return err # <<<<<<<<<<<<<< +- * +- * def _format_for(self, value): ++ /* "vidcutter/libs/pympv/mpv.pyx":554 ++ * if not asynchronous: ++ * with nogil: ++ * err = mpv_command_node(self._ctx, &node, &noderesult) # <<<<<<<<<<<<<< ++ * try: ++ * result = _convert_node_value(noderesult) if err >= 0 else None + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __pyx_v_err = mpv_command_node(__pyx_v_self->_ctx, (&__pyx_v_node), (&__pyx_v_noderesult)); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":441 +- * +- * @_errors +- * def load_config(self, filename): # <<<<<<<<<<<<<< +- * """Wraps: mpv_load_config_file""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":553 ++ * data_id = id(data) ++ * if not asynchronous: ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_command_node(self._ctx, &node, &noderesult) ++ * try: + */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L9; ++ } ++ __pyx_L9:; ++ } ++ } + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.load_config", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_filename); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":451 +- * return err +- * +- * def _format_for(self, value): # <<<<<<<<<<<<<< +- * if isinstance(value, basestring): +- * return MPV_FORMAT_STRING ++ /* "vidcutter/libs/pympv/mpv.pyx":555 ++ * with nogil: ++ * err = mpv_command_node(self._ctx, &node, &noderesult) ++ * try: # <<<<<<<<<<<<<< ++ * result = _convert_node_value(noderesult) if err >= 0 else None ++ * finally: + */ ++ /*try:*/ { + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11_format_for(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11_format_for(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("_format_for (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_10_format_for(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_value)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10_format_for(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- int __pyx_t_2; +- PyObject *__pyx_t_3 = NULL; +- int __pyx_t_4; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_format_for", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":452 +- * +- * def _format_for(self, value): +- * if isinstance(value, basestring): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_STRING +- * elif isinstance(value, bool): ++ /* "vidcutter/libs/pympv/mpv.pyx":556 ++ * err = mpv_command_node(self._ctx, &node, &noderesult) ++ * try: ++ * result = _convert_node_value(noderesult) if err >= 0 else None # <<<<<<<<<<<<<< ++ * finally: ++ * with nogil: + */ +- __pyx_t_1 = __Pyx_PyBaseString_Check(__pyx_v_value); +- __pyx_t_2 = (__pyx_t_1 != 0); +- if (__pyx_t_2) { ++ if (((__pyx_v_err >= 0) != 0)) { ++ __pyx_t_2 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_noderesult); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L11_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_1 = __pyx_t_2; ++ __pyx_t_2 = 0; ++ } else { ++ __Pyx_INCREF(Py_None); ++ __pyx_t_1 = Py_None; ++ } ++ __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1); ++ __pyx_t_1 = 0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":453 +- * def _format_for(self, value): +- * if isinstance(value, basestring): +- * return MPV_FORMAT_STRING # <<<<<<<<<<<<<< +- * elif isinstance(value, bool): +- * return MPV_FORMAT_FLAG ++ /* "vidcutter/libs/pympv/mpv.pyx":558 ++ * result = _convert_node_value(noderesult) if err >= 0 else None ++ * finally: ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_free_node_contents(&noderesult) ++ * else: + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":452 +- * +- * def _format_for(self, value): +- * if isinstance(value, basestring): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_STRING +- * elif isinstance(value, bool): ++ /* "vidcutter/libs/pympv/mpv.pyx":559 ++ * finally: ++ * with nogil: ++ * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< ++ * else: ++ * userdatas = self.reply_userdata.get(data_id, None) + */ +- } ++ mpv_free_node_contents((&__pyx_v_noderesult)); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":454 +- * if isinstance(value, basestring): +- * return MPV_FORMAT_STRING +- * elif isinstance(value, bool): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_FLAG +- * elif isinstance(value, int): ++ /* "vidcutter/libs/pympv/mpv.pyx":558 ++ * result = _convert_node_value(noderesult) if err >= 0 else None ++ * finally: ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_free_node_contents(&noderesult) ++ * else: + */ +- __pyx_t_3 = ((PyObject*)&PyBool_Type); +- __Pyx_INCREF(__pyx_t_3); +- __pyx_t_2 = PyObject_IsInstance(__pyx_v_value, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 454, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_1 = (__pyx_t_2 != 0); +- if (__pyx_t_1) { ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L15; ++ } ++ __pyx_L15:; ++ } ++ } ++ goto __pyx_L12; ++ } ++ __pyx_L11_error:; ++ /*exception exit:*/{ ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); ++ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); ++ __Pyx_XGOTREF(__pyx_t_10); ++ __Pyx_XGOTREF(__pyx_t_11); ++ __Pyx_XGOTREF(__pyx_t_12); ++ __Pyx_XGOTREF(__pyx_t_13); ++ __Pyx_XGOTREF(__pyx_t_14); ++ __Pyx_XGOTREF(__pyx_t_15); ++ __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; ++ { ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":455 +- * return MPV_FORMAT_STRING +- * elif isinstance(value, bool): +- * return MPV_FORMAT_FLAG # <<<<<<<<<<<<<< +- * elif isinstance(value, int): +- * return MPV_FORMAT_INT64 ++ /* "vidcutter/libs/pympv/mpv.pyx":559 ++ * finally: ++ * with nogil: ++ * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< ++ * else: ++ * userdatas = self.reply_userdata.get(data_id, None) + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ mpv_free_node_contents((&__pyx_v_noderesult)); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":454 +- * if isinstance(value, basestring): +- * return MPV_FORMAT_STRING +- * elif isinstance(value, bool): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_FLAG +- * elif isinstance(value, int): ++ /* "vidcutter/libs/pympv/mpv.pyx":558 ++ * result = _convert_node_value(noderesult) if err >= 0 else None ++ * finally: ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_free_node_contents(&noderesult) ++ * else: + */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":456 +- * elif isinstance(value, bool): +- * return MPV_FORMAT_FLAG +- * elif isinstance(value, int): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_INT64 +- * elif isinstance(value, float): +- */ +- __pyx_t_1 = PyInt_Check(__pyx_v_value); +- __pyx_t_2 = (__pyx_t_1 != 0); +- if (__pyx_t_2) { ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L20; ++ } ++ __pyx_L20:; ++ } ++ } ++ } ++ if (PY_MAJOR_VERSION >= 3) { ++ __Pyx_XGIVEREF(__pyx_t_13); ++ __Pyx_XGIVEREF(__pyx_t_14); ++ __Pyx_XGIVEREF(__pyx_t_15); ++ __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); ++ } ++ __Pyx_XGIVEREF(__pyx_t_10); ++ __Pyx_XGIVEREF(__pyx_t_11); ++ __Pyx_XGIVEREF(__pyx_t_12); ++ __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); ++ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; ++ __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; ++ goto __pyx_L4_error; ++ } ++ __pyx_L12:; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":457 +- * return MPV_FORMAT_FLAG +- * elif isinstance(value, int): +- * return MPV_FORMAT_INT64 # <<<<<<<<<<<<<< +- * elif isinstance(value, float): +- * return MPV_FORMAT_DOUBLE ++ /* "vidcutter/libs/pympv/mpv.pyx":552 ++ * try: ++ * data_id = id(data) ++ * if not asynchronous: # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_command_node(self._ctx, &node, &noderesult) + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ goto __pyx_L6; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":456 +- * elif isinstance(value, bool): +- * return MPV_FORMAT_FLAG +- * elif isinstance(value, int): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_INT64 +- * elif isinstance(value, float): ++ /* "vidcutter/libs/pympv/mpv.pyx":561 ++ * mpv_free_node_contents(&noderesult) ++ * else: ++ * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< ++ * if userdatas is None: ++ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) + */ +- } ++ /*else*/ { ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_16 = NULL; ++ __pyx_t_8 = 0; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_16)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_16); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ __pyx_t_8 = 1; ++ } ++ } ++ #if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(__pyx_t_2)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; ++ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ } else ++ #endif ++ #if CYTHON_FAST_PYCCALL ++ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; ++ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ } else ++ #endif ++ { ++ __pyx_t_17 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_17); ++ if (__pyx_t_16) { ++ __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL; ++ } ++ __Pyx_GIVEREF(__pyx_t_3); ++ PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_8, __pyx_t_3); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_8, Py_None); ++ __pyx_t_3 = 0; ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; ++ } ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v_userdatas = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":458 +- * elif isinstance(value, int): +- * return MPV_FORMAT_INT64 +- * elif isinstance(value, float): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_DOUBLE +- * elif isinstance(value, (tuple, list)): ++ /* "vidcutter/libs/pympv/mpv.pyx":562 ++ * else: ++ * userdatas = self.reply_userdata.get(data_id, None) ++ * if userdatas is None: # <<<<<<<<<<<<<< ++ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() + */ +- __pyx_t_2 = PyFloat_Check(__pyx_v_value); +- __pyx_t_1 = (__pyx_t_2 != 0); +- if (__pyx_t_1) { ++ __pyx_t_6 = (__pyx_v_userdatas == Py_None); ++ __pyx_t_5 = (__pyx_t_6 != 0); ++ if (__pyx_t_5) { + +- /* "vidcutter/libs/pympv/mpv.pyx":459 +- * return MPV_FORMAT_INT64 +- * elif isinstance(value, float): +- * return MPV_FORMAT_DOUBLE # <<<<<<<<<<<<<< +- * elif isinstance(value, (tuple, list)): +- * return MPV_FORMAT_NODE_ARRAY ++ /* "vidcutter/libs/pympv/mpv.pyx":563 ++ * userdatas = self.reply_userdata.get(data_id, None) ++ * if userdatas is None: ++ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< ++ * userdatas.add() ++ * with nogil: + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_17 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_17)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_17); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_17, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); ++ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 563, __pyx_L4_error) ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":458 +- * elif isinstance(value, int): +- * return MPV_FORMAT_INT64 +- * elif isinstance(value, float): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_DOUBLE +- * elif isinstance(value, (tuple, list)): ++ /* "vidcutter/libs/pympv/mpv.pyx":562 ++ * else: ++ * userdatas = self.reply_userdata.get(data_id, None) ++ * if userdatas is None: # <<<<<<<<<<<<<< ++ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() + */ +- } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":460 +- * elif isinstance(value, float): +- * return MPV_FORMAT_DOUBLE +- * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_NODE_ARRAY +- * elif isinstance(value, dict): ++ /* "vidcutter/libs/pympv/mpv.pyx":564 ++ * if userdatas is None: ++ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_command_node_async(self._ctx, data_id, &node) + */ +- __pyx_t_2 = PyTuple_Check(__pyx_v_value); +- __pyx_t_4 = (__pyx_t_2 != 0); +- if (!__pyx_t_4) { +- } else { +- __pyx_t_1 = __pyx_t_4; +- goto __pyx_L4_bool_binop_done; +- } +- __pyx_t_4 = PyList_Check(__pyx_v_value); +- __pyx_t_2 = (__pyx_t_4 != 0); +- __pyx_t_1 = __pyx_t_2; +- __pyx_L4_bool_binop_done:; +- __pyx_t_2 = (__pyx_t_1 != 0); +- if (__pyx_t_2) { ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_17 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_17)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_17); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":461 +- * return MPV_FORMAT_DOUBLE +- * elif isinstance(value, (tuple, list)): +- * return MPV_FORMAT_NODE_ARRAY # <<<<<<<<<<<<<< +- * elif isinstance(value, dict): +- * return MPV_FORMAT_NODE_MAP ++ /* "vidcutter/libs/pympv/mpv.pyx":565 ++ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_command_node_async(self._ctx, data_id, &node) ++ * finally: + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":460 +- * elif isinstance(value, float): +- * return MPV_FORMAT_DOUBLE +- * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_NODE_ARRAY +- * elif isinstance(value, dict): ++ /* "vidcutter/libs/pympv/mpv.pyx":566 ++ * userdatas.add() ++ * with nogil: ++ * err = mpv_command_node_async(self._ctx, data_id, &node) # <<<<<<<<<<<<<< ++ * finally: ++ * self._free_native_value(node) ++ */ ++ __pyx_v_err = mpv_command_node_async(__pyx_v_self->_ctx, __pyx_v_data_id, (&__pyx_v_node)); ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":565 ++ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_command_node_async(self._ctx, data_id, &node) ++ * finally: + */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L24; ++ } ++ __pyx_L24:; ++ } ++ } ++ } ++ __pyx_L6:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":462 +- * elif isinstance(value, (tuple, list)): +- * return MPV_FORMAT_NODE_ARRAY +- * elif isinstance(value, dict): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_NODE_MAP +- * return MPV_FORMAT_NONE ++ /* "vidcutter/libs/pympv/mpv.pyx":568 ++ * err = mpv_command_node_async(self._ctx, data_id, &node) ++ * finally: ++ * self._free_native_value(node) # <<<<<<<<<<<<<< ++ * if err < 0: ++ * raise MPVError(err) + */ +- __pyx_t_2 = PyDict_Check(__pyx_v_value); +- __pyx_t_1 = (__pyx_t_2 != 0); +- if (__pyx_t_1) { ++ /*finally:*/ { ++ /*normal exit:*/{ ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ goto __pyx_L5; ++ } ++ __pyx_L4_error:; ++ /*exception exit:*/{ ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; ++ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; ++ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); ++ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13); ++ __Pyx_XGOTREF(__pyx_t_15); ++ __Pyx_XGOTREF(__pyx_t_14); ++ __Pyx_XGOTREF(__pyx_t_13); ++ __Pyx_XGOTREF(__pyx_t_12); ++ __Pyx_XGOTREF(__pyx_t_11); ++ __Pyx_XGOTREF(__pyx_t_10); ++ __pyx_t_8 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_18 = __pyx_filename; ++ { ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L26_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ } ++ if (PY_MAJOR_VERSION >= 3) { ++ __Pyx_XGIVEREF(__pyx_t_12); ++ __Pyx_XGIVEREF(__pyx_t_11); ++ __Pyx_XGIVEREF(__pyx_t_10); ++ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); ++ } ++ __Pyx_XGIVEREF(__pyx_t_15); ++ __Pyx_XGIVEREF(__pyx_t_14); ++ __Pyx_XGIVEREF(__pyx_t_13); ++ __Pyx_ErrRestore(__pyx_t_15, __pyx_t_14, __pyx_t_13); ++ __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; ++ __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_18; ++ goto __pyx_L1_error; ++ __pyx_L26_error:; ++ if (PY_MAJOR_VERSION >= 3) { ++ __Pyx_XGIVEREF(__pyx_t_12); ++ __Pyx_XGIVEREF(__pyx_t_11); ++ __Pyx_XGIVEREF(__pyx_t_10); ++ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); ++ } ++ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; ++ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; ++ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; ++ __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; ++ goto __pyx_L1_error; ++ } ++ __pyx_L5:; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":463 +- * return MPV_FORMAT_NODE_ARRAY +- * elif isinstance(value, dict): +- * return MPV_FORMAT_NODE_MAP # <<<<<<<<<<<<<< +- * return MPV_FORMAT_NONE ++ /* "vidcutter/libs/pympv/mpv.pyx":569 ++ * finally: ++ * self._free_native_value(node) ++ * if err < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(err) ++ * return result ++ */ ++ __pyx_t_5 = ((__pyx_v_err < 0) != 0); ++ if (unlikely(__pyx_t_5)) { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":570 ++ * self._free_native_value(node) ++ * if err < 0: ++ * raise MPVError(err) # <<<<<<<<<<<<<< ++ * return result + * + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 570, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_17); ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_17) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __PYX_ERR(0, 570, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":462 +- * elif isinstance(value, (tuple, list)): +- * return MPV_FORMAT_NODE_ARRAY +- * elif isinstance(value, dict): # <<<<<<<<<<<<<< +- * return MPV_FORMAT_NODE_MAP +- * return MPV_FORMAT_NONE ++ /* "vidcutter/libs/pympv/mpv.pyx":569 ++ * finally: ++ * self._free_native_value(node) ++ * if err < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(err) ++ * return result + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":464 +- * elif isinstance(value, dict): +- * return MPV_FORMAT_NODE_MAP +- * return MPV_FORMAT_NONE # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":571 ++ * if err < 0: ++ * raise MPVError(err) ++ * return result # <<<<<<<<<<<<<< + * +- * cdef mpv_node_list* _prep_node_list(self, values): ++ * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 464, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; ++ __Pyx_INCREF(__pyx_v_result); ++ __pyx_r = __pyx_v_result; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":451 +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":530 ++ * free(node.u.string) ++ * ++ * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< ++ * """Send a command to mpv. + * +- * def _format_for(self, value): # <<<<<<<<<<<<<< +- * if isinstance(value, basestring): +- * return MPV_FORMAT_STRING + */ + + /* function exit code */ + __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context._format_for", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_16); ++ __Pyx_XDECREF(__pyx_t_17); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_result); ++ __Pyx_XDECREF(__pyx_v_userdatas); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":466 +- * return MPV_FORMAT_NONE ++/* "vidcutter/libs/pympv/mpv.pyx":574 ++ * ++ * @_errors ++ * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< ++ * """Gets the value of a property asynchronously. + * +- * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< +- * cdef mpv_node node +- * cdef mpv_format format + */ + +-static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_values) { +- struct mpv_node __pyx_v_node; +- enum mpv_format __pyx_v_format; +- struct mpv_node_list *__pyx_v_node_list; +- PyObject *__pyx_v_i = NULL; +- PyObject *__pyx_v_value = NULL; +- struct mpv_node_list *__pyx_r; +- __Pyx_RefNannyDeclarations +- Py_ssize_t __pyx_t_1; +- int __pyx_t_2; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *(*__pyx_t_5)(PyObject *); +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- PyObject *__pyx_t_8 = NULL; +- enum mpv_format __pyx_t_9; +- Py_ssize_t __pyx_t_10; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_10get_property_async[] = "Gets the value of a property asynchronously.\n\n Arguments:\n prop: Property to get the value of.\n\n Keyword arguments:\n data: Value to be passed into the reply_userdata of the response event.\n Wraps: mpv_get_property_async"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_prop = 0; ++ PyObject *__pyx_v_data = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_prep_node_list", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":469 +- * cdef mpv_node node +- * cdef mpv_format format +- * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) # <<<<<<<<<<<<<< +- * node_list.num = len(values) +- * node_list.values = NULL +- */ +- __pyx_v_node_list = ((struct mpv_node_list *)malloc((sizeof(struct mpv_node_list)))); +- +- /* "vidcutter/libs/pympv/mpv.pyx":470 +- * cdef mpv_format format +- * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) +- * node_list.num = len(values) # <<<<<<<<<<<<<< +- * node_list.values = NULL +- * node_list.keys = NULL +- */ +- __pyx_t_1 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 470, __pyx_L1_error) +- __pyx_v_node_list->num = __pyx_t_1; +- +- /* "vidcutter/libs/pympv/mpv.pyx":471 +- * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) +- * node_list.num = len(values) +- * node_list.values = NULL # <<<<<<<<<<<<<< +- * node_list.keys = NULL +- * if node_list.num: +- */ +- __pyx_v_node_list->values = NULL; +- +- /* "vidcutter/libs/pympv/mpv.pyx":472 +- * node_list.num = len(values) +- * node_list.values = NULL +- * node_list.keys = NULL # <<<<<<<<<<<<<< +- * if node_list.num: +- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) +- */ +- __pyx_v_node_list->keys = NULL; +- +- /* "vidcutter/libs/pympv/mpv.pyx":473 +- * node_list.values = NULL +- * node_list.keys = NULL +- * if node_list.num: # <<<<<<<<<<<<<< +- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) +- * for i, value in enumerate(values): +- */ +- __pyx_t_2 = (__pyx_v_node_list->num != 0); +- if (__pyx_t_2) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":474 +- * node_list.keys = NULL +- * if node_list.num: +- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) # <<<<<<<<<<<<<< +- * for i, value in enumerate(values): +- * format = self._format_for(value) +- */ +- __pyx_v_node_list->values = ((struct mpv_node *)malloc((__pyx_v_node_list->num * (sizeof(struct mpv_node))))); +- +- /* "vidcutter/libs/pympv/mpv.pyx":473 +- * node_list.values = NULL +- * node_list.keys = NULL +- * if node_list.num: # <<<<<<<<<<<<<< +- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) +- * for i, value in enumerate(values): +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":475 +- * if node_list.num: +- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) +- * for i, value in enumerate(values): # <<<<<<<<<<<<<< +- * format = self._format_for(value) +- * node = self._prep_native_value(value, format) +- */ +- __Pyx_INCREF(__pyx_int_0); +- __pyx_t_3 = __pyx_int_0; +- if (likely(PyList_CheckExact(__pyx_v_values)) || PyTuple_CheckExact(__pyx_v_values)) { +- __pyx_t_4 = __pyx_v_values; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0; +- __pyx_t_5 = NULL; +- } else { +- __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 475, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 475, __pyx_L1_error) +- } +- for (;;) { +- if (likely(!__pyx_t_5)) { +- if (likely(PyList_CheckExact(__pyx_t_4))) { +- if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break; +- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) +- #else +- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- #endif +- } else { +- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break; +- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) +- #else +- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- #endif ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("get_property_async (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,0}; ++ PyObject* values[2] = {0,0}; ++ values[1] = ((PyObject *)Py_None); ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; + } +- } else { +- __pyx_t_6 = __pyx_t_5(__pyx_t_4); +- if (unlikely(!__pyx_t_6)) { +- PyObject* exc_type = PyErr_Occurred(); +- if (exc_type) { +- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); +- else __PYX_ERR(0, 475, __pyx_L1_error) ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); ++ if (value) { values[1] = value; kw_args--; } + } +- break; + } +- __Pyx_GOTREF(__pyx_t_6); +- } +- __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); +- __pyx_t_6 = 0; +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); +- __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_DECREF(__pyx_t_3); +- __pyx_t_3 = __pyx_t_6; +- __pyx_t_6 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":476 +- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) +- * for i, value in enumerate(values): +- * format = self._format_for(value) # <<<<<<<<<<<<<< +- * node = self._prep_native_value(value, format) +- * node_list.values[i] = node +- */ +- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 476, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_7, function); ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_property_async") < 0)) __PYX_ERR(0, 574, __pyx_L3_error) ++ } ++ } else { ++ switch (PyTuple_GET_SIZE(__pyx_args)) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ break; ++ default: goto __pyx_L5_argtuple_error; + } + } +- __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __pyx_t_9 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __pyx_v_format = __pyx_t_9; +- +- /* "vidcutter/libs/pympv/mpv.pyx":477 +- * for i, value in enumerate(values): +- * format = self._format_for(value) +- * node = self._prep_native_value(value, format) # <<<<<<<<<<<<<< +- * node_list.values[i] = node +- * return node_list +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_6); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":478 +- * format = self._format_for(value) +- * node = self._prep_native_value(value, format) +- * node_list.values[i] = node # <<<<<<<<<<<<<< +- * return node_list +- * +- */ +- __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) +- (__pyx_v_node_list->values[__pyx_t_10]) = __pyx_v_node; +- +- /* "vidcutter/libs/pympv/mpv.pyx":475 +- * if node_list.num: +- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) +- * for i, value in enumerate(values): # <<<<<<<<<<<<<< +- * format = self._format_for(value) +- * node = self._prep_native_value(value, format) +- */ ++ __pyx_v_prop = values[0]; ++ __pyx_v_data = values[1]; + } +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":479 +- * node = self._prep_native_value(value, format) +- * node_list.values[i] = node +- * return node_list # <<<<<<<<<<<<<< +- * +- * cdef mpv_node_list* _prep_node_map(self, map): +- */ +- __pyx_r = __pyx_v_node_list; +- goto __pyx_L0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":466 +- * return MPV_FORMAT_NONE +- * +- * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< +- * cdef mpv_node node +- * cdef mpv_format format +- */ ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("get_property_async", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 574, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data); + + /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_node_list", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_i); +- __Pyx_XDECREF(__pyx_v_value); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":481 +- * return node_list +- * +- * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< +- * cdef char* ckey +- * cdef mpv_node_list* list +- */ +- +-static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_map) { +- char *__pyx_v_ckey; +- struct mpv_node_list *__pyx_v_list; +- PyObject *__pyx_v_keys = NULL; +- PyObject *__pyx_v_i = NULL; +- PyObject *__pyx_v_key = NULL; +- struct mpv_node_list *__pyx_r; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data) { ++ uint64_t __pyx_v_id_data; ++ PyObject *__pyx_v_userdatas = NULL; ++ char const *__pyx_v_prop_c; ++ int __pyx_v_err; ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; +- Py_ssize_t __pyx_t_4; +- int __pyx_t_5; +- PyObject *(*__pyx_t_6)(PyObject *); ++ Py_hash_t __pyx_t_4; ++ PyObject *__pyx_t_5 = NULL; ++ int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; +- PyObject *__pyx_t_8 = NULL; +- char *__pyx_t_9; +- Py_ssize_t __pyx_t_10; +- Py_ssize_t __pyx_t_11; ++ int __pyx_t_8; ++ int __pyx_t_9; ++ char const *__pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_prep_node_map", 0); ++ __Pyx_RefNannySetupContext("get_property_async", 0); ++ __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":484 +- * cdef char* ckey +- * cdef mpv_node_list* list +- * list = self._prep_node_list(map.values()) # <<<<<<<<<<<<<< +- * keys = map.keys() +- * if not len(keys): ++ /* "vidcutter/libs/pympv/mpv.pyx":583 ++ * data: Value to be passed into the reply_userdata of the response event. ++ * Wraps: mpv_get_property_async""" ++ * assert self._ctx # <<<<<<<<<<<<<< ++ * prop = _strenc(prop) ++ * cdef uint64_t id_data = hash(data) + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 484, __pyx_L1_error) ++ #ifndef CYTHON_WITHOUT_ASSERTIONS ++ if (unlikely(!Py_OptimizeFlag)) { ++ if (unlikely(!(__pyx_v_self->_ctx != 0))) { ++ PyErr_SetNone(PyExc_AssertionError); ++ __PYX_ERR(0, 583, __pyx_L1_error) ++ } ++ } ++ #endif ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":584 ++ * Wraps: mpv_get_property_async""" ++ * assert self._ctx ++ * prop = _strenc(prop) # <<<<<<<<<<<<<< ++ * cdef uint64_t id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +@@ -10353,223 +11099,234 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v_list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":485 +- * cdef mpv_node_list* list +- * list = self._prep_node_list(map.values()) +- * keys = map.keys() # <<<<<<<<<<<<<< +- * if not len(keys): +- * return list ++ /* "vidcutter/libs/pympv/mpv.pyx":585 ++ * assert self._ctx ++ * prop = _strenc(prop) ++ * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is None: + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error) ++ __pyx_t_4 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 585, __pyx_L1_error) ++ __pyx_v_id_data = ((uint64_t)__pyx_t_4); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":586 ++ * prop = _strenc(prop) ++ * cdef uint64_t id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< ++ * if userdatas is None: ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ */ ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; ++ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_5 = NULL; ++ __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); ++ __pyx_t_6 = 1; + } + } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); ++ #if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(__pyx_t_2)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; ++ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ } else ++ #endif ++ #if CYTHON_FAST_PYCCALL ++ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; ++ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ } else ++ #endif ++ { ++ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ if (__pyx_t_5) { ++ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; ++ } ++ __Pyx_GIVEREF(__pyx_t_3); ++ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); ++ __pyx_t_3 = 0; ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v_keys = __pyx_t_1; ++ __pyx_v_userdatas = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":486 +- * list = self._prep_node_list(map.values()) +- * keys = map.keys() +- * if not len(keys): # <<<<<<<<<<<<<< +- * return list +- * list.keys = malloc(list.num) ++ /* "vidcutter/libs/pympv/mpv.pyx":587 ++ * cdef uint64_t id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is None: # <<<<<<<<<<<<<< ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ * userdatas.add() + */ +- __pyx_t_4 = PyObject_Length(__pyx_v_keys); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 486, __pyx_L1_error) +- __pyx_t_5 = ((!(__pyx_t_4 != 0)) != 0); +- if (__pyx_t_5) { ++ __pyx_t_8 = (__pyx_v_userdatas == Py_None); ++ __pyx_t_9 = (__pyx_t_8 != 0); ++ if (__pyx_t_9) { + +- /* "vidcutter/libs/pympv/mpv.pyx":487 +- * keys = map.keys() +- * if not len(keys): +- * return list # <<<<<<<<<<<<<< +- * list.keys = malloc(list.num) +- * for i, key in enumerate(keys): ++ /* "vidcutter/libs/pympv/mpv.pyx":588 ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is None: ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< ++ * userdatas.add() ++ * cdef const char* prop_c = prop + */ +- __pyx_r = __pyx_v_list; +- goto __pyx_L0; ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_7 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_7)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_7); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); ++ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 588, __pyx_L1_error) ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":486 +- * list = self._prep_node_list(map.values()) +- * keys = map.keys() +- * if not len(keys): # <<<<<<<<<<<<<< +- * return list +- * list.keys = malloc(list.num) ++ /* "vidcutter/libs/pympv/mpv.pyx":587 ++ * cdef uint64_t id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is None: # <<<<<<<<<<<<<< ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ * userdatas.add() + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":488 +- * if not len(keys): +- * return list +- * list.keys = malloc(list.num) # <<<<<<<<<<<<<< +- * for i, key in enumerate(keys): +- * key = _strenc(key) ++ /* "vidcutter/libs/pympv/mpv.pyx":589 ++ * if userdatas is None: ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ * userdatas.add() # <<<<<<<<<<<<<< ++ * cdef const char* prop_c = prop ++ * with nogil: + */ +- __pyx_v_list->keys = ((char **)malloc(__pyx_v_list->num)); ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 589, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_7 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_7)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_7); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":489 +- * return list +- * list.keys = malloc(list.num) +- * for i, key in enumerate(keys): # <<<<<<<<<<<<<< +- * key = _strenc(key) +- * ckey = key ++ /* "vidcutter/libs/pympv/mpv.pyx":590 ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ * userdatas.add() ++ * cdef const char* prop_c = prop # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_get_property_async( + */ +- __Pyx_INCREF(__pyx_int_0); +- __pyx_t_1 = __pyx_int_0; +- if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) { +- __pyx_t_2 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; +- __pyx_t_6 = NULL; +- } else { +- __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 489, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 489, __pyx_L1_error) +- } +- for (;;) { +- if (likely(!__pyx_t_6)) { +- if (likely(PyList_CheckExact(__pyx_t_2))) { +- if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; +- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) +- #else +- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- #endif +- } else { +- if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; +- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) +- #else +- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- #endif +- } +- } else { +- __pyx_t_3 = __pyx_t_6(__pyx_t_2); +- if (unlikely(!__pyx_t_3)) { +- PyObject* exc_type = PyErr_Occurred(); +- if (exc_type) { +- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); +- else __PYX_ERR(0, 489, __pyx_L1_error) +- } +- break; +- } +- __Pyx_GOTREF(__pyx_t_3); +- } +- __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3); +- __pyx_t_3 = 0; +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); +- __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_1); +- __pyx_t_1 = __pyx_t_3; +- __pyx_t_3 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":490 +- * list.keys = malloc(list.num) +- * for i, key in enumerate(keys): +- * key = _strenc(key) # <<<<<<<<<<<<<< +- * ckey = key +- * list.keys[i] = malloc(len(key) + 1) +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_strenc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_7, function); +- } +- } +- __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_3); +- __pyx_t_3 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":491 +- * for i, key in enumerate(keys): +- * key = _strenc(key) +- * ckey = key # <<<<<<<<<<<<<< +- * list.keys[i] = malloc(len(key) + 1) +- * strcpy(list.keys[i], ckey) +- */ +- __pyx_t_9 = __Pyx_PyObject_AsWritableString(__pyx_v_key); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 491, __pyx_L1_error) +- __pyx_v_ckey = __pyx_t_9; ++ __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L1_error) ++ __pyx_v_prop_c = __pyx_t_10; + +- /* "vidcutter/libs/pympv/mpv.pyx":492 +- * key = _strenc(key) +- * ckey = key +- * list.keys[i] = malloc(len(key) + 1) # <<<<<<<<<<<<<< +- * strcpy(list.keys[i], ckey) +- * return list ++ /* "vidcutter/libs/pympv/mpv.pyx":591 ++ * userdatas.add() ++ * cdef const char* prop_c = prop ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_get_property_async( ++ * self._ctx, + */ +- __pyx_t_10 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 492, __pyx_L1_error) +- __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L1_error) +- (__pyx_v_list->keys[__pyx_t_11]) = ((char *)malloc((__pyx_t_10 + 1))); ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":493 +- * ckey = key +- * list.keys[i] = malloc(len(key) + 1) +- * strcpy(list.keys[i], ckey) # <<<<<<<<<<<<<< +- * return list +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":592 ++ * cdef const char* prop_c = prop ++ * with nogil: ++ * err = mpv_get_property_async( # <<<<<<<<<<<<<< ++ * self._ctx, ++ * id_data, + */ +- __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error) +- (void)(strcpy((__pyx_v_list->keys[__pyx_t_10]), __pyx_v_ckey)); ++ __pyx_v_err = mpv_get_property_async(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_prop_c, MPV_FORMAT_NODE); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":489 +- * return list +- * list.keys = malloc(list.num) +- * for i, key in enumerate(keys): # <<<<<<<<<<<<<< +- * key = _strenc(key) +- * ckey = key ++ /* "vidcutter/libs/pympv/mpv.pyx":591 ++ * userdatas.add() ++ * cdef const char* prop_c = prop ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_get_property_async( ++ * self._ctx, + */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L6; ++ } ++ __pyx_L6:; ++ } + } +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":494 +- * list.keys[i] = malloc(len(key) + 1) +- * strcpy(list.keys[i], ckey) +- * return list # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":598 ++ * MPV_FORMAT_NODE, ++ * ) ++ * return err # <<<<<<<<<<<<<< + * +- * cdef mpv_node _prep_native_value(self, value, format): ++ * def try_get_property_async(self, prop, data=None, default=None): + */ +- __pyx_r = __pyx_v_list; ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":481 +- * return node_list ++ /* "vidcutter/libs/pympv/mpv.pyx":574 ++ * ++ * @_errors ++ * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< ++ * """Gets the value of a property asynchronously. + * +- * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< +- * cdef char* ckey +- * cdef mpv_node_list* list + */ + + /* function exit code */ +@@ -10577,618 +11334,539 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_node_map", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); +- __pyx_r = 0; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_keys); +- __Pyx_XDECREF(__pyx_v_i); +- __Pyx_XDECREF(__pyx_v_key); ++ __Pyx_XDECREF(__pyx_v_userdatas); ++ __Pyx_XDECREF(__pyx_v_prop); ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":496 +- * return list ++/* "vidcutter/libs/pympv/mpv.pyx":600 ++ * return err + * +- * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< +- * cdef mpv_node node +- * node.format = format ++ * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< ++ * try: ++ * return self.get_property_async(prop, data=data) + */ + +-static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value, PyObject *__pyx_v_format) { +- struct mpv_node __pyx_v_node; +- struct mpv_node __pyx_r; +- __Pyx_RefNannyDeclarations +- enum mpv_format __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- int __pyx_t_4; +- PyObject *__pyx_t_5 = NULL; +- Py_ssize_t __pyx_t_6; +- char const *__pyx_t_7; +- int __pyx_t_8; +- int64_t __pyx_t_9; +- double __pyx_t_10; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_prop = 0; ++ PyObject *__pyx_v_data = 0; ++ PyObject *__pyx_v_default = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_prep_native_value", 0); +- __Pyx_INCREF(__pyx_v_value); +- +- /* "vidcutter/libs/pympv/mpv.pyx":498 +- * cdef mpv_node _prep_native_value(self, value, format): +- * cdef mpv_node node +- * node.format = format # <<<<<<<<<<<<<< +- * if format == MPV_FORMAT_STRING: +- * value = _strenc(value) +- */ +- __pyx_t_1 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L1_error) +- __pyx_v_node.format = __pyx_t_1; +- +- /* "vidcutter/libs/pympv/mpv.pyx":499 +- * cdef mpv_node node +- * node.format = format +- * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +- * value = _strenc(value) +- * node.u.string = malloc(len(value) + 1) +- */ +- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 499, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (__pyx_t_4) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":500 +- * node.format = format +- * if format == MPV_FORMAT_STRING: +- * value = _strenc(value) # <<<<<<<<<<<<<< +- * node.u.string = malloc(len(value) + 1) +- * strcpy(node.u.string, value) +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3); +- __pyx_t_3 = 0; ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("try_get_property_async (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,&__pyx_n_s_default,0}; ++ PyObject* values[3] = {0,0,0}; ++ values[1] = ((PyObject *)Py_None); ++ values[2] = ((PyObject *)Py_None); ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); ++ if (value) { values[1] = value; kw_args--; } ++ } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); ++ if (value) { values[2] = value; kw_args--; } ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property_async") < 0)) __PYX_ERR(0, 600, __pyx_L3_error) ++ } ++ } else { ++ switch (PyTuple_GET_SIZE(__pyx_args)) { ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ } ++ __pyx_v_prop = values[0]; ++ __pyx_v_data = values[1]; ++ __pyx_v_default = values[2]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("try_get_property_async", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 600, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_async(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data, __pyx_v_default); + +- /* "vidcutter/libs/pympv/mpv.pyx":501 +- * if format == MPV_FORMAT_STRING: +- * value = _strenc(value) +- * node.u.string = malloc(len(value) + 1) # <<<<<<<<<<<<<< +- * strcpy(node.u.string, value) +- * elif format == MPV_FORMAT_FLAG: +- */ +- __pyx_t_6 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 501, __pyx_L1_error) +- __pyx_v_node.u.string = ((char *)malloc((__pyx_t_6 + 1))); ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":502 +- * value = _strenc(value) +- * node.u.string = malloc(len(value) + 1) +- * strcpy(node.u.string, value) # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_FLAG: +- * node.u.flag = 1 if value else 0 +- */ +- __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error) +- (void)(strcpy(__pyx_v_node.u.string, __pyx_t_7)); ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data, PyObject *__pyx_v_default) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ int __pyx_t_8; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("try_get_property_async", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":499 +- * cdef mpv_node node +- * node.format = format +- * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +- * value = _strenc(value) +- * node.u.string = malloc(len(value) + 1) ++ /* "vidcutter/libs/pympv/mpv.pyx":601 ++ * ++ * def try_get_property_async(self, prop, data=None, default=None): ++ * try: # <<<<<<<<<<<<<< ++ * return self.get_property_async(prop, data=data) ++ * except MPVError: + */ +- goto __pyx_L3; +- } ++ { ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); ++ __Pyx_XGOTREF(__pyx_t_1); ++ __Pyx_XGOTREF(__pyx_t_2); ++ __Pyx_XGOTREF(__pyx_t_3); ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":503 +- * node.u.string = malloc(len(value) + 1) +- * strcpy(node.u.string, value) +- * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< +- * node.u.flag = 1 if value else 0 +- * elif format == MPV_FORMAT_INT64: ++ /* "vidcutter/libs/pympv/mpv.pyx":602 ++ * def try_get_property_async(self, prop, data=None, default=None): ++ * try: ++ * return self.get_property_async(prop, data=data) # <<<<<<<<<<<<<< ++ * except MPVError: ++ * return default + */ +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 503, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (__pyx_t_4) { ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L3_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 602, __pyx_L3_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_INCREF(__pyx_v_prop); ++ __Pyx_GIVEREF(__pyx_v_prop); ++ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_prop); ++ __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 602, __pyx_L3_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 602, __pyx_L3_error) ++ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 602, __pyx_L3_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_r = __pyx_t_7; ++ __pyx_t_7 = 0; ++ goto __pyx_L7_try_return; + +- /* "vidcutter/libs/pympv/mpv.pyx":504 +- * strcpy(node.u.string, value) +- * elif format == MPV_FORMAT_FLAG: +- * node.u.flag = 1 if value else 0 # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_INT64: +- * node.u.int64 = value ++ /* "vidcutter/libs/pympv/mpv.pyx":601 ++ * ++ * def try_get_property_async(self, prop, data=None, default=None): ++ * try: # <<<<<<<<<<<<<< ++ * return self.get_property_async(prop, data=data) ++ * except MPVError: + */ +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 504, __pyx_L1_error) +- if (__pyx_t_4) { +- __pyx_t_8 = 1; +- } else { +- __pyx_t_8 = 0; + } +- __pyx_v_node.u.flag = __pyx_t_8; ++ __pyx_L3_error:; ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":503 +- * node.u.string = malloc(len(value) + 1) +- * strcpy(node.u.string, value) +- * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< +- * node.u.flag = 1 if value else 0 +- * elif format == MPV_FORMAT_INT64: ++ /* "vidcutter/libs/pympv/mpv.pyx":603 ++ * try: ++ * return self.get_property_async(prop, data=data) ++ * except MPVError: # <<<<<<<<<<<<<< ++ * return default ++ * + */ +- goto __pyx_L3; +- } ++ __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_4); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5); ++ __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; ++ if (__pyx_t_8) { ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 603, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_GOTREF(__pyx_t_7); + +- /* "vidcutter/libs/pympv/mpv.pyx":505 +- * elif format == MPV_FORMAT_FLAG: +- * node.u.flag = 1 if value else 0 +- * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< +- * node.u.int64 = value +- * elif format == MPV_FORMAT_DOUBLE: ++ /* "vidcutter/libs/pympv/mpv.pyx":604 ++ * return self.get_property_async(prop, data=data) ++ * except MPVError: ++ * return default # <<<<<<<<<<<<<< ++ * ++ * def try_get_property(self, prop, default=None): + */ +- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 505, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (__pyx_t_4) { ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_default); ++ __pyx_r = __pyx_v_default; ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ goto __pyx_L6_except_return; ++ } ++ goto __pyx_L5_except_error; ++ __pyx_L5_except_error:; + +- /* "vidcutter/libs/pympv/mpv.pyx":506 +- * node.u.flag = 1 if value else 0 +- * elif format == MPV_FORMAT_INT64: +- * node.u.int64 = value # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_DOUBLE: +- * node.u.double_ = value ++ /* "vidcutter/libs/pympv/mpv.pyx":601 ++ * ++ * def try_get_property_async(self, prop, data=None, default=None): ++ * try: # <<<<<<<<<<<<<< ++ * return self.get_property_async(prop, data=data) ++ * except MPVError: + */ +- __pyx_t_9 = __Pyx_PyInt_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_9 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) +- __pyx_v_node.u.int64 = __pyx_t_9; +- +- /* "vidcutter/libs/pympv/mpv.pyx":505 +- * elif format == MPV_FORMAT_FLAG: +- * node.u.flag = 1 if value else 0 +- * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< +- * node.u.int64 = value +- * elif format == MPV_FORMAT_DOUBLE: +- */ +- goto __pyx_L3; +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":507 +- * elif format == MPV_FORMAT_INT64: +- * node.u.int64 = value +- * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< +- * node.u.double_ = value +- * elif format == MPV_FORMAT_NODE_ARRAY: +- */ +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 507, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 507, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (__pyx_t_4) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":508 +- * node.u.int64 = value +- * elif format == MPV_FORMAT_DOUBLE: +- * node.u.double_ = value # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_NODE_ARRAY: +- * node.u.list = self._prep_node_list(value) +- */ +- __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 508, __pyx_L1_error) +- __pyx_v_node.u.double_ = __pyx_t_10; +- +- /* "vidcutter/libs/pympv/mpv.pyx":507 +- * elif format == MPV_FORMAT_INT64: +- * node.u.int64 = value +- * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< +- * node.u.double_ = value +- * elif format == MPV_FORMAT_NODE_ARRAY: +- */ +- goto __pyx_L3; +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":509 +- * elif format == MPV_FORMAT_DOUBLE: +- * node.u.double_ = value +- * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< +- * node.u.list = self._prep_node_list(value) +- * elif format == MPV_FORMAT_NODE_MAP: +- */ +- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 509, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 509, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (__pyx_t_4) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":510 +- * node.u.double_ = value +- * elif format == MPV_FORMAT_NODE_ARRAY: +- * node.u.list = self._prep_node_list(value) # <<<<<<<<<<<<<< +- * elif format == MPV_FORMAT_NODE_MAP: +- * node.u.list = self._prep_node_map(value) +- */ +- __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_v_value); +- +- /* "vidcutter/libs/pympv/mpv.pyx":509 +- * elif format == MPV_FORMAT_DOUBLE: +- * node.u.double_ = value +- * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< +- * node.u.list = self._prep_node_list(value) +- * elif format == MPV_FORMAT_NODE_MAP: +- */ +- goto __pyx_L3; +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":511 +- * elif format == MPV_FORMAT_NODE_ARRAY: +- * node.u.list = self._prep_node_list(value) +- * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +- * node.u.list = self._prep_node_map(value) +- * else: +- */ +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 511, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (__pyx_t_4) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":512 +- * node.u.list = self._prep_node_list(value) +- * elif format == MPV_FORMAT_NODE_MAP: +- * node.u.list = self._prep_node_map(value) # <<<<<<<<<<<<<< +- * else: +- * node.format = MPV_FORMAT_NONE +- */ +- __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_map(__pyx_v_self, __pyx_v_value); +- +- /* "vidcutter/libs/pympv/mpv.pyx":511 +- * elif format == MPV_FORMAT_NODE_ARRAY: +- * node.u.list = self._prep_node_list(value) +- * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +- * node.u.list = self._prep_node_map(value) +- * else: +- */ +- goto __pyx_L3; +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":514 +- * node.u.list = self._prep_node_map(value) +- * else: +- * node.format = MPV_FORMAT_NONE # <<<<<<<<<<<<<< +- * return node +- * +- */ +- /*else*/ { +- __pyx_v_node.format = MPV_FORMAT_NONE; ++ __Pyx_XGIVEREF(__pyx_t_1); ++ __Pyx_XGIVEREF(__pyx_t_2); ++ __Pyx_XGIVEREF(__pyx_t_3); ++ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); ++ goto __pyx_L1_error; ++ __pyx_L7_try_return:; ++ __Pyx_XGIVEREF(__pyx_t_1); ++ __Pyx_XGIVEREF(__pyx_t_2); ++ __Pyx_XGIVEREF(__pyx_t_3); ++ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); ++ goto __pyx_L0; ++ __pyx_L6_except_return:; ++ __Pyx_XGIVEREF(__pyx_t_1); ++ __Pyx_XGIVEREF(__pyx_t_2); ++ __Pyx_XGIVEREF(__pyx_t_3); ++ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); ++ goto __pyx_L0; + } +- __pyx_L3:; +- +- /* "vidcutter/libs/pympv/mpv.pyx":515 +- * else: +- * node.format = MPV_FORMAT_NONE +- * return node # <<<<<<<<<<<<<< +- * +- * cdef _free_native_value(self, mpv_node node): +- */ +- __pyx_r = __pyx_v_node; +- goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":496 +- * return list ++ /* "vidcutter/libs/pympv/mpv.pyx":600 ++ * return err + * +- * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< +- * cdef mpv_node node +- * node.format = format ++ * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< ++ * try: ++ * return self.get_property_async(prop, data=data) + */ + + /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_native_value", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); +- __Pyx_pretend_to_initialize(&__pyx_r); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_value); ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":517 +- * return node ++/* "vidcutter/libs/pympv/mpv.pyx":606 ++ * return default + * +- * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< +- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): +- * for i in range(node.u.list.num): ++ * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< ++ * try: ++ * return self.get_property(prop) + */ + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, struct mpv_node __pyx_v_node) { +- int __pyx_v_i; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- int __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_t_5; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_prop = 0; ++ PyObject *__pyx_v_default = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_free_native_value", 0); ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("try_get_property (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_default,0}; ++ PyObject* values[2] = {0,0}; ++ values[1] = ((PyObject *)Py_None); ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); ++ if (value) { values[1] = value; kw_args--; } ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property") < 0)) __PYX_ERR(0, 606, __pyx_L3_error) ++ } ++ } else { ++ switch (PyTuple_GET_SIZE(__pyx_args)) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ } ++ __pyx_v_prop = values[0]; ++ __pyx_v_default = values[1]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("try_get_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 606, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_default); + +- /* "vidcutter/libs/pympv/mpv.pyx":518 +- * +- * cdef _free_native_value(self, mpv_node node): +- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< +- * for i in range(node.u.list.num): +- * self._free_native_value(node.u.list.values[i]) +- */ +- switch (__pyx_v_node.format) { +- case MPV_FORMAT_NODE_ARRAY: +- case MPV_FORMAT_NODE_MAP: +- +- /* "vidcutter/libs/pympv/mpv.pyx":519 +- * cdef _free_native_value(self, mpv_node node): +- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): +- * for i in range(node.u.list.num): # <<<<<<<<<<<<<< +- * self._free_native_value(node.u.list.values[i]) +- * free(node.u.list.values) +- */ +- __pyx_t_1 = __pyx_v_node.u.list->num; +- __pyx_t_2 = __pyx_t_1; +- for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { +- __pyx_v_i = __pyx_t_3; +- +- /* "vidcutter/libs/pympv/mpv.pyx":520 +- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): +- * for i in range(node.u.list.num): +- * self._free_native_value(node.u.list.values[i]) # <<<<<<<<<<<<<< +- * free(node.u.list.values) +- * if node.format == MPV_FORMAT_NODE_MAP: +- */ +- __pyx_t_4 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, (__pyx_v_node.u.list->values[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":521 +- * for i in range(node.u.list.num): +- * self._free_native_value(node.u.list.values[i]) +- * free(node.u.list.values) # <<<<<<<<<<<<<< +- * if node.format == MPV_FORMAT_NODE_MAP: +- * for i in range(node.u.list.num): +- */ +- free(__pyx_v_node.u.list->values); ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":522 +- * self._free_native_value(node.u.list.values[i]) +- * free(node.u.list.values) +- * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +- * for i in range(node.u.list.num): +- * free(node.u.list.keys[i]) +- */ +- __pyx_t_5 = ((__pyx_v_node.format == MPV_FORMAT_NODE_MAP) != 0); +- if (__pyx_t_5) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_default) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ int __pyx_t_8; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("try_get_property", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":523 +- * free(node.u.list.values) +- * if node.format == MPV_FORMAT_NODE_MAP: +- * for i in range(node.u.list.num): # <<<<<<<<<<<<<< +- * free(node.u.list.keys[i]) +- * free(node.u.list.keys) ++ /* "vidcutter/libs/pympv/mpv.pyx":607 ++ * ++ * def try_get_property(self, prop, default=None): ++ * try: # <<<<<<<<<<<<<< ++ * return self.get_property(prop) ++ * except MPVError: + */ +- __pyx_t_1 = __pyx_v_node.u.list->num; +- __pyx_t_2 = __pyx_t_1; +- for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { +- __pyx_v_i = __pyx_t_3; ++ { ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); ++ __Pyx_XGOTREF(__pyx_t_1); ++ __Pyx_XGOTREF(__pyx_t_2); ++ __Pyx_XGOTREF(__pyx_t_3); ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":524 +- * if node.format == MPV_FORMAT_NODE_MAP: +- * for i in range(node.u.list.num): +- * free(node.u.list.keys[i]) # <<<<<<<<<<<<<< +- * free(node.u.list.keys) +- * free(node.u.list) ++ /* "vidcutter/libs/pympv/mpv.pyx":608 ++ * def try_get_property(self, prop, default=None): ++ * try: ++ * return self.get_property(prop) # <<<<<<<<<<<<<< ++ * except MPVError: ++ * return default + */ +- free((__pyx_v_node.u.list->keys[__pyx_v_i])); ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L3_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __pyx_t_6 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { ++ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); ++ if (likely(__pyx_t_6)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); ++ __Pyx_INCREF(__pyx_t_6); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_5, function); ++ } + } ++ __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_prop); ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L3_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __pyx_r = __pyx_t_4; ++ __pyx_t_4 = 0; ++ goto __pyx_L7_try_return; + +- /* "vidcutter/libs/pympv/mpv.pyx":525 +- * for i in range(node.u.list.num): +- * free(node.u.list.keys[i]) +- * free(node.u.list.keys) # <<<<<<<<<<<<<< +- * free(node.u.list) +- * elif node.format == MPV_FORMAT_STRING: +- */ +- free(__pyx_v_node.u.list->keys); +- +- /* "vidcutter/libs/pympv/mpv.pyx":522 +- * self._free_native_value(node.u.list.values[i]) +- * free(node.u.list.values) +- * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +- * for i in range(node.u.list.num): +- * free(node.u.list.keys[i]) ++ /* "vidcutter/libs/pympv/mpv.pyx":607 ++ * ++ * def try_get_property(self, prop, default=None): ++ * try: # <<<<<<<<<<<<<< ++ * return self.get_property(prop) ++ * except MPVError: + */ + } ++ __pyx_L3_error:; ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":526 +- * free(node.u.list.keys[i]) +- * free(node.u.list.keys) +- * free(node.u.list) # <<<<<<<<<<<<<< +- * elif node.format == MPV_FORMAT_STRING: +- * free(node.u.string) +- */ +- free(__pyx_v_node.u.list); +- +- /* "vidcutter/libs/pympv/mpv.pyx":518 ++ /* "vidcutter/libs/pympv/mpv.pyx":609 ++ * try: ++ * return self.get_property(prop) ++ * except MPVError: # <<<<<<<<<<<<<< ++ * return default + * +- * cdef _free_native_value(self, mpv_node node): +- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< +- * for i in range(node.u.list.num): +- * self._free_native_value(node.u.list.values[i]) + */ +- break; +- case MPV_FORMAT_STRING: ++ __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 609, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6); ++ __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; ++ if (__pyx_t_8) { ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 609, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_GOTREF(__pyx_t_4); + +- /* "vidcutter/libs/pympv/mpv.pyx":528 +- * free(node.u.list) +- * elif node.format == MPV_FORMAT_STRING: +- * free(node.u.string) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":610 ++ * return self.get_property(prop) ++ * except MPVError: ++ * return default # <<<<<<<<<<<<<< + * +- * def command(self, *cmdlist, asynchronous=False, data=None): ++ * def get_property(self, prop): + */ +- free(__pyx_v_node.u.string); ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_default); ++ __pyx_r = __pyx_v_default; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ goto __pyx_L6_except_return; ++ } ++ goto __pyx_L5_except_error; ++ __pyx_L5_except_error:; + +- /* "vidcutter/libs/pympv/mpv.pyx":527 +- * free(node.u.list.keys) +- * free(node.u.list) +- * elif node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +- * free(node.u.string) ++ /* "vidcutter/libs/pympv/mpv.pyx":607 + * ++ * def try_get_property(self, prop, default=None): ++ * try: # <<<<<<<<<<<<<< ++ * return self.get_property(prop) ++ * except MPVError: + */ +- break; +- default: break; ++ __Pyx_XGIVEREF(__pyx_t_1); ++ __Pyx_XGIVEREF(__pyx_t_2); ++ __Pyx_XGIVEREF(__pyx_t_3); ++ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); ++ goto __pyx_L1_error; ++ __pyx_L7_try_return:; ++ __Pyx_XGIVEREF(__pyx_t_1); ++ __Pyx_XGIVEREF(__pyx_t_2); ++ __Pyx_XGIVEREF(__pyx_t_3); ++ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); ++ goto __pyx_L0; ++ __pyx_L6_except_return:; ++ __Pyx_XGIVEREF(__pyx_t_1); ++ __Pyx_XGIVEREF(__pyx_t_2); ++ __Pyx_XGIVEREF(__pyx_t_3); ++ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); ++ goto __pyx_L0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":517 +- * return node ++ /* "vidcutter/libs/pympv/mpv.pyx":606 ++ * return default + * +- * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< +- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): +- * for i in range(node.u.list.num): ++ * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< ++ * try: ++ * return self.get_property(prop) + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context._free_native_value", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":530 +- * free(node.u.string) +- * +- * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< +- * """Send a command to mpv. ++/* "vidcutter/libs/pympv/mpv.pyx":612 ++ * return default + * ++ * def get_property(self, prop): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_get_property""" ++ * assert self._ctx + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13command(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_12command[] = "Send a command to mpv.\n\n Non-async success returns the command's response data, otherwise None\n\n Arguments:\n Accepts parameters as args\n\n Keyword Arguments:\n asynchronous: True will return right away, status comes in as MPV_EVENT_COMMAND_REPLY\n data: Only valid if async, gets sent back as reply_userdata in the Event\n\n Wraps: mpv_command_node and mpv_command_node_async\n "; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13command(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_asynchronous = 0; +- PyObject *__pyx_v_data = 0; +- PyObject *__pyx_v_cmdlist = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_17get_property(PyObject *__pyx_v_self, PyObject *__pyx_v_prop); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_16get_property[] = "Wraps: mpv_get_property"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_17get_property(PyObject *__pyx_v_self, PyObject *__pyx_v_prop) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("command (wrapper)", 0); +- if (PyTuple_GET_SIZE(__pyx_args) > 0) { +- __pyx_v_cmdlist = PyTuple_GetSlice(__pyx_args, 0, PyTuple_GET_SIZE(__pyx_args)); +- if (unlikely(!__pyx_v_cmdlist)) { +- __Pyx_RefNannyFinishContext(); +- return NULL; +- } +- __Pyx_GOTREF(__pyx_v_cmdlist); +- } else { +- __pyx_v_cmdlist = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); +- } +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asynchronous,&__pyx_n_s_data,0}; +- PyObject* values[2] = {0,0}; +- values[0] = ((PyObject *)Py_False); +- values[1] = ((PyObject *)Py_None); +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- default: +- case 0: break; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- if (kw_args > 0 && likely(kw_args <= 2)) { +- Py_ssize_t index; +- for (index = 0; index < 2 && kw_args > 0; index++) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); +- if (value) { values[index] = value; kw_args--; } +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "command") < 0)) __PYX_ERR(0, 530, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { +- goto __pyx_L5_argtuple_error; +- } else { +- } +- __pyx_v_asynchronous = values[0]; +- __pyx_v_data = values[1]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("command", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 530, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_DECREF(__pyx_v_cmdlist); __pyx_v_cmdlist = 0; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_asynchronous, __pyx_v_data, __pyx_v_cmdlist); ++ __Pyx_RefNannySetupContext("get_property (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_prop)); + + /* function exit code */ +- __Pyx_XDECREF(__pyx_v_cmdlist); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data, PyObject *__pyx_v_cmdlist) { +- struct mpv_node __pyx_v_node; +- struct mpv_node __pyx_v_noderesult; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop) { ++ struct mpv_node __pyx_v_result; ++ char const *__pyx_v_prop_c; + int __pyx_v_err; +- uint64_t __pyx_v_data_id; +- PyObject *__pyx_v_result = NULL; +- PyObject *__pyx_v_userdatas = NULL; ++ PyObject *__pyx_v_v = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; +- uint64_t __pyx_t_4; ++ char const *__pyx_t_4; + int __pyx_t_5; +- int __pyx_t_6; ++ PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + int __pyx_t_8; + char const *__pyx_t_9; +@@ -11198,41 +11876,39 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(struct __pyx_ + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; +- PyObject *__pyx_t_16 = NULL; +- PyObject *__pyx_t_17 = NULL; +- char const *__pyx_t_18; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("command", 0); ++ __Pyx_RefNannySetupContext("get_property", 0); ++ __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":544 +- * Wraps: mpv_command_node and mpv_command_node_async +- * """ ++ /* "vidcutter/libs/pympv/mpv.pyx":614 ++ * def get_property(self, prop): ++ * """Wraps: mpv_get_property""" + * assert self._ctx # <<<<<<<<<<<<<< +- * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) +- * cdef mpv_node noderesult ++ * cdef mpv_node result ++ * prop = _strenc(prop) + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 544, __pyx_L1_error) ++ __PYX_ERR(0, 614, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":545 +- * """ ++ /* "vidcutter/libs/pympv/mpv.pyx":616 + * assert self._ctx +- * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) # <<<<<<<<<<<<<< +- * cdef mpv_node noderesult ++ * cdef mpv_node result ++ * prop = _strenc(prop) # <<<<<<<<<<<<<< ++ * cdef const char* prop_c = prop + * cdef int err + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +@@ -11241,625 +11917,332 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(struct __pyx_ + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_cmdlist) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cmdlist); ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_cmdlist, __pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":549 ++ /* "vidcutter/libs/pympv/mpv.pyx":617 ++ * cdef mpv_node result ++ * prop = _strenc(prop) ++ * cdef const char* prop_c = prop # <<<<<<<<<<<<<< + * cdef int err +- * cdef uint64_t data_id +- * result = None # <<<<<<<<<<<<<< +- * try: +- * data_id = id(data) +- */ +- __Pyx_INCREF(Py_None); +- __pyx_v_result = Py_None; +- +- /* "vidcutter/libs/pympv/mpv.pyx":550 +- * cdef uint64_t data_id +- * result = None +- * try: # <<<<<<<<<<<<<< +- * data_id = id(data) +- * if not asynchronous: ++ * with nogil: + */ +- /*try:*/ { ++ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 617, __pyx_L1_error) ++ __pyx_v_prop_c = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":551 +- * result = None +- * try: +- * data_id = id(data) # <<<<<<<<<<<<<< +- * if not asynchronous: +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":619 ++ * cdef const char* prop_c = prop ++ * cdef int err ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_get_property( ++ * self._ctx, + */ +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 551, __pyx_L4_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_data_id = __pyx_t_4; ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":552 +- * try: +- * data_id = id(data) +- * if not asynchronous: # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_command_node(self._ctx, &node, &noderesult) ++ /* "vidcutter/libs/pympv/mpv.pyx":620 ++ * cdef int err ++ * with nogil: ++ * err = mpv_get_property( # <<<<<<<<<<<<<< ++ * self._ctx, ++ * prop_c, + */ +- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 552, __pyx_L4_error) +- __pyx_t_6 = ((!__pyx_t_5) != 0); +- if (__pyx_t_6) { ++ __pyx_v_err = mpv_get_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_result)); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":553 +- * data_id = id(data) +- * if not asynchronous: +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_command_node(self._ctx, &node, &noderesult) +- * try: ++ /* "vidcutter/libs/pympv/mpv.pyx":619 ++ * cdef const char* prop_c = prop ++ * cdef int err ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_get_property( ++ * self._ctx, + */ +- { ++ /*finally:*/ { ++ /*normal exit:*/{ + #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS + #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":554 +- * if not asynchronous: +- * with nogil: +- * err = mpv_command_node(self._ctx, &node, &noderesult) # <<<<<<<<<<<<<< +- * try: +- * result = _convert_node_value(noderesult) if err >= 0 else None +- */ +- __pyx_v_err = mpv_command_node(__pyx_v_self->_ctx, (&__pyx_v_node), (&__pyx_v_noderesult)); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":553 +- * data_id = id(data) +- * if not asynchronous: +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_command_node(self._ctx, &node, &noderesult) +- * try: +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L9; +- } +- __pyx_L9:; +- } ++ goto __pyx_L5; ++ } ++ __pyx_L5:; + } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":555 +- * with nogil: +- * err = mpv_command_node(self._ctx, &node, &noderesult) +- * try: # <<<<<<<<<<<<<< +- * result = _convert_node_value(noderesult) if err >= 0 else None +- * finally: ++ /* "vidcutter/libs/pympv/mpv.pyx":626 ++ * &result, ++ * ) ++ * if err < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(err) ++ * try: + */ +- /*try:*/ { ++ __pyx_t_5 = ((__pyx_v_err < 0) != 0); ++ if (unlikely(__pyx_t_5)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":556 +- * err = mpv_command_node(self._ctx, &node, &noderesult) +- * try: +- * result = _convert_node_value(noderesult) if err >= 0 else None # <<<<<<<<<<<<<< +- * finally: +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":627 ++ * ) ++ * if err < 0: ++ * raise MPVError(err) # <<<<<<<<<<<<<< ++ * try: ++ * v = _convert_node_value(result) + */ +- if (((__pyx_v_err >= 0) != 0)) { +- __pyx_t_2 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_noderesult); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L11_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_1 = __pyx_t_2; +- __pyx_t_2 = 0; +- } else { +- __Pyx_INCREF(Py_None); +- __pyx_t_1 = Py_None; +- } +- __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1); +- __pyx_t_1 = 0; ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 627, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_6 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_6)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_6); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); + } ++ } ++ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __PYX_ERR(0, 627, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":558 +- * result = _convert_node_value(noderesult) if err >= 0 else None +- * finally: +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_free_node_contents(&noderesult) +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":626 ++ * &result, ++ * ) ++ * if err < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(err) ++ * try: + */ +- /*finally:*/ { +- /*normal exit:*/{ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":559 +- * finally: +- * with nogil: +- * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< +- * else: +- * userdatas = self.reply_userdata.get(data_id, None) ++ /* "vidcutter/libs/pympv/mpv.pyx":628 ++ * if err < 0: ++ * raise MPVError(err) ++ * try: # <<<<<<<<<<<<<< ++ * v = _convert_node_value(result) ++ * finally: + */ +- mpv_free_node_contents((&__pyx_v_noderesult)); +- } ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":558 +- * result = _convert_node_value(noderesult) if err >= 0 else None +- * finally: +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_free_node_contents(&noderesult) +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":629 ++ * raise MPVError(err) ++ * try: ++ * v = _convert_node_value(result) # <<<<<<<<<<<<<< ++ * finally: ++ * with nogil: + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L15; +- } +- __pyx_L15:; +- } +- } +- goto __pyx_L12; +- } +- __pyx_L11_error:; +- /*exception exit:*/{ +- __Pyx_PyThreadState_declare +- __Pyx_PyThreadState_assign +- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); +- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); +- __Pyx_XGOTREF(__pyx_t_10); +- __Pyx_XGOTREF(__pyx_t_11); +- __Pyx_XGOTREF(__pyx_t_12); +- __Pyx_XGOTREF(__pyx_t_13); +- __Pyx_XGOTREF(__pyx_t_14); +- __Pyx_XGOTREF(__pyx_t_15); +- __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; +- { +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L8_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_v_v = __pyx_t_1; ++ __pyx_t_1 = 0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":559 +- * finally: +- * with nogil: +- * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< +- * else: +- * userdatas = self.reply_userdata.get(data_id, None) ++ /* "vidcutter/libs/pympv/mpv.pyx":631 ++ * v = _convert_node_value(result) ++ * finally: ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_free_node_contents(&result) ++ * return v + */ +- mpv_free_node_contents((&__pyx_v_noderesult)); +- } ++ /*finally:*/ { ++ /*normal exit:*/{ ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":558 +- * result = _convert_node_value(noderesult) if err >= 0 else None +- * finally: +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_free_node_contents(&noderesult) +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":632 ++ * finally: ++ * with nogil: ++ * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< ++ * return v ++ * + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L20; +- } +- __pyx_L20:; +- } +- } +- } +- if (PY_MAJOR_VERSION >= 3) { +- __Pyx_XGIVEREF(__pyx_t_13); +- __Pyx_XGIVEREF(__pyx_t_14); +- __Pyx_XGIVEREF(__pyx_t_15); +- __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); ++ mpv_free_node_contents((&__pyx_v_result)); + } +- __Pyx_XGIVEREF(__pyx_t_10); +- __Pyx_XGIVEREF(__pyx_t_11); +- __Pyx_XGIVEREF(__pyx_t_12); +- __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); +- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; +- __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; +- goto __pyx_L4_error; +- } +- __pyx_L12:; +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":552 +- * try: +- * data_id = id(data) +- * if not asynchronous: # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_command_node(self._ctx, &node, &noderesult) ++ /* "vidcutter/libs/pympv/mpv.pyx":631 ++ * v = _convert_node_value(result) ++ * finally: ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_free_node_contents(&result) ++ * return v + */ +- goto __pyx_L6; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L12; ++ } ++ __pyx_L12:; ++ } ++ } ++ goto __pyx_L9; + } ++ __pyx_L8_error:; ++ /*exception exit:*/{ ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); ++ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); ++ __Pyx_XGOTREF(__pyx_t_10); ++ __Pyx_XGOTREF(__pyx_t_11); ++ __Pyx_XGOTREF(__pyx_t_12); ++ __Pyx_XGOTREF(__pyx_t_13); ++ __Pyx_XGOTREF(__pyx_t_14); ++ __Pyx_XGOTREF(__pyx_t_15); ++ __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; ++ { ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":561 +- * mpv_free_node_contents(&noderesult) +- * else: +- * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< +- * if userdatas is None: +- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) ++ /* "vidcutter/libs/pympv/mpv.pyx":632 ++ * finally: ++ * with nogil: ++ * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< ++ * return v ++ * + */ +- /*else*/ { +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 561, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_16 = NULL; +- __pyx_t_8 = 0; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_16)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_16); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- __pyx_t_8 = 1; +- } +- } +- #if CYTHON_FAST_PYCALL +- if (PyFunction_Check(__pyx_t_2)) { +- PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) +- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- } else +- #endif +- #if CYTHON_FAST_PYCCALL +- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { +- PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) +- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- } else +- #endif +- { +- __pyx_t_17 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 561, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_17); +- if (__pyx_t_16) { +- __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL; +- } +- __Pyx_GIVEREF(__pyx_t_3); +- PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_8, __pyx_t_3); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_8, Py_None); +- __pyx_t_3 = 0; +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +- } +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v_userdatas = __pyx_t_1; +- __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":562 +- * else: +- * userdatas = self.reply_userdata.get(data_id, None) +- * if userdatas is None: # <<<<<<<<<<<<<< +- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- */ +- __pyx_t_6 = (__pyx_v_userdatas == Py_None); +- __pyx_t_5 = (__pyx_t_6 != 0); +- if (__pyx_t_5) { ++ mpv_free_node_contents((&__pyx_v_result)); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":563 +- * userdatas = self.reply_userdata.get(data_id, None) +- * if userdatas is None: +- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< +- * userdatas.add() +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":631 ++ * v = _convert_node_value(result) ++ * finally: ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_free_node_contents(&result) ++ * return v + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_17 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_17)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_17); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L17; ++ } ++ __pyx_L17:; ++ } + } +- __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_17, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); +- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 563, __pyx_L4_error) +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":562 +- * else: +- * userdatas = self.reply_userdata.get(data_id, None) +- * if userdatas is None: # <<<<<<<<<<<<<< +- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- */ + } +- +- /* "vidcutter/libs/pympv/mpv.pyx":564 +- * if userdatas is None: +- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_command_node_async(self._ctx, data_id, &node) +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_17 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_17)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_17); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } ++ if (PY_MAJOR_VERSION >= 3) { ++ __Pyx_XGIVEREF(__pyx_t_13); ++ __Pyx_XGIVEREF(__pyx_t_14); ++ __Pyx_XGIVEREF(__pyx_t_15); ++ __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); + } +- __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17) : __Pyx_PyObject_CallNoArg(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_XGIVEREF(__pyx_t_10); ++ __Pyx_XGIVEREF(__pyx_t_11); ++ __Pyx_XGIVEREF(__pyx_t_12); ++ __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); ++ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; ++ __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; ++ goto __pyx_L1_error; ++ } ++ __pyx_L9:; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":565 +- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_command_node_async(self._ctx, data_id, &node) +- * finally: ++ /* "vidcutter/libs/pympv/mpv.pyx":633 ++ * with nogil: ++ * mpv_free_node_contents(&result) ++ * return v # <<<<<<<<<<<<<< ++ * ++ * @_errors + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v_v); ++ __pyx_r = __pyx_v_v; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":566 +- * userdatas.add() +- * with nogil: +- * err = mpv_command_node_async(self._ctx, data_id, &node) # <<<<<<<<<<<<<< +- * finally: +- * self._free_native_value(node) ++ /* "vidcutter/libs/pympv/mpv.pyx":612 ++ * return default ++ * ++ * def get_property(self, prop): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_get_property""" ++ * assert self._ctx + */ +- __pyx_v_err = mpv_command_node_async(__pyx_v_self->_ctx, __pyx_v_data_id, (&__pyx_v_node)); +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":565 +- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_command_node_async(self._ctx, data_id, &node) +- * finally: +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L24; +- } +- __pyx_L24:; +- } +- } +- } +- __pyx_L6:; +- } ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_v); ++ __Pyx_XDECREF(__pyx_v_prop); ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":568 +- * err = mpv_command_node_async(self._ctx, data_id, &node) +- * finally: +- * self._free_native_value(node) # <<<<<<<<<<<<<< +- * if err < 0: +- * raise MPVError(err) +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- goto __pyx_L5; +- } +- __pyx_L4_error:; +- /*exception exit:*/{ +- __Pyx_PyThreadState_declare +- __Pyx_PyThreadState_assign +- __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; +- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; +- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); +- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13); +- __Pyx_XGOTREF(__pyx_t_15); +- __Pyx_XGOTREF(__pyx_t_14); +- __Pyx_XGOTREF(__pyx_t_13); +- __Pyx_XGOTREF(__pyx_t_12); +- __Pyx_XGOTREF(__pyx_t_11); +- __Pyx_XGOTREF(__pyx_t_10); +- __pyx_t_8 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_18 = __pyx_filename; +- { +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L26_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- } +- if (PY_MAJOR_VERSION >= 3) { +- __Pyx_XGIVEREF(__pyx_t_12); +- __Pyx_XGIVEREF(__pyx_t_11); +- __Pyx_XGIVEREF(__pyx_t_10); +- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); +- } +- __Pyx_XGIVEREF(__pyx_t_15); +- __Pyx_XGIVEREF(__pyx_t_14); +- __Pyx_XGIVEREF(__pyx_t_13); +- __Pyx_ErrRestore(__pyx_t_15, __pyx_t_14, __pyx_t_13); +- __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; +- __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_18; +- goto __pyx_L1_error; +- __pyx_L26_error:; +- if (PY_MAJOR_VERSION >= 3) { +- __Pyx_XGIVEREF(__pyx_t_12); +- __Pyx_XGIVEREF(__pyx_t_11); +- __Pyx_XGIVEREF(__pyx_t_10); +- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); +- } +- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; +- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; +- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; +- __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; +- goto __pyx_L1_error; +- } +- __pyx_L5:; +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":569 +- * finally: +- * self._free_native_value(node) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * return result +- */ +- __pyx_t_5 = ((__pyx_v_err < 0) != 0); +- if (unlikely(__pyx_t_5)) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":570 +- * self._free_native_value(node) +- * if err < 0: +- * raise MPVError(err) # <<<<<<<<<<<<<< +- * return result +- * +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 570, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_17); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_17) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 570, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":569 +- * finally: +- * self._free_native_value(node) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * return result +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":571 +- * if err < 0: +- * raise MPVError(err) +- * return result # <<<<<<<<<<<<<< +- * +- * @_errors +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_result); +- __pyx_r = __pyx_v_result; +- goto __pyx_L0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":530 +- * free(node.u.string) +- * +- * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< +- * """Send a command to mpv. +- * +- */ +- +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_16); +- __Pyx_XDECREF(__pyx_t_17); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_result); +- __Pyx_XDECREF(__pyx_v_userdatas); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":574 +- * +- * @_errors +- * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< +- * """Gets the value of a property asynchronously. +- * ++/* "vidcutter/libs/pympv/mpv.pyx":636 ++ * ++ * @_errors ++ * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_set_property and mpv_set_property_async""" ++ * assert self._ctx + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_14get_property_async[] = "Gets the value of a property asynchronously.\n\n Arguments:\n prop: Property to get the value of.\n\n Keyword arguments:\n data: Value to be passed into the reply_userdata of the response event.\n Wraps: mpv_get_property_async"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_18set_property[] = "Wraps: mpv_set_property and mpv_set_property_async"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_prop = 0; ++ PyObject *__pyx_v_value = 0; ++ PyObject *__pyx_v_asynchronous = 0; + PyObject *__pyx_v_data = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("get_property_async (wrapper)", 0); ++ __Pyx_RefNannySetupContext("set_property (wrapper)", 0); + { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,0}; +- PyObject* values[2] = {0,0}; +- values[1] = ((PyObject *)Py_None); ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_value,&__pyx_n_s_asynchronous,&__pyx_n_s_data,0}; ++ PyObject* values[4] = {0,0,0,0}; ++ values[1] = ((PyObject *)Py_True); ++ values[2] = ((PyObject *)Py_False); ++ values[3] = ((PyObject *)Py_None); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { ++ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); ++ CYTHON_FALLTHROUGH; ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +@@ -11875,15 +12258,31 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async(Py + CYTHON_FALLTHROUGH; + case 1: + if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); + if (value) { values[1] = value; kw_args--; } + } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_asynchronous); ++ if (value) { values[2] = value; kw_args--; } ++ } ++ CYTHON_FALLTHROUGH; ++ case 3: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); ++ if (value) { values[3] = value; kw_args--; } ++ } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_property_async") < 0)) __PYX_ERR(0, 574, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_property") < 0)) __PYX_ERR(0, 636, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { ++ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); ++ CYTHON_FALLTHROUGH; ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +@@ -11892,70 +12291,83 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async(Py + } + } + __pyx_v_prop = values[0]; +- __pyx_v_data = values[1]; ++ __pyx_v_value = values[1]; ++ __pyx_v_asynchronous = values[2]; ++ __pyx_v_data = values[3]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("get_property_async", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 574, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("set_property", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 636, __pyx_L3_error) + __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_14get_property_async(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_value, __pyx_v_asynchronous, __pyx_v_data); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data) { +- uint64_t __pyx_v_id_data; +- PyObject *__pyx_v_userdatas = NULL; +- char const *__pyx_v_prop_c; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data) { ++ enum mpv_format __pyx_v_format; ++ struct mpv_node __pyx_v_v; + int __pyx_v_err; ++ uint64_t __pyx_v_data_id; ++ char const *__pyx_v_prop_c; ++ PyObject *__pyx_v_userdatas = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; +- Py_hash_t __pyx_t_4; +- PyObject *__pyx_t_5 = NULL; ++ enum mpv_format __pyx_t_4; ++ char const *__pyx_t_5; + int __pyx_t_6; +- PyObject *__pyx_t_7 = NULL; +- int __pyx_t_8; +- int __pyx_t_9; +- char const *__pyx_t_10; ++ int __pyx_t_7; ++ Py_hash_t __pyx_t_8; ++ PyObject *__pyx_t_9 = NULL; ++ int __pyx_t_10; ++ PyObject *__pyx_t_11 = NULL; ++ int __pyx_t_12; ++ char const *__pyx_t_13; ++ PyObject *__pyx_t_14 = NULL; ++ PyObject *__pyx_t_15 = NULL; ++ PyObject *__pyx_t_16 = NULL; ++ PyObject *__pyx_t_17 = NULL; ++ PyObject *__pyx_t_18 = NULL; ++ PyObject *__pyx_t_19 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("get_property_async", 0); ++ __Pyx_RefNannySetupContext("set_property", 0); + __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":583 +- * data: Value to be passed into the reply_userdata of the response event. +- * Wraps: mpv_get_property_async""" ++ /* "vidcutter/libs/pympv/mpv.pyx":638 ++ * def set_property(self, prop, value=True, asynchronous=False, data=None): ++ * """Wraps: mpv_set_property and mpv_set_property_async""" + * assert self._ctx # <<<<<<<<<<<<<< + * prop = _strenc(prop) +- * cdef uint64_t id_data = hash(data) ++ * cdef mpv_format format = self._format_for(value) + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 583, __pyx_L1_error) ++ __PYX_ERR(0, 638, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":584 +- * Wraps: mpv_get_property_async""" ++ /* "vidcutter/libs/pympv/mpv.pyx":639 ++ * """Wraps: mpv_set_property and mpv_set_property_async""" + * assert self._ctx + * prop = _strenc(prop) # <<<<<<<<<<<<<< +- * cdef uint64_t id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) ++ * cdef mpv_format format = self._format_for(value) ++ * cdef mpv_node v = self._prep_native_value(value, format) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -11969,523 +12381,480 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14get_property_async(st + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":585 ++ /* "vidcutter/libs/pympv/mpv.pyx":640 + * assert self._ctx + * prop = _strenc(prop) +- * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is None: +- */ +- __pyx_t_4 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 585, __pyx_L1_error) +- __pyx_v_id_data = ((uint64_t)__pyx_t_4); +- +- /* "vidcutter/libs/pympv/mpv.pyx":586 +- * prop = _strenc(prop) +- * cdef uint64_t id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< +- * if userdatas is None: +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< ++ * cdef mpv_node v = self._prep_native_value(value, format) ++ * cdef int err + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_5 = NULL; +- __pyx_t_6 = 0; ++ __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_5)) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); +- __pyx_t_6 = 1; +- } +- } +- #if CYTHON_FAST_PYCALL +- if (PyFunction_Check(__pyx_t_2)) { +- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- } else +- #endif +- #if CYTHON_FAST_PYCCALL +- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { +- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- } else +- #endif +- { +- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- if (__pyx_t_5) { +- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; + } +- __Pyx_GIVEREF(__pyx_t_3); +- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); +- __pyx_t_3 = 0; +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v_userdatas = __pyx_t_1; +- __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":587 +- * cdef uint64_t id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is None: # <<<<<<<<<<<<<< +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- */ +- __pyx_t_8 = (__pyx_v_userdatas == Py_None); +- __pyx_t_9 = (__pyx_t_8 != 0); +- if (__pyx_t_9) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":588 +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is None: +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< +- * userdatas.add() +- * cdef const char* prop_c = prop +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_7 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_7)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_7); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); +- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 588, __pyx_L1_error) +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":587 +- * cdef uint64_t id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is None: # <<<<<<<<<<<<<< +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- */ +- } ++ __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_format = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":589 +- * if userdatas is None: +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) +- * userdatas.add() # <<<<<<<<<<<<<< +- * cdef const char* prop_c = prop +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":641 ++ * prop = _strenc(prop) ++ * cdef mpv_format format = self._format_for(value) ++ * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< ++ * cdef int err ++ * cdef uint64_t data_id + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 589, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_7 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_7)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_7); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":590 +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- * cdef const char* prop_c = prop # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_get_property_async( ++ /* "vidcutter/libs/pympv/mpv.pyx":645 ++ * cdef uint64_t data_id ++ * cdef const char* prop_c ++ * try: # <<<<<<<<<<<<<< ++ * prop_c = prop ++ * if not asynchronous: + */ +- __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L1_error) +- __pyx_v_prop_c = __pyx_t_10; ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":591 +- * userdatas.add() +- * cdef const char* prop_c = prop +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_get_property_async( +- * self._ctx, ++ /* "vidcutter/libs/pympv/mpv.pyx":646 ++ * cdef const char* prop_c ++ * try: ++ * prop_c = prop # <<<<<<<<<<<<<< ++ * if not asynchronous: ++ * with nogil: + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 646, __pyx_L4_error) ++ __pyx_v_prop_c = __pyx_t_5; + +- /* "vidcutter/libs/pympv/mpv.pyx":592 +- * cdef const char* prop_c = prop +- * with nogil: +- * err = mpv_get_property_async( # <<<<<<<<<<<<<< +- * self._ctx, +- * id_data, ++ /* "vidcutter/libs/pympv/mpv.pyx":647 ++ * try: ++ * prop_c = prop ++ * if not asynchronous: # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_set_property( + */ +- __pyx_v_err = mpv_get_property_async(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_prop_c, MPV_FORMAT_NODE); +- } ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 647, __pyx_L4_error) ++ __pyx_t_7 = ((!__pyx_t_6) != 0); ++ if (__pyx_t_7) { + +- /* "vidcutter/libs/pympv/mpv.pyx":591 +- * userdatas.add() +- * cdef const char* prop_c = prop +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_get_property_async( +- * self._ctx, ++ /* "vidcutter/libs/pympv/mpv.pyx":648 ++ * prop_c = prop ++ * if not asynchronous: ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_set_property( ++ * self._ctx, + */ +- /*finally:*/ { +- /*normal exit:*/{ ++ { + #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); + #endif +- goto __pyx_L6; +- } +- __pyx_L6:; +- } +- } ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":598 +- * MPV_FORMAT_NODE, +- * ) +- * return err # <<<<<<<<<<<<<< +- * +- * def try_get_property_async(self, prop, data=None, default=None): ++ /* "vidcutter/libs/pympv/mpv.pyx":649 ++ * if not asynchronous: ++ * with nogil: ++ * err = mpv_set_property( # <<<<<<<<<<<<<< ++ * self._ctx, ++ * prop_c, + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __pyx_v_err = mpv_set_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":574 +- * +- * @_errors +- * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< +- * """Gets the value of a property asynchronously. +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":648 ++ * prop_c = prop ++ * if not asynchronous: ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_set_property( ++ * self._ctx, + */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L9; ++ } ++ __pyx_L9:; ++ } ++ } + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_userdatas); +- __Pyx_XDECREF(__pyx_v_prop); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":655 ++ * &v ++ * ) ++ * return err # <<<<<<<<<<<<<< ++ * data_id = hash(data) ++ * userdatas = self.reply_userdata.get(data_id, None) ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L3_return; + +-/* "vidcutter/libs/pympv/mpv.pyx":600 +- * return err +- * +- * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":647 + * try: +- * return self.get_property_async(prop, data=data) ++ * prop_c = prop ++ * if not asynchronous: # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_set_property( + */ ++ } + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_17try_get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_17try_get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_prop = 0; +- PyObject *__pyx_v_data = 0; +- PyObject *__pyx_v_default = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("try_get_property_async (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,&__pyx_n_s_default,0}; +- PyObject* values[3] = {0,0,0}; +- values[1] = ((PyObject *)Py_None); +- values[2] = ((PyObject *)Py_None); +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); +- if (value) { values[1] = value; kw_args--; } +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); +- if (value) { values[2] = value; kw_args--; } +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property_async") < 0)) __PYX_ERR(0, 600, __pyx_L3_error) ++ /* "vidcutter/libs/pympv/mpv.pyx":656 ++ * ) ++ * return err ++ * data_id = hash(data) # <<<<<<<<<<<<<< ++ * userdatas = self.reply_userdata.get(data_id, None) ++ * if userdatas is None: ++ */ ++ __pyx_t_8 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_8 == ((Py_hash_t)-1))) __PYX_ERR(0, 656, __pyx_L4_error) ++ __pyx_v_data_id = ((uint64_t)__pyx_t_8); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":657 ++ * return err ++ * data_id = hash(data) ++ * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< ++ * if userdatas is None: ++ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) ++ */ ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_9 = NULL; ++ __pyx_t_10 = 0; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_9)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_9); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ __pyx_t_10 = 1; + } +- } else { +- switch (PyTuple_GET_SIZE(__pyx_args)) { +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- break; +- default: goto __pyx_L5_argtuple_error; ++ } ++ #if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(__pyx_t_2)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; ++ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ } else ++ #endif ++ #if CYTHON_FAST_PYCCALL ++ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; ++ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ } else ++ #endif ++ { ++ __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_11); ++ if (__pyx_t_9) { ++ __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; + } ++ __Pyx_GIVEREF(__pyx_t_3); ++ PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_3); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, Py_None); ++ __pyx_t_3 = 0; ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } +- __pyx_v_prop = values[0]; +- __pyx_v_data = values[1]; +- __pyx_v_default = values[2]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("try_get_property_async", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 600, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_16try_get_property_async(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data, __pyx_v_default); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v_userdatas = __pyx_t_1; ++ __pyx_t_1 = 0; + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16try_get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data, PyObject *__pyx_v_default) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- int __pyx_t_8; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("try_get_property_async", 0); ++ /* "vidcutter/libs/pympv/mpv.pyx":658 ++ * data_id = hash(data) ++ * userdatas = self.reply_userdata.get(data_id, None) ++ * if userdatas is None: # <<<<<<<<<<<<<< ++ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() ++ */ ++ __pyx_t_7 = (__pyx_v_userdatas == Py_None); ++ __pyx_t_6 = (__pyx_t_7 != 0); ++ if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":601 +- * +- * def try_get_property_async(self, prop, data=None, default=None): +- * try: # <<<<<<<<<<<<<< +- * return self.get_property_async(prop, data=data) +- * except MPVError: ++ /* "vidcutter/libs/pympv/mpv.pyx":659 ++ * userdatas = self.reply_userdata.get(data_id, None) ++ * if userdatas is None: ++ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< ++ * userdatas.add() ++ * with nogil: + */ +- { +- __Pyx_PyThreadState_declare +- __Pyx_PyThreadState_assign +- __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); +- __Pyx_XGOTREF(__pyx_t_1); +- __Pyx_XGOTREF(__pyx_t_2); +- __Pyx_XGOTREF(__pyx_t_3); +- /*try:*/ { ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_11 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_11)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_11); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_11, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); ++ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 659, __pyx_L4_error) ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":602 +- * def try_get_property_async(self, prop, data=None, default=None): +- * try: +- * return self.get_property_async(prop, data=data) # <<<<<<<<<<<<<< +- * except MPVError: +- * return default ++ /* "vidcutter/libs/pympv/mpv.pyx":658 ++ * data_id = hash(data) ++ * userdatas = self.reply_userdata.get(data_id, None) ++ * if userdatas is None: # <<<<<<<<<<<<<< ++ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L3_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 602, __pyx_L3_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_INCREF(__pyx_v_prop); +- __Pyx_GIVEREF(__pyx_v_prop); +- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_prop); +- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 602, __pyx_L3_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 602, __pyx_L3_error) +- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 602, __pyx_L3_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __pyx_r = __pyx_t_7; +- __pyx_t_7 = 0; +- goto __pyx_L7_try_return; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":601 +- * +- * def try_get_property_async(self, prop, data=None, default=None): +- * try: # <<<<<<<<<<<<<< +- * return self.get_property_async(prop, data=data) +- * except MPVError: ++ /* "vidcutter/libs/pympv/mpv.pyx":660 ++ * if userdatas is None: ++ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_set_property_async( + */ ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_11 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_11)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_11); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } + } +- __pyx_L3_error:; +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L4_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":603 +- * try: +- * return self.get_property_async(prop, data=data) +- * except MPVError: # <<<<<<<<<<<<<< +- * return default +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":661 ++ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_set_property_async( ++ * self._ctx, + */ +- __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_4); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5); +- __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; +- if (__pyx_t_8) { +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); +- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 603, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_GOTREF(__pyx_t_7); ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":604 +- * return self.get_property_async(prop, data=data) +- * except MPVError: +- * return default # <<<<<<<<<<<<<< +- * +- * def try_get_property(self, prop, default=None): ++ /* "vidcutter/libs/pympv/mpv.pyx":662 ++ * userdatas.add() ++ * with nogil: ++ * err = mpv_set_property_async( # <<<<<<<<<<<<<< ++ * self._ctx, ++ * data_id, + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_default); +- __pyx_r = __pyx_v_default; +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- goto __pyx_L6_except_return; ++ __pyx_v_err = mpv_set_property_async(__pyx_v_self->_ctx, __pyx_v_data_id, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":661 ++ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) ++ * userdatas.add() ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_set_property_async( ++ * self._ctx, ++ */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L13; ++ } ++ __pyx_L13:; ++ } + } +- goto __pyx_L5_except_error; +- __pyx_L5_except_error:; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":601 ++ /* "vidcutter/libs/pympv/mpv.pyx":670 ++ * ) ++ * finally: ++ * self._free_native_value(v) # <<<<<<<<<<<<<< ++ * return err + * +- * def try_get_property_async(self, prop, data=None, default=None): +- * try: # <<<<<<<<<<<<<< +- * return self.get_property_async(prop, data=data) +- * except MPVError: + */ +- __Pyx_XGIVEREF(__pyx_t_1); +- __Pyx_XGIVEREF(__pyx_t_2); +- __Pyx_XGIVEREF(__pyx_t_3); +- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); +- goto __pyx_L1_error; +- __pyx_L7_try_return:; +- __Pyx_XGIVEREF(__pyx_t_1); +- __Pyx_XGIVEREF(__pyx_t_2); +- __Pyx_XGIVEREF(__pyx_t_3); +- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); +- goto __pyx_L0; +- __pyx_L6_except_return:; +- __Pyx_XGIVEREF(__pyx_t_1); +- __Pyx_XGIVEREF(__pyx_t_2); +- __Pyx_XGIVEREF(__pyx_t_3); +- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); +- goto __pyx_L0; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ goto __pyx_L5; ++ } ++ __pyx_L4_error:; ++ /*exception exit:*/{ ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; ++ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; ++ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); ++ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); ++ __Pyx_XGOTREF(__pyx_t_14); ++ __Pyx_XGOTREF(__pyx_t_15); ++ __Pyx_XGOTREF(__pyx_t_16); ++ __Pyx_XGOTREF(__pyx_t_17); ++ __Pyx_XGOTREF(__pyx_t_18); ++ __Pyx_XGOTREF(__pyx_t_19); ++ __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; ++ { ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L15_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ } ++ if (PY_MAJOR_VERSION >= 3) { ++ __Pyx_XGIVEREF(__pyx_t_17); ++ __Pyx_XGIVEREF(__pyx_t_18); ++ __Pyx_XGIVEREF(__pyx_t_19); ++ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); ++ } ++ __Pyx_XGIVEREF(__pyx_t_14); ++ __Pyx_XGIVEREF(__pyx_t_15); ++ __Pyx_XGIVEREF(__pyx_t_16); ++ __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); ++ __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; ++ __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; ++ goto __pyx_L1_error; ++ __pyx_L15_error:; ++ if (PY_MAJOR_VERSION >= 3) { ++ __Pyx_XGIVEREF(__pyx_t_17); ++ __Pyx_XGIVEREF(__pyx_t_18); ++ __Pyx_XGIVEREF(__pyx_t_19); ++ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); ++ } ++ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; ++ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; ++ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; ++ __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; ++ goto __pyx_L1_error; ++ } ++ __pyx_L3_return: { ++ __pyx_t_19 = __pyx_r; ++ __pyx_r = 0; ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_r = __pyx_t_19; ++ __pyx_t_19 = 0; ++ goto __pyx_L0; ++ } ++ __pyx_L5:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":600 +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":671 ++ * finally: ++ * self._free_native_value(v) ++ * return err # <<<<<<<<<<<<<< + * +- * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< +- * try: +- * return self.get_property_async(prop, data=data) ++ * @_errors ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":636 ++ * ++ * @_errors ++ * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_set_property and mpv_set_property_async""" ++ * assert self._ctx + */ + + /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_9); ++ __Pyx_XDECREF(__pyx_t_11); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_XDECREF(__pyx_v_userdatas); ++ __Pyx_XDECREF(__pyx_v_prop); ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":606 +- * return default ++/* "vidcutter/libs/pympv/mpv.pyx":674 + * +- * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< +- * try: +- * return self.get_property(prop) ++ * @_errors ++ * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_set_option""" ++ * assert self._ctx + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_20set_option[] = "Wraps: mpv_set_option"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_prop = 0; +- PyObject *__pyx_v_default = 0; ++ PyObject *__pyx_v_value = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("try_get_property (wrapper)", 0); ++ __Pyx_RefNannySetupContext("set_option (wrapper)", 0); + { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_default,0}; ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_value,0}; + PyObject* values[2] = {0,0}; +- values[1] = ((PyObject *)Py_None); ++ values[1] = ((PyObject *)Py_True); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +@@ -12505,12 +12874,12 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property(PyOb + CYTHON_FALLTHROUGH; + case 1: + if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); + if (value) { values[1] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property") < 0)) __PYX_ERR(0, 606, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_option") < 0)) __PYX_ERR(0, 674, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -12522,258 +12891,74 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property(PyOb + } + } + __pyx_v_prop = values[0]; +- __pyx_v_default = values[1]; ++ __pyx_v_value = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("try_get_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 606, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("set_option", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 674, __pyx_L3_error) + __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_18try_get_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_default); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18try_get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_default) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- int __pyx_t_8; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("try_get_property", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":607 +- * +- * def try_get_property(self, prop, default=None): +- * try: # <<<<<<<<<<<<<< +- * return self.get_property(prop) +- * except MPVError: +- */ +- { +- __Pyx_PyThreadState_declare +- __Pyx_PyThreadState_assign +- __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); +- __Pyx_XGOTREF(__pyx_t_1); +- __Pyx_XGOTREF(__pyx_t_2); +- __Pyx_XGOTREF(__pyx_t_3); +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":608 +- * def try_get_property(self, prop, default=None): +- * try: +- * return self.get_property(prop) # <<<<<<<<<<<<<< +- * except MPVError: +- * return default +- */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L3_error) +- __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_6 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { +- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); +- if (likely(__pyx_t_6)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); +- __Pyx_INCREF(__pyx_t_6); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_5, function); +- } +- } +- __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_prop); +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L3_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __pyx_r = __pyx_t_4; +- __pyx_t_4 = 0; +- goto __pyx_L7_try_return; +- +- /* "vidcutter/libs/pympv/mpv.pyx":607 +- * +- * def try_get_property(self, prop, default=None): +- * try: # <<<<<<<<<<<<<< +- * return self.get_property(prop) +- * except MPVError: +- */ +- } +- __pyx_L3_error:; +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":609 +- * try: +- * return self.get_property(prop) +- * except MPVError: # <<<<<<<<<<<<<< +- * return default +- * +- */ +- __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 609, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6); +- __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; +- if (__pyx_t_8) { +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); +- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 609, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_GOTREF(__pyx_t_4); +- +- /* "vidcutter/libs/pympv/mpv.pyx":610 +- * return self.get_property(prop) +- * except MPVError: +- * return default # <<<<<<<<<<<<<< +- * +- * def get_property(self, prop): +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_default); +- __pyx_r = __pyx_v_default; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- goto __pyx_L6_except_return; +- } +- goto __pyx_L5_except_error; +- __pyx_L5_except_error:; +- +- /* "vidcutter/libs/pympv/mpv.pyx":607 +- * +- * def try_get_property(self, prop, default=None): +- * try: # <<<<<<<<<<<<<< +- * return self.get_property(prop) +- * except MPVError: +- */ +- __Pyx_XGIVEREF(__pyx_t_1); +- __Pyx_XGIVEREF(__pyx_t_2); +- __Pyx_XGIVEREF(__pyx_t_3); +- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); +- goto __pyx_L1_error; +- __pyx_L7_try_return:; +- __Pyx_XGIVEREF(__pyx_t_1); +- __Pyx_XGIVEREF(__pyx_t_2); +- __Pyx_XGIVEREF(__pyx_t_3); +- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); +- goto __pyx_L0; +- __pyx_L6_except_return:; +- __Pyx_XGIVEREF(__pyx_t_1); +- __Pyx_XGIVEREF(__pyx_t_2); +- __Pyx_XGIVEREF(__pyx_t_3); +- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); +- goto __pyx_L0; +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":606 +- * return default +- * +- * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< +- * try: +- * return self.get_property(prop) +- */ +- +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":612 +- * return default +- * +- * def get_property(self, prop): # <<<<<<<<<<<<<< +- * """Wraps: mpv_get_property""" +- * assert self._ctx +- */ +- +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21get_property(PyObject *__pyx_v_self, PyObject *__pyx_v_prop); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_20get_property[] = "Wraps: mpv_get_property"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21get_property(PyObject *__pyx_v_self, PyObject *__pyx_v_prop) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("get_property (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_prop)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_value); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop) { +- struct mpv_node __pyx_v_result; +- char const *__pyx_v_prop_c; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value) { ++ enum mpv_format __pyx_v_format; ++ struct mpv_node __pyx_v_v; + int __pyx_v_err; +- PyObject *__pyx_v_v = NULL; ++ char const *__pyx_v_prop_c; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; +- char const *__pyx_t_4; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; ++ enum mpv_format __pyx_t_4; ++ char const *__pyx_t_5; ++ int __pyx_t_6; + int __pyx_t_7; +- int __pyx_t_8; +- char const *__pyx_t_9; ++ char const *__pyx_t_8; ++ PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; +- PyObject *__pyx_t_15 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("get_property", 0); ++ __Pyx_RefNannySetupContext("set_option", 0); + __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":614 +- * def get_property(self, prop): +- * """Wraps: mpv_get_property""" ++ /* "vidcutter/libs/pympv/mpv.pyx":676 ++ * def set_option(self, prop, value=True): ++ * """Wraps: mpv_set_option""" + * assert self._ctx # <<<<<<<<<<<<<< +- * cdef mpv_node result + * prop = _strenc(prop) ++ * cdef mpv_format format = self._format_for(value) + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 614, __pyx_L1_error) ++ __PYX_ERR(0, 676, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":616 ++ /* "vidcutter/libs/pympv/mpv.pyx":677 ++ * """Wraps: mpv_set_option""" + * assert self._ctx +- * cdef mpv_node result + * prop = _strenc(prop) # <<<<<<<<<<<<<< +- * cdef const char* prop_c = prop +- * cdef int err ++ * cdef mpv_format format = self._format_for(value) ++ * cdef mpv_node v = self._prep_native_value(value, format) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -12787,275 +12972,200 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(struct _ + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":617 +- * cdef mpv_node result ++ /* "vidcutter/libs/pympv/mpv.pyx":678 ++ * assert self._ctx + * prop = _strenc(prop) +- * cdef const char* prop_c = prop # <<<<<<<<<<<<<< +- * cdef int err +- * with nogil: +- */ +- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 617, __pyx_L1_error) +- __pyx_v_prop_c = __pyx_t_4; +- +- /* "vidcutter/libs/pympv/mpv.pyx":619 +- * cdef const char* prop_c = prop ++ * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< ++ * cdef mpv_node v = self._prep_native_value(value, format) + * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_get_property( +- * self._ctx, + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 678, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_format = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":620 ++ /* "vidcutter/libs/pympv/mpv.pyx":679 ++ * prop = _strenc(prop) ++ * cdef mpv_format format = self._format_for(value) ++ * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< + * cdef int err +- * with nogil: +- * err = mpv_get_property( # <<<<<<<<<<<<<< +- * self._ctx, +- * prop_c, ++ * cdef const char* prop_c + */ +- __pyx_v_err = mpv_get_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_result)); +- } ++ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":619 +- * cdef const char* prop_c = prop ++ /* "vidcutter/libs/pympv/mpv.pyx":682 + * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_get_property( +- * self._ctx, +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":626 +- * &result, +- * ) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * try: ++ * cdef const char* prop_c ++ * try: # <<<<<<<<<<<<<< ++ * prop_c = prop ++ * with nogil: + */ +- __pyx_t_5 = ((__pyx_v_err < 0) != 0); +- if (unlikely(__pyx_t_5)) { ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":627 +- * ) +- * if err < 0: +- * raise MPVError(err) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":683 ++ * cdef const char* prop_c + * try: +- * v = _convert_node_value(result) ++ * prop_c = prop # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_set_option( + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 627, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_6 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_6)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_6); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 627, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 683, __pyx_L4_error) ++ __pyx_v_prop_c = __pyx_t_5; + +- /* "vidcutter/libs/pympv/mpv.pyx":626 +- * &result, +- * ) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":684 + * try: ++ * prop_c = prop ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_set_option( ++ * self._ctx, + */ +- } ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":628 +- * if err < 0: +- * raise MPVError(err) +- * try: # <<<<<<<<<<<<<< +- * v = _convert_node_value(result) +- * finally: ++ /* "vidcutter/libs/pympv/mpv.pyx":685 ++ * prop_c = prop ++ * with nogil: ++ * err = mpv_set_option( # <<<<<<<<<<<<<< ++ * self._ctx, ++ * prop_c, + */ +- /*try:*/ { ++ __pyx_v_err = mpv_set_option(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":629 +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":684 + * try: +- * v = _convert_node_value(result) # <<<<<<<<<<<<<< +- * finally: +- * with nogil: ++ * prop_c = prop ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_set_option( ++ * self._ctx, + */ +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L8_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_v = __pyx_t_1; +- __pyx_t_1 = 0; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L8; ++ } ++ __pyx_L8:; ++ } ++ } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":631 +- * v = _convert_node_value(result) ++ /* "vidcutter/libs/pympv/mpv.pyx":692 ++ * ) + * finally: +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_free_node_contents(&result) +- * return v ++ * self._free_native_value(v) # <<<<<<<<<<<<<< ++ * return err ++ * + */ + /*finally:*/ { + /*normal exit:*/{ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":632 +- * finally: +- * with nogil: +- * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< +- * return v +- * +- */ +- mpv_free_node_contents((&__pyx_v_result)); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":631 +- * v = _convert_node_value(result) +- * finally: +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_free_node_contents(&result) +- * return v +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L12; +- } +- __pyx_L12:; +- } +- } +- goto __pyx_L9; ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ goto __pyx_L5; + } +- __pyx_L8_error:; ++ __pyx_L4_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign +- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; ++ __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); +- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); ++ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); ++ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); ++ __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_13); + __Pyx_XGOTREF(__pyx_t_14); +- __Pyx_XGOTREF(__pyx_t_15); +- __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; ++ __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; + { +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":632 +- * finally: +- * with nogil: +- * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< +- * return v +- * +- */ +- mpv_free_node_contents((&__pyx_v_result)); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":631 +- * v = _convert_node_value(result) +- * finally: +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_free_node_contents(&result) +- * return v +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L17; +- } +- __pyx_L17:; +- } +- } ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L10_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + if (PY_MAJOR_VERSION >= 3) { ++ __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_13); + __Pyx_XGIVEREF(__pyx_t_14); +- __Pyx_XGIVEREF(__pyx_t_15); +- __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); ++ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); + } ++ __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); +- __Pyx_XGIVEREF(__pyx_t_12); +- __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); +- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; +- __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; ++ __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); ++ __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; ++ __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; ++ goto __pyx_L1_error; ++ __pyx_L10_error:; ++ if (PY_MAJOR_VERSION >= 3) { ++ __Pyx_XGIVEREF(__pyx_t_12); ++ __Pyx_XGIVEREF(__pyx_t_13); ++ __Pyx_XGIVEREF(__pyx_t_14); ++ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); ++ } ++ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; ++ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; ++ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; ++ __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; + goto __pyx_L1_error; + } +- __pyx_L9:; ++ __pyx_L5:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":633 +- * with nogil: +- * mpv_free_node_contents(&result) +- * return v # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":693 ++ * finally: ++ * self._free_native_value(v) ++ * return err # <<<<<<<<<<<<<< + * + * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v_v); +- __pyx_r = __pyx_v_v; ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":612 +- * return default ++ /* "vidcutter/libs/pympv/mpv.pyx":674 + * +- * def get_property(self, prop): # <<<<<<<<<<<<<< +- * """Wraps: mpv_get_property""" ++ * @_errors ++ * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_set_option""" + * assert self._ctx + */ + +@@ -13064,1047 +13174,798 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(struct _ + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_v); + __Pyx_XDECREF(__pyx_v_prop); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":636 ++/* "vidcutter/libs/pympv/mpv.pyx":696 + * + * @_errors +- * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< +- * """Wraps: mpv_set_property and mpv_set_property_async""" ++ * def initialize(self): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_initialize""" + * assert self._ctx + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_23set_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_22set_property[] = "Wraps: mpv_set_property and mpv_set_property_async"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_23set_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_prop = 0; +- PyObject *__pyx_v_value = 0; +- PyObject *__pyx_v_asynchronous = 0; +- PyObject *__pyx_v_data = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_23initialize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_22initialize[] = "Wraps: mpv_initialize"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_23initialize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_property (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_value,&__pyx_n_s_asynchronous,&__pyx_n_s_data,0}; +- PyObject* values[4] = {0,0,0,0}; +- values[1] = ((PyObject *)Py_True); +- values[2] = ((PyObject *)Py_False); +- values[3] = ((PyObject *)Py_None); +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); +- CYTHON_FALLTHROUGH; +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); +- if (value) { values[1] = value; kw_args--; } +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_asynchronous); +- if (value) { values[2] = value; kw_args--; } +- } +- CYTHON_FALLTHROUGH; +- case 3: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); +- if (value) { values[3] = value; kw_args--; } +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_property") < 0)) __PYX_ERR(0, 636, __pyx_L3_error) +- } +- } else { +- switch (PyTuple_GET_SIZE(__pyx_args)) { +- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); +- CYTHON_FALLTHROUGH; +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- break; +- default: goto __pyx_L5_argtuple_error; +- } +- } +- __pyx_v_prop = values[0]; +- __pyx_v_value = values[1]; +- __pyx_v_asynchronous = values[2]; +- __pyx_v_data = values[3]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("set_property", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 636, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_22set_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_value, __pyx_v_asynchronous, __pyx_v_data); ++ __Pyx_RefNannySetupContext("initialize (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22set_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data) { +- enum mpv_format __pyx_v_format; +- struct mpv_node __pyx_v_v; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { + int __pyx_v_err; +- uint64_t __pyx_v_data_id; +- char const *__pyx_v_prop_c; +- PyObject *__pyx_v_userdatas = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- enum mpv_format __pyx_t_4; +- char const *__pyx_t_5; +- int __pyx_t_6; +- int __pyx_t_7; +- Py_hash_t __pyx_t_8; +- PyObject *__pyx_t_9 = NULL; +- int __pyx_t_10; +- PyObject *__pyx_t_11 = NULL; +- int __pyx_t_12; +- char const *__pyx_t_13; +- PyObject *__pyx_t_14 = NULL; +- PyObject *__pyx_t_15 = NULL; +- PyObject *__pyx_t_16 = NULL; +- PyObject *__pyx_t_17 = NULL; +- PyObject *__pyx_t_18 = NULL; +- PyObject *__pyx_t_19 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("set_property", 0); +- __Pyx_INCREF(__pyx_v_prop); ++ __Pyx_RefNannySetupContext("initialize", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":638 +- * def set_property(self, prop, value=True, asynchronous=False, data=None): +- * """Wraps: mpv_set_property and mpv_set_property_async""" ++ /* "vidcutter/libs/pympv/mpv.pyx":698 ++ * def initialize(self): ++ * """Wraps: mpv_initialize""" + * assert self._ctx # <<<<<<<<<<<<<< +- * prop = _strenc(prop) +- * cdef mpv_format format = self._format_for(value) ++ * cdef int err ++ * with nogil: + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 638, __pyx_L1_error) ++ __PYX_ERR(0, 698, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":639 +- * """Wraps: mpv_set_property and mpv_set_property_async""" ++ /* "vidcutter/libs/pympv/mpv.pyx":700 + * assert self._ctx +- * prop = _strenc(prop) # <<<<<<<<<<<<<< +- * cdef mpv_format format = self._format_for(value) +- * cdef mpv_node v = self._prep_native_value(value, format) ++ * cdef int err ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_initialize(self._ctx) ++ * return err + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); +- __pyx_t_1 = 0; ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":640 +- * assert self._ctx +- * prop = _strenc(prop) +- * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< +- * cdef mpv_node v = self._prep_native_value(value, format) ++ /* "vidcutter/libs/pympv/mpv.pyx":701 + * cdef int err ++ * with nogil: ++ * err = mpv_initialize(self._ctx) # <<<<<<<<<<<<<< ++ * return err ++ * + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_format = __pyx_t_4; ++ __pyx_v_err = mpv_initialize(__pyx_v_self->_ctx); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":641 +- * prop = _strenc(prop) +- * cdef mpv_format format = self._format_for(value) +- * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":700 ++ * assert self._ctx + * cdef int err +- * cdef uint64_t data_id +- */ +- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":645 +- * cdef uint64_t data_id +- * cdef const char* prop_c +- * try: # <<<<<<<<<<<<<< +- * prop_c = prop +- * if not asynchronous: ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_initialize(self._ctx) ++ * return err + */ +- /*try:*/ { ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":646 +- * cdef const char* prop_c +- * try: +- * prop_c = prop # <<<<<<<<<<<<<< +- * if not asynchronous: +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":702 ++ * with nogil: ++ * err = mpv_initialize(self._ctx) ++ * return err # <<<<<<<<<<<<<< ++ * ++ * def wait_event(self, timeout=None): + */ +- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 646, __pyx_L4_error) +- __pyx_v_prop_c = __pyx_t_5; ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":647 +- * try: +- * prop_c = prop +- * if not asynchronous: # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_set_property( ++ /* "vidcutter/libs/pympv/mpv.pyx":696 ++ * ++ * @_errors ++ * def initialize(self): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_initialize""" ++ * assert self._ctx + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 647, __pyx_L4_error) +- __pyx_t_7 = ((!__pyx_t_6) != 0); +- if (__pyx_t_7) { + +- /* "vidcutter/libs/pympv/mpv.pyx":648 +- * prop_c = prop +- * if not asynchronous: +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_set_property( +- * self._ctx, +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":649 +- * if not asynchronous: +- * with nogil: +- * err = mpv_set_property( # <<<<<<<<<<<<<< +- * self._ctx, +- * prop_c, ++/* "vidcutter/libs/pympv/mpv.pyx":704 ++ * return err ++ * ++ * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_wait_event""" ++ * assert self._ctx + */ +- __pyx_v_err = mpv_set_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":648 +- * prop_c = prop +- * if not asynchronous: +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_set_property( +- * self._ctx, +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L9; +- } +- __pyx_L9:; +- } ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_24wait_event[] = "Wraps: mpv_wait_event"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_timeout = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("wait_event (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; ++ PyObject* values[1] = {0}; ++ values[0] = ((PyObject *)Py_None); ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); ++ if (value) { values[0] = value; kw_args--; } ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_event") < 0)) __PYX_ERR(0, 704, __pyx_L3_error) ++ } ++ } else { ++ switch (PyTuple_GET_SIZE(__pyx_args)) { ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; + } ++ } ++ __pyx_v_timeout = values[0]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("wait_event", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 704, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_timeout); + +- /* "vidcutter/libs/pympv/mpv.pyx":655 +- * &v +- * ) +- * return err # <<<<<<<<<<<<<< +- * data_id = hash(data) +- * userdatas = self.reply_userdata.get(data_id, None) +- */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L3_return; ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":647 +- * try: +- * prop_c = prop +- * if not asynchronous: # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_set_property( ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_timeout) { ++ double __pyx_v_timeout_d; ++ struct mpv_event *__pyx_v_event; ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ double __pyx_t_1; ++ int __pyx_t_2; ++ double __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("wait_event", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":706 ++ * def wait_event(self, timeout=None): ++ * """Wraps: mpv_wait_event""" ++ * assert self._ctx # <<<<<<<<<<<<<< ++ * cdef double timeout_d = timeout if timeout is not None else -1 ++ * cdef mpv_event* event + */ ++ #ifndef CYTHON_WITHOUT_ASSERTIONS ++ if (unlikely(!Py_OptimizeFlag)) { ++ if (unlikely(!(__pyx_v_self->_ctx != 0))) { ++ PyErr_SetNone(PyExc_AssertionError); ++ __PYX_ERR(0, 706, __pyx_L1_error) + } ++ } ++ #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":656 +- * ) +- * return err +- * data_id = hash(data) # <<<<<<<<<<<<<< +- * userdatas = self.reply_userdata.get(data_id, None) +- * if userdatas is None: ++ /* "vidcutter/libs/pympv/mpv.pyx":707 ++ * """Wraps: mpv_wait_event""" ++ * assert self._ctx ++ * cdef double timeout_d = timeout if timeout is not None else -1 # <<<<<<<<<<<<<< ++ * cdef mpv_event* event ++ * with nogil: + */ +- __pyx_t_8 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_8 == ((Py_hash_t)-1))) __PYX_ERR(0, 656, __pyx_L4_error) +- __pyx_v_data_id = ((uint64_t)__pyx_t_8); +- +- /* "vidcutter/libs/pympv/mpv.pyx":657 +- * return err +- * data_id = hash(data) +- * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< +- * if userdatas is None: +- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 657, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_9 = NULL; +- __pyx_t_10 = 0; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_9)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_9); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- __pyx_t_10 = 1; +- } +- } +- #if CYTHON_FAST_PYCALL +- if (PyFunction_Check(__pyx_t_2)) { +- PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) +- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- } else +- #endif +- #if CYTHON_FAST_PYCCALL +- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { +- PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) +- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- } else +- #endif +- { +- __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 657, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_11); +- if (__pyx_t_9) { +- __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; +- } +- __Pyx_GIVEREF(__pyx_t_3); +- PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_3); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, Py_None); +- __pyx_t_3 = 0; +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; +- } +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v_userdatas = __pyx_t_1; +- __pyx_t_1 = 0; ++ __pyx_t_2 = (__pyx_v_timeout != Py_None); ++ if ((__pyx_t_2 != 0)) { ++ __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_timeout); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 707, __pyx_L1_error) ++ __pyx_t_1 = __pyx_t_3; ++ } else { ++ __pyx_t_1 = -1.0; ++ } ++ __pyx_v_timeout_d = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":658 +- * data_id = hash(data) +- * userdatas = self.reply_userdata.get(data_id, None) +- * if userdatas is None: # <<<<<<<<<<<<<< +- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() ++ /* "vidcutter/libs/pympv/mpv.pyx":709 ++ * cdef double timeout_d = timeout if timeout is not None else -1 ++ * cdef mpv_event* event ++ * with nogil: # <<<<<<<<<<<<<< ++ * event = mpv_wait_event(self._ctx, timeout_d) ++ * return Event()._init(event, self) + */ +- __pyx_t_7 = (__pyx_v_userdatas == Py_None); +- __pyx_t_6 = (__pyx_t_7 != 0); +- if (__pyx_t_6) { ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":659 +- * userdatas = self.reply_userdata.get(data_id, None) +- * if userdatas is None: +- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< +- * userdatas.add() +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":710 ++ * cdef mpv_event* event ++ * with nogil: ++ * event = mpv_wait_event(self._ctx, timeout_d) # <<<<<<<<<<<<<< ++ * return Event()._init(event, self) ++ * + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_11 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_11)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_11); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } ++ __pyx_v_event = mpv_wait_event(__pyx_v_self->_ctx, __pyx_v_timeout_d); + } +- __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_11, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); +- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 659, __pyx_L4_error) +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":658 +- * data_id = hash(data) +- * userdatas = self.reply_userdata.get(data_id, None) +- * if userdatas is None: # <<<<<<<<<<<<<< +- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- */ +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":660 +- * if userdatas is None: +- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_set_property_async( ++ /* "vidcutter/libs/pympv/mpv.pyx":709 ++ * cdef double timeout_d = timeout if timeout is not None else -1 ++ * cdef mpv_event* event ++ * with nogil: # <<<<<<<<<<<<<< ++ * event = mpv_wait_event(self._ctx, timeout_d) ++ * return Event()._init(event, self) + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_11 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_11)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_11); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; + } +- } +- __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11) : __Pyx_PyObject_CallNoArg(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L4_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":661 +- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_set_property_async( +- * self._ctx, ++ /* "vidcutter/libs/pympv/mpv.pyx":711 ++ * with nogil: ++ * event = mpv_wait_event(self._ctx, timeout_d) ++ * return Event()._init(event, self) # <<<<<<<<<<<<<< ++ * ++ * def wakeup(self): + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 711, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4), __pyx_v_event, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_r = __pyx_t_5; ++ __pyx_t_5 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":662 +- * userdatas.add() +- * with nogil: +- * err = mpv_set_property_async( # <<<<<<<<<<<<<< +- * self._ctx, +- * data_id, ++ /* "vidcutter/libs/pympv/mpv.pyx":704 ++ * return err ++ * ++ * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_wait_event""" ++ * assert self._ctx + */ +- __pyx_v_err = mpv_set_property_async(__pyx_v_self->_ctx, __pyx_v_data_id, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":661 +- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) +- * userdatas.add() +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_set_property_async( +- * self._ctx, +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L13; +- } +- __pyx_L13:; +- } +- } +- } ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":670 +- * ) +- * finally: +- * self._free_native_value(v) # <<<<<<<<<<<<<< +- * return err ++/* "vidcutter/libs/pympv/mpv.pyx":713 ++ * return Event()._init(event, self) + * ++ * def wakeup(self): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_wakeup""" ++ * assert self._ctx + */ +- /*finally:*/ { +- /*normal exit:*/{ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- goto __pyx_L5; +- } +- __pyx_L4_error:; +- /*exception exit:*/{ +- __Pyx_PyThreadState_declare +- __Pyx_PyThreadState_assign +- __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; +- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; +- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); +- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); +- __Pyx_XGOTREF(__pyx_t_14); +- __Pyx_XGOTREF(__pyx_t_15); +- __Pyx_XGOTREF(__pyx_t_16); +- __Pyx_XGOTREF(__pyx_t_17); +- __Pyx_XGOTREF(__pyx_t_18); +- __Pyx_XGOTREF(__pyx_t_19); +- __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; +- { +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L15_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- } +- if (PY_MAJOR_VERSION >= 3) { +- __Pyx_XGIVEREF(__pyx_t_17); +- __Pyx_XGIVEREF(__pyx_t_18); +- __Pyx_XGIVEREF(__pyx_t_19); +- __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); +- } +- __Pyx_XGIVEREF(__pyx_t_14); +- __Pyx_XGIVEREF(__pyx_t_15); +- __Pyx_XGIVEREF(__pyx_t_16); +- __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); +- __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; +- __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; +- goto __pyx_L1_error; +- __pyx_L15_error:; +- if (PY_MAJOR_VERSION >= 3) { +- __Pyx_XGIVEREF(__pyx_t_17); +- __Pyx_XGIVEREF(__pyx_t_18); +- __Pyx_XGIVEREF(__pyx_t_19); +- __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); +- } +- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; +- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; +- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; +- __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; +- goto __pyx_L1_error; +- } +- __pyx_L3_return: { +- __pyx_t_19 = __pyx_r; +- __pyx_r = 0; +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_r = __pyx_t_19; +- __pyx_t_19 = 0; +- goto __pyx_L0; ++ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_27wakeup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_26wakeup[] = "Wraps: mpv_wakeup"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_27wakeup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("wakeup (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("wakeup", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":715 ++ * def wakeup(self): ++ * """Wraps: mpv_wakeup""" ++ * assert self._ctx # <<<<<<<<<<<<<< ++ * with nogil: ++ * mpv_wakeup(self._ctx) ++ */ ++ #ifndef CYTHON_WITHOUT_ASSERTIONS ++ if (unlikely(!Py_OptimizeFlag)) { ++ if (unlikely(!(__pyx_v_self->_ctx != 0))) { ++ PyErr_SetNone(PyExc_AssertionError); ++ __PYX_ERR(0, 715, __pyx_L1_error) + } +- __pyx_L5:; + } ++ #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":671 +- * finally: +- * self._free_native_value(v) +- * return err # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":716 ++ * """Wraps: mpv_wakeup""" ++ * assert self._ctx ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_wakeup(self._ctx) + * +- * @_errors + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":636 ++ /* "vidcutter/libs/pympv/mpv.pyx":717 ++ * assert self._ctx ++ * with nogil: ++ * mpv_wakeup(self._ctx) # <<<<<<<<<<<<<< + * +- * @_errors +- * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< +- * """Wraps: mpv_set_property and mpv_set_property_async""" ++ * def set_wakeup_callback(self, callback): ++ */ ++ mpv_wakeup(__pyx_v_self->_ctx); ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":716 ++ * """Wraps: mpv_wakeup""" ++ * assert self._ctx ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_wakeup(self._ctx) ++ * ++ */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":713 ++ * return Event()._init(event, self) ++ * ++ * def wakeup(self): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_wakeup""" + * assert self._ctx + */ + + /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_9); +- __Pyx_XDECREF(__pyx_t_11); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wakeup", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_userdatas); +- __Pyx_XDECREF(__pyx_v_prop); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":674 ++/* "vidcutter/libs/pympv/mpv.pyx":719 ++ * mpv_wakeup(self._ctx) + * +- * @_errors +- * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< +- * """Wraps: mpv_set_option""" ++ * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_set_wakeup_callback""" + * assert self._ctx + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25set_option(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_24set_option[] = "Wraps: mpv_set_option"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25set_option(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_prop = 0; +- PyObject *__pyx_v_value = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29set_wakeup_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback[] = "Wraps: mpv_set_wakeup_callback"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29set_wakeup_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_option (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_value,0}; +- PyObject* values[2] = {0,0}; +- values[1] = ((PyObject *)Py_True); +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); +- if (value) { values[1] = value; kw_args--; } +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_option") < 0)) __PYX_ERR(0, 674, __pyx_L3_error) +- } +- } else { +- switch (PyTuple_GET_SIZE(__pyx_args)) { +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- break; +- default: goto __pyx_L5_argtuple_error; +- } +- } +- __pyx_v_prop = values[0]; +- __pyx_v_value = values[1]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("set_option", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 674, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_24set_option(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_value); ++ __Pyx_RefNannySetupContext("set_wakeup_callback (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24set_option(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value) { +- enum mpv_format __pyx_v_format; +- struct mpv_node __pyx_v_v; +- int __pyx_v_err; +- char const *__pyx_v_prop_c; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_callback) { ++ uint64_t __pyx_v_name; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; ++ uint64_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; +- enum mpv_format __pyx_t_4; +- char const *__pyx_t_5; +- int __pyx_t_6; +- int __pyx_t_7; +- char const *__pyx_t_8; +- PyObject *__pyx_t_9 = NULL; +- PyObject *__pyx_t_10 = NULL; +- PyObject *__pyx_t_11 = NULL; +- PyObject *__pyx_t_12 = NULL; +- PyObject *__pyx_t_13 = NULL; +- PyObject *__pyx_t_14 = NULL; ++ PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("set_option", 0); +- __Pyx_INCREF(__pyx_v_prop); ++ __Pyx_RefNannySetupContext("set_wakeup_callback", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":676 +- * def set_option(self, prop, value=True): +- * """Wraps: mpv_set_option""" ++ /* "vidcutter/libs/pympv/mpv.pyx":721 ++ * def set_wakeup_callback(self, callback): ++ * """Wraps: mpv_set_wakeup_callback""" + * assert self._ctx # <<<<<<<<<<<<<< +- * prop = _strenc(prop) +- * cdef mpv_format format = self._format_for(value) ++ * cdef uint64_t name = id(self) ++ * self.callback = callback + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 676, __pyx_L1_error) ++ __PYX_ERR(0, 721, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":677 +- * """Wraps: mpv_set_option""" ++ /* "vidcutter/libs/pympv/mpv.pyx":722 ++ * """Wraps: mpv_set_wakeup_callback""" + * assert self._ctx +- * prop = _strenc(prop) # <<<<<<<<<<<<<< +- * cdef mpv_format format = self._format_for(value) +- * cdef mpv_node v = self._prep_native_value(value, format) ++ * cdef uint64_t name = id(self) # <<<<<<<<<<<<<< ++ * self.callback = callback ++ * self.callbackthread.set(callback) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); +- __pyx_t_1 = 0; ++ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 722, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_name = ((uint64_t)__pyx_t_2); + +- /* "vidcutter/libs/pympv/mpv.pyx":678 ++ /* "vidcutter/libs/pympv/mpv.pyx":723 + * assert self._ctx +- * prop = _strenc(prop) +- * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< +- * cdef mpv_node v = self._prep_native_value(value, format) +- * cdef int err ++ * cdef uint64_t name = id(self) ++ * self.callback = callback # <<<<<<<<<<<<<< ++ * self.callbackthread.set(callback) ++ * with nogil: + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(__pyx_v_callback); ++ __Pyx_GIVEREF(__pyx_v_callback); ++ __Pyx_GOTREF(__pyx_v_self->callback); ++ __Pyx_DECREF(__pyx_v_self->callback); ++ __pyx_v_self->callback = __pyx_v_callback; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":724 ++ * cdef uint64_t name = id(self) ++ * self.callback = callback ++ * self.callbackthread.set(callback) # <<<<<<<<<<<<<< ++ * with nogil: ++ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) ++ */ ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); + } + } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error) ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_callback) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 678, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_format = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":679 +- * prop = _strenc(prop) +- * cdef mpv_format format = self._format_for(value) +- * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< +- * cdef int err +- * cdef const char* prop_c ++ /* "vidcutter/libs/pympv/mpv.pyx":725 ++ * self.callback = callback ++ * self.callbackthread.set(callback) ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) ++ * + */ +- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":682 +- * cdef int err +- * cdef const char* prop_c +- * try: # <<<<<<<<<<<<<< +- * prop_c = prop +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":726 ++ * self.callbackthread.set(callback) ++ * with nogil: ++ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) # <<<<<<<<<<<<<< ++ * ++ * def get_wakeup_pipe(self): + */ +- /*try:*/ { ++ mpv_set_wakeup_callback(__pyx_v_self->_ctx, __pyx_f_9vidcutter_4libs_3mpv__c_callback, ((void *)__pyx_v_name)); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":683 +- * cdef const char* prop_c +- * try: +- * prop_c = prop # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_set_option( ++ /* "vidcutter/libs/pympv/mpv.pyx":725 ++ * self.callback = callback ++ * self.callbackthread.set(callback) ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) ++ * + */ +- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 683, __pyx_L4_error) +- __pyx_v_prop_c = __pyx_t_5; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":684 +- * try: +- * prop_c = prop +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_set_option( +- * self._ctx, ++ /* "vidcutter/libs/pympv/mpv.pyx":719 ++ * mpv_wakeup(self._ctx) ++ * ++ * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_set_wakeup_callback""" ++ * assert self._ctx + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":685 +- * prop_c = prop +- * with nogil: +- * err = mpv_set_option( # <<<<<<<<<<<<<< +- * self._ctx, +- * prop_c, ++ /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_wakeup_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* "vidcutter/libs/pympv/mpv.pyx":728 ++ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) ++ * ++ * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_get_wakeup_pipe""" ++ * assert self._ctx + */ +- __pyx_v_err = mpv_set_option(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":684 +- * try: +- * prop_c = prop +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_set_option( +- * self._ctx, ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_31get_wakeup_pipe(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe[] = "Wraps: mpv_get_wakeup_pipe"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_31get_wakeup_pipe(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("get_wakeup_pipe (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { ++ int __pyx_v_pipe; ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("get_wakeup_pipe", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":730 ++ * def get_wakeup_pipe(self): ++ * """Wraps: mpv_get_wakeup_pipe""" ++ * assert self._ctx # <<<<<<<<<<<<<< ++ * cdef int pipe ++ * with nogil: + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L8; +- } +- __pyx_L8:; +- } ++ #ifndef CYTHON_WITHOUT_ASSERTIONS ++ if (unlikely(!Py_OptimizeFlag)) { ++ if (unlikely(!(__pyx_v_self->_ctx != 0))) { ++ PyErr_SetNone(PyExc_AssertionError); ++ __PYX_ERR(0, 730, __pyx_L1_error) + } + } ++ #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":692 +- * ) +- * finally: +- * self._free_native_value(v) # <<<<<<<<<<<<<< +- * return err +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":732 ++ * assert self._ctx ++ * cdef int pipe ++ * with nogil: # <<<<<<<<<<<<<< ++ * pipe = mpv_get_wakeup_pipe(self._ctx) ++ * return pipe + */ +- /*finally:*/ { +- /*normal exit:*/{ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- goto __pyx_L5; +- } +- __pyx_L4_error:; +- /*exception exit:*/{ +- __Pyx_PyThreadState_declare +- __Pyx_PyThreadState_assign +- __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); +- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); +- __Pyx_XGOTREF(__pyx_t_9); +- __Pyx_XGOTREF(__pyx_t_10); +- __Pyx_XGOTREF(__pyx_t_11); +- __Pyx_XGOTREF(__pyx_t_12); +- __Pyx_XGOTREF(__pyx_t_13); +- __Pyx_XGOTREF(__pyx_t_14); +- __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; +- { +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L10_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- } +- if (PY_MAJOR_VERSION >= 3) { +- __Pyx_XGIVEREF(__pyx_t_12); +- __Pyx_XGIVEREF(__pyx_t_13); +- __Pyx_XGIVEREF(__pyx_t_14); +- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":733 ++ * cdef int pipe ++ * with nogil: ++ * pipe = mpv_get_wakeup_pipe(self._ctx) # <<<<<<<<<<<<<< ++ * return pipe ++ * ++ */ ++ __pyx_v_pipe = mpv_get_wakeup_pipe(__pyx_v_self->_ctx); + } +- __Pyx_XGIVEREF(__pyx_t_9); +- __Pyx_XGIVEREF(__pyx_t_10); +- __Pyx_XGIVEREF(__pyx_t_11); +- __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); +- __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; +- __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; +- goto __pyx_L1_error; +- __pyx_L10_error:; +- if (PY_MAJOR_VERSION >= 3) { +- __Pyx_XGIVEREF(__pyx_t_12); +- __Pyx_XGIVEREF(__pyx_t_13); +- __Pyx_XGIVEREF(__pyx_t_14); +- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":732 ++ * assert self._ctx ++ * cdef int pipe ++ * with nogil: # <<<<<<<<<<<<<< ++ * pipe = mpv_get_wakeup_pipe(self._ctx) ++ * return pipe ++ */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; + } +- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; +- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; +- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; +- __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; +- goto __pyx_L1_error; +- } +- __pyx_L5:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":693 +- * finally: +- * self._free_native_value(v) +- * return err # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":734 ++ * with nogil: ++ * pipe = mpv_get_wakeup_pipe(self._ctx) ++ * return pipe # <<<<<<<<<<<<<< + * +- * @_errors ++ * def __cinit__(self): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":674 ++ /* "vidcutter/libs/pympv/mpv.pyx":728 ++ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) + * +- * @_errors +- * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< +- * """Wraps: mpv_set_option""" ++ * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_get_wakeup_pipe""" + * assert self._ctx + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_wakeup_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_prop); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":696 ++/* "vidcutter/libs/pympv/mpv.pyx":736 ++ * return pipe + * +- * @_errors +- * def initialize(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_initialize""" +- * assert self._ctx ++ * def __cinit__(self): # <<<<<<<<<<<<<< ++ * cdef uint64_t ctxid = id(self) ++ * with nogil: + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_27initialize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_26initialize[] = "Wraps: mpv_initialize"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_27initialize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; ++static int __pyx_pw_9vidcutter_4libs_3mpv_7Context_33__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_7Context_33__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ int __pyx_r; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("initialize (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); ++ if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { ++ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} ++ if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- int __pyx_v_err; +- PyObject *__pyx_r = NULL; ++static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { ++ uint64_t __pyx_v_ctxid; ++ int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; ++ uint64_t __pyx_t_2; ++ int __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("initialize", 0); ++ __Pyx_RefNannySetupContext("__cinit__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":698 +- * def initialize(self): +- * """Wraps: mpv_initialize""" +- * assert self._ctx # <<<<<<<<<<<<<< +- * cdef int err ++ /* "vidcutter/libs/pympv/mpv.pyx":737 ++ * ++ * def __cinit__(self): ++ * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< + * with nogil: ++ * self._ctx = mpv_create() + */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 698, __pyx_L1_error) +- } +- } +- #endif ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 737, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 737, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_ctxid = ((uint64_t)__pyx_t_2); + +- /* "vidcutter/libs/pympv/mpv.pyx":700 +- * assert self._ctx +- * cdef int err ++ /* "vidcutter/libs/pympv/mpv.pyx":738 ++ * def __cinit__(self): ++ * cdef uint64_t ctxid = id(self) + * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_initialize(self._ctx) +- * return err ++ * self._ctx = mpv_create() ++ * if not self._ctx: + */ + { + #ifdef WITH_THREAD +@@ -14114,22 +13975,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(struct __p + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":701 +- * cdef int err ++ /* "vidcutter/libs/pympv/mpv.pyx":739 ++ * cdef uint64_t ctxid = id(self) + * with nogil: +- * err = mpv_initialize(self._ctx) # <<<<<<<<<<<<<< +- * return err +- * ++ * self._ctx = mpv_create() # <<<<<<<<<<<<<< ++ * if not self._ctx: ++ * raise MPVError("Context creation error") + */ +- __pyx_v_err = mpv_initialize(__pyx_v_self->_ctx); ++ __pyx_v_self->_ctx = mpv_create(); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":700 +- * assert self._ctx +- * cdef int err ++ /* "vidcutter/libs/pympv/mpv.pyx":738 ++ * def __cinit__(self): ++ * cdef uint64_t ctxid = id(self) + * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_initialize(self._ctx) +- * return err ++ * self._ctx = mpv_create() ++ * if not self._ctx: + */ + /*finally:*/ { + /*normal exit:*/{ +@@ -14143,66 +14004,200 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(struct __p + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":702 ++ /* "vidcutter/libs/pympv/mpv.pyx":740 + * with nogil: +- * err = mpv_initialize(self._ctx) +- * return err # <<<<<<<<<<<<<< +- * +- * def wait_event(self, timeout=None): ++ * self._ctx = mpv_create() ++ * if not self._ctx: # <<<<<<<<<<<<<< ++ * raise MPVError("Context creation error") ++ * self.callbackthread = CallbackThread() + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __pyx_t_3 = ((!(__pyx_v_self->_ctx != 0)) != 0); ++ if (unlikely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":696 +- * +- * @_errors +- * def initialize(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_initialize""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":741 ++ * self._ctx = mpv_create() ++ * if not self._ctx: ++ * raise MPVError("Context creation error") # <<<<<<<<<<<<<< ++ * self.callbackthread = CallbackThread() ++ * _callbacks[ctxid] = self.callbackthread + */ ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 741, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_4, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_Context_creation_error) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Context_creation_error); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __PYX_ERR(0, 741, __pyx_L1_error) + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); ++ /* "vidcutter/libs/pympv/mpv.pyx":740 ++ * with nogil: ++ * self._ctx = mpv_create() ++ * if not self._ctx: # <<<<<<<<<<<<<< ++ * raise MPVError("Context creation error") ++ * self.callbackthread = CallbackThread() ++ */ ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":742 ++ * if not self._ctx: ++ * raise MPVError("Context creation error") ++ * self.callbackthread = CallbackThread() # <<<<<<<<<<<<<< ++ * _callbacks[ctxid] = self.callbackthread ++ * self.reply_userdata = dict() ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CallbackThread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 742, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_4, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v_self->callbackthread); ++ __Pyx_DECREF(__pyx_v_self->callbackthread); ++ __pyx_v_self->callbackthread = __pyx_t_1; ++ __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":743 ++ * raise MPVError("Context creation error") ++ * self.callbackthread = CallbackThread() ++ * _callbacks[ctxid] = self.callbackthread # <<<<<<<<<<<<<< ++ * self.reply_userdata = dict() ++ * _reply_userdatas[ctxid] = self.reply_userdata ++ */ ++ __pyx_t_1 = __pyx_v_self->callbackthread; ++ __Pyx_INCREF(__pyx_t_1); ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 743, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":744 ++ * self.callbackthread = CallbackThread() ++ * _callbacks[ctxid] = self.callbackthread ++ * self.reply_userdata = dict() # <<<<<<<<<<<<<< ++ * _reply_userdatas[ctxid] = self.reply_userdata ++ * self.callbackthread.start() ++ */ ++ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v_self->reply_userdata); ++ __Pyx_DECREF(__pyx_v_self->reply_userdata); ++ __pyx_v_self->reply_userdata = __pyx_t_1; ++ __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":745 ++ * _callbacks[ctxid] = self.callbackthread ++ * self.reply_userdata = dict() ++ * _reply_userdatas[ctxid] = self.reply_userdata # <<<<<<<<<<<<<< ++ * self.callbackthread.start() ++ * ++ */ ++ __pyx_t_1 = __pyx_v_self->reply_userdata; ++ __Pyx_INCREF(__pyx_t_1); ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 745, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":746 ++ * self.reply_userdata = dict() ++ * _reply_userdatas[ctxid] = self.reply_userdata ++ * self.callbackthread.start() # <<<<<<<<<<<<<< ++ * ++ * @_errors ++ */ ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 746, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_4, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":736 ++ * return pipe ++ * ++ * def __cinit__(self): # <<<<<<<<<<<<<< ++ * cdef uint64_t ctxid = id(self) ++ * with nogil: ++ */ ++ ++ /* function exit code */ ++ __pyx_r = 0; ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = -1; ++ __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":704 +- * return err ++/* "vidcutter/libs/pympv/mpv.pyx":749 + * +- * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< +- * """Wraps: mpv_wait_event""" ++ * @_errors ++ * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_observe_property""" + * assert self._ctx + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29wait_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_28wait_event[] = "Wraps: mpv_wait_event"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29wait_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_timeout = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_34observe_property[] = "Wraps: mpv_observe_property"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_prop = 0; ++ PyObject *__pyx_v_data = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("wait_event (wrapper)", 0); ++ __Pyx_RefNannySetupContext("observe_property (wrapper)", 0); + { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; +- PyObject* values[1] = {0}; +- values[0] = ((PyObject *)Py_None); ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,0}; ++ PyObject* values[2] = {0,0}; ++ values[1] = ((PyObject *)Py_None); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; +@@ -14211,117 +14206,291 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29wait_event(PyObject * + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: + if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); +- if (value) { values[0] = value; kw_args--; } ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); ++ if (value) { values[1] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_event") < 0)) __PYX_ERR(0, 704, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "observe_property") < 0)) __PYX_ERR(0, 749, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; +- case 0: break; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ break; + default: goto __pyx_L5_argtuple_error; + } + } +- __pyx_v_timeout = values[0]; ++ __pyx_v_prop = values[0]; ++ __pyx_v_data = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("wait_event", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 704, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("observe_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 749, __pyx_L3_error) + __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_28wait_event(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_timeout); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28wait_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_timeout) { +- double __pyx_v_timeout_d; +- struct mpv_event *__pyx_v_event; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data) { ++ uint64_t __pyx_v_id_data; ++ PyObject *__pyx_v_userdatas = NULL; ++ char *__pyx_v_propc; ++ int __pyx_v_err; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- double __pyx_t_1; +- int __pyx_t_2; +- double __pyx_t_3; ++ Py_hash_t __pyx_t_1; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; ++ int __pyx_t_6; ++ PyObject *__pyx_t_7 = NULL; ++ int __pyx_t_8; ++ int __pyx_t_9; ++ char *__pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("wait_event", 0); ++ __Pyx_RefNannySetupContext("observe_property", 0); ++ __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":706 +- * def wait_event(self, timeout=None): +- * """Wraps: mpv_wait_event""" ++ /* "vidcutter/libs/pympv/mpv.pyx":751 ++ * def observe_property(self, prop, data=None): ++ * """Wraps: mpv_observe_property""" + * assert self._ctx # <<<<<<<<<<<<<< +- * cdef double timeout_d = timeout if timeout is not None else -1 +- * cdef mpv_event* event ++ * cdef uint64_t id_data = hash(data) ++ * id_data = hash(data) + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 706, __pyx_L1_error) ++ __PYX_ERR(0, 751, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":707 +- * """Wraps: mpv_wait_event""" ++ /* "vidcutter/libs/pympv/mpv.pyx":752 ++ * """Wraps: mpv_observe_property""" + * assert self._ctx +- * cdef double timeout_d = timeout if timeout is not None else -1 # <<<<<<<<<<<<<< +- * cdef mpv_event* event +- * with nogil: ++ * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< ++ * id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) + */ +- __pyx_t_2 = (__pyx_v_timeout != Py_None); +- if ((__pyx_t_2 != 0)) { +- __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_timeout); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 707, __pyx_L1_error) +- __pyx_t_1 = __pyx_t_3; +- } else { +- __pyx_t_1 = -1.0; +- } +- __pyx_v_timeout_d = __pyx_t_1; ++ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 752, __pyx_L1_error) ++ __pyx_v_id_data = ((uint64_t)__pyx_t_1); + +- /* "vidcutter/libs/pympv/mpv.pyx":709 +- * cdef double timeout_d = timeout if timeout is not None else -1 +- * cdef mpv_event* event +- * with nogil: # <<<<<<<<<<<<<< +- * event = mpv_wait_event(self._ctx, timeout_d) +- * return Event()._init(event, self) ++ /* "vidcutter/libs/pympv/mpv.pyx":753 ++ * assert self._ctx ++ * cdef uint64_t id_data = hash(data) ++ * id_data = hash(data) # <<<<<<<<<<<<<< ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is None: + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 753, __pyx_L1_error) ++ __pyx_v_id_data = ((uint64_t)__pyx_t_1); + +- /* "vidcutter/libs/pympv/mpv.pyx":710 +- * cdef mpv_event* event +- * with nogil: +- * event = mpv_wait_event(self._ctx, timeout_d) # <<<<<<<<<<<<<< +- * return Event()._init(event, self) +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":754 ++ * cdef uint64_t id_data = hash(data) ++ * id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< ++ * if userdatas is None: ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) + */ +- __pyx_v_event = mpv_wait_event(__pyx_v_self->_ctx, __pyx_v_timeout_d); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":709 +- * cdef double timeout_d = timeout if timeout is not None else -1 +- * cdef mpv_event* event ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = NULL; ++ __pyx_t_6 = 0; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); ++ __pyx_t_6 = 1; ++ } ++ } ++ #if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(__pyx_t_3)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; ++ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ } else ++ #endif ++ #if CYTHON_FAST_PYCCALL ++ if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; ++ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ } else ++ #endif ++ { ++ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ if (__pyx_t_5) { ++ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; ++ } ++ __Pyx_GIVEREF(__pyx_t_4); ++ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); ++ __pyx_t_4 = 0; ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ } ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_v_userdatas = __pyx_t_2; ++ __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":755 ++ * id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is None: # <<<<<<<<<<<<<< ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ * userdatas.observed = True ++ */ ++ __pyx_t_8 = (__pyx_v_userdatas == Py_None); ++ __pyx_t_9 = (__pyx_t_8 != 0); ++ if (__pyx_t_9) { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":756 ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is None: ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< ++ * userdatas.observed = True ++ * prop = _strenc(prop) ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_7 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_7)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_7); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); ++ } ++ } ++ __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); ++ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_2, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 756, __pyx_L1_error) ++ __Pyx_INCREF(__pyx_t_2); ++ __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_2); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":755 ++ * id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is None: # <<<<<<<<<<<<<< ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ * userdatas.observed = True ++ */ ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":757 ++ * if userdatas is None: ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ * userdatas.observed = True # <<<<<<<<<<<<<< ++ * prop = _strenc(prop) ++ * cdef char* propc = prop ++ */ ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_True) < 0) __PYX_ERR(0, 757, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":758 ++ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ * userdatas.observed = True ++ * prop = _strenc(prop) # <<<<<<<<<<<<<< ++ * cdef char* propc = prop ++ * cdef int err ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strenc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_7 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_7)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_7); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); ++ } ++ } ++ __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_prop); ++ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_2); ++ __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":759 ++ * userdatas.observed = True ++ * prop = _strenc(prop) ++ * cdef char* propc = prop # <<<<<<<<<<<<<< ++ * cdef int err ++ * with nogil: ++ */ ++ __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 759, __pyx_L1_error) ++ __pyx_v_propc = __pyx_t_10; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":761 ++ * cdef char* propc = prop ++ * cdef int err + * with nogil: # <<<<<<<<<<<<<< +- * event = mpv_wait_event(self._ctx, timeout_d) +- * return Event()._init(event, self) ++ * err = mpv_observe_property( ++ * self._ctx, ++ */ ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":762 ++ * cdef int err ++ * with nogil: ++ * err = mpv_observe_property( # <<<<<<<<<<<<<< ++ * self._ctx, ++ * id_data, ++ */ ++ __pyx_v_err = mpv_observe_property(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_propc, MPV_FORMAT_NODE); ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":761 ++ * cdef char* propc = prop ++ * cdef int err ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_observe_property( ++ * self._ctx, + */ + /*finally:*/ { + /*normal exit:*/{ +@@ -14329,101 +14498,248 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28wait_event(struct __p + __Pyx_FastGIL_Forget(); + Py_BLOCK_THREADS + #endif +- goto __pyx_L5; ++ goto __pyx_L6; + } +- __pyx_L5:; ++ __pyx_L6:; + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":711 +- * with nogil: +- * event = mpv_wait_event(self._ctx, timeout_d) +- * return Event()._init(event, self) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":768 ++ * MPV_FORMAT_NODE, ++ * ) ++ * return err # <<<<<<<<<<<<<< + * +- * def wakeup(self): ++ * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 711, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4), __pyx_v_event, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_r = __pyx_t_5; +- __pyx_t_5 = 0; ++ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_r = __pyx_t_2; ++ __pyx_t_2 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":704 +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":749 + * +- * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< +- * """Wraps: mpv_wait_event""" ++ * @_errors ++ * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_observe_property""" + * assert self._ctx + */ + + /* function exit code */ + __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_userdatas); ++ __Pyx_XDECREF(__pyx_v_prop); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":713 +- * return Event()._init(event, self) ++/* "vidcutter/libs/pympv/mpv.pyx":771 + * +- * def wakeup(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_wakeup""" ++ * @_errors ++ * def unobserve_property(self, data): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_unobserve_property""" + * assert self._ctx + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_31wakeup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_30wakeup[] = "Wraps: mpv_wakeup"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_31wakeup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_37unobserve_property(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/ ++static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_36unobserve_property[] = "Wraps: mpv_unobserve_property"; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_37unobserve_property(PyObject *__pyx_v_self, PyObject *__pyx_v_data) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("wakeup (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("unobserve_property (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_data)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_data) { ++ uint64_t __pyx_v_id_data; ++ PyObject *__pyx_v_userdatas = NULL; ++ int __pyx_v_err; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations ++ Py_hash_t __pyx_t_1; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ int __pyx_t_6; ++ PyObject *__pyx_t_7 = NULL; ++ int __pyx_t_8; ++ int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("wakeup", 0); ++ __Pyx_RefNannySetupContext("unobserve_property", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":715 +- * def wakeup(self): +- * """Wraps: mpv_wakeup""" ++ /* "vidcutter/libs/pympv/mpv.pyx":773 ++ * def unobserve_property(self, data): ++ * """Wraps: mpv_unobserve_property""" + * assert self._ctx # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_wakeup(self._ctx) ++ * cdef uint64_t id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 715, __pyx_L1_error) ++ __PYX_ERR(0, 773, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":716 +- * """Wraps: mpv_wakeup""" ++ /* "vidcutter/libs/pympv/mpv.pyx":774 ++ * """Wraps: mpv_unobserve_property""" ++ * assert self._ctx ++ * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is not None: ++ */ ++ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 774, __pyx_L1_error) ++ __pyx_v_id_data = ((uint64_t)__pyx_t_1); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":775 + * assert self._ctx ++ * cdef uint64_t id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< ++ * if userdatas is not None: ++ * userdatas.observed = False ++ */ ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = NULL; ++ __pyx_t_6 = 0; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); ++ __pyx_t_6 = 1; ++ } ++ } ++ #if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(__pyx_t_3)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; ++ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ } else ++ #endif ++ #if CYTHON_FAST_PYCCALL ++ if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { ++ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; ++ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ } else ++ #endif ++ { ++ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ if (__pyx_t_5) { ++ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; ++ } ++ __Pyx_GIVEREF(__pyx_t_4); ++ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); ++ __pyx_t_4 = 0; ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ } ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_v_userdatas = __pyx_t_2; ++ __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":776 ++ * cdef uint64_t id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is not None: # <<<<<<<<<<<<<< ++ * userdatas.observed = False ++ * if userdatas.counter <= 0: ++ */ ++ __pyx_t_8 = (__pyx_v_userdatas != Py_None); ++ __pyx_t_9 = (__pyx_t_8 != 0); ++ if (__pyx_t_9) { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":777 ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is not None: ++ * userdatas.observed = False # <<<<<<<<<<<<<< ++ * if userdatas.counter <= 0: ++ * del self.reply_userdata[id_data] ++ */ ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 777, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":778 ++ * if userdatas is not None: ++ * userdatas.observed = False ++ * if userdatas.counter <= 0: # <<<<<<<<<<<<<< ++ * del self.reply_userdata[id_data] ++ * cdef int err ++ */ ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_counter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 778, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 778, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 778, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (__pyx_t_9) { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":779 ++ * userdatas.observed = False ++ * if userdatas.counter <= 0: ++ * del self.reply_userdata[id_data] # <<<<<<<<<<<<<< ++ * cdef int err ++ * with nogil: ++ */ ++ if (unlikely(__Pyx_DelItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 779, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":778 ++ * if userdatas is not None: ++ * userdatas.observed = False ++ * if userdatas.counter <= 0: # <<<<<<<<<<<<<< ++ * del self.reply_userdata[id_data] ++ * cdef int err ++ */ ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":776 ++ * cdef uint64_t id_data = hash(data) ++ * userdatas = self.reply_userdata.get(id_data, None) ++ * if userdatas is not None: # <<<<<<<<<<<<<< ++ * userdatas.observed = False ++ * if userdatas.counter <= 0: ++ */ ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":781 ++ * del self.reply_userdata[id_data] ++ * cdef int err + * with nogil: # <<<<<<<<<<<<<< +- * mpv_wakeup(self._ctx) +- * ++ * err = mpv_unobserve_property( ++ * self._ctx, + */ + { + #ifdef WITH_THREAD +@@ -14433,22 +14749,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(struct __pyx_o + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":717 +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":782 ++ * cdef int err + * with nogil: +- * mpv_wakeup(self._ctx) # <<<<<<<<<<<<<< +- * +- * def set_wakeup_callback(self, callback): ++ * err = mpv_unobserve_property( # <<<<<<<<<<<<<< ++ * self._ctx, ++ * id_data, + */ +- mpv_wakeup(__pyx_v_self->_ctx); ++ __pyx_v_err = mpv_unobserve_property(__pyx_v_self->_ctx, __pyx_v_id_data); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":716 +- * """Wraps: mpv_wakeup""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":781 ++ * del self.reply_userdata[id_data] ++ * cdef int err + * with nogil: # <<<<<<<<<<<<<< +- * mpv_wakeup(self._ctx) +- * ++ * err = mpv_unobserve_property( ++ * self._ctx, + */ + /*finally:*/ { + /*normal exit:*/{ +@@ -14456,141 +14772,134 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(struct __pyx_o + __Pyx_FastGIL_Forget(); + Py_BLOCK_THREADS + #endif +- goto __pyx_L5; ++ goto __pyx_L7; + } +- __pyx_L5:; ++ __pyx_L7:; + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":713 +- * return Event()._init(event, self) ++ /* "vidcutter/libs/pympv/mpv.pyx":786 ++ * id_data, ++ * ) ++ * return err # <<<<<<<<<<<<<< + * +- * def wakeup(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_wakeup""" ++ * def shutdown(self): ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 786, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":771 ++ * ++ * @_errors ++ * def unobserve_property(self, data): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_unobserve_property""" + * assert self._ctx + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wakeup", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.unobserve_property", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_userdatas); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":719 +- * mpv_wakeup(self._ctx) ++/* "vidcutter/libs/pympv/mpv.pyx":788 ++ * return err + * +- * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< +- * """Wraps: mpv_set_wakeup_callback""" +- * assert self._ctx ++ * def shutdown(self): # <<<<<<<<<<<<<< ++ * if self._ctx == NULL: ++ * return + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_33set_wakeup_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback[] = "Wraps: mpv_set_wakeup_callback"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_33set_wakeup_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_39shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_39shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_wakeup_callback (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); ++ __Pyx_RefNannySetupContext("shutdown (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_callback) { +- uint64_t __pyx_v_name; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { ++ uint64_t __pyx_v_ctxid; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- uint64_t __pyx_t_2; +- PyObject *__pyx_t_3 = NULL; ++ int __pyx_t_1; ++ PyObject *__pyx_t_2 = NULL; ++ uint64_t __pyx_t_3; + PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("set_wakeup_callback", 0); ++ __Pyx_RefNannySetupContext("shutdown", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":721 +- * def set_wakeup_callback(self, callback): +- * """Wraps: mpv_set_wakeup_callback""" +- * assert self._ctx # <<<<<<<<<<<<<< +- * cdef uint64_t name = id(self) +- * self.callback = callback ++ /* "vidcutter/libs/pympv/mpv.pyx":789 ++ * ++ * def shutdown(self): ++ * if self._ctx == NULL: # <<<<<<<<<<<<<< ++ * return ++ * cdef uint64_t ctxid = id(self) + */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 721, __pyx_L1_error) +- } +- } +- #endif ++ __pyx_t_1 = ((__pyx_v_self->_ctx == NULL) != 0); ++ if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":722 +- * """Wraps: mpv_set_wakeup_callback""" +- * assert self._ctx +- * cdef uint64_t name = id(self) # <<<<<<<<<<<<<< +- * self.callback = callback +- * self.callbackthread.set(callback) +- */ +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 722, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_name = ((uint64_t)__pyx_t_2); +- +- /* "vidcutter/libs/pympv/mpv.pyx":723 +- * assert self._ctx +- * cdef uint64_t name = id(self) +- * self.callback = callback # <<<<<<<<<<<<<< +- * self.callbackthread.set(callback) ++ /* "vidcutter/libs/pympv/mpv.pyx":790 ++ * def shutdown(self): ++ * if self._ctx == NULL: ++ * return # <<<<<<<<<<<<<< ++ * cdef uint64_t ctxid = id(self) + * with nogil: + */ +- __Pyx_INCREF(__pyx_v_callback); +- __Pyx_GIVEREF(__pyx_v_callback); +- __Pyx_GOTREF(__pyx_v_self->callback); +- __Pyx_DECREF(__pyx_v_self->callback); +- __pyx_v_self->callback = __pyx_v_callback; ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":724 +- * cdef uint64_t name = id(self) +- * self.callback = callback +- * self.callbackthread.set(callback) # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) ++ /* "vidcutter/libs/pympv/mpv.pyx":789 ++ * ++ * def shutdown(self): ++ * if self._ctx == NULL: # <<<<<<<<<<<<<< ++ * return ++ * cdef uint64_t ctxid = id(self) + */ +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } + } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_callback) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":725 +- * self.callback = callback +- * self.callbackthread.set(callback) ++ /* "vidcutter/libs/pympv/mpv.pyx":791 ++ * if self._ctx == NULL: ++ * return ++ * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< ++ * with nogil: ++ * mpv_terminate_destroy(self._ctx) ++ */ ++ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 791, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v_ctxid = ((uint64_t)__pyx_t_3); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":792 ++ * return ++ * cdef uint64_t ctxid = id(self) + * with nogil: # <<<<<<<<<<<<<< +- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) +- * ++ * mpv_terminate_destroy(self._ctx) ++ * self.callbackthread.shutdown() + */ + { + #ifdef WITH_THREAD +@@ -14600,22 +14909,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(s + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":726 +- * self.callbackthread.set(callback) ++ /* "vidcutter/libs/pympv/mpv.pyx":793 ++ * cdef uint64_t ctxid = id(self) + * with nogil: +- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) # <<<<<<<<<<<<<< +- * +- * def get_wakeup_pipe(self): ++ * mpv_terminate_destroy(self._ctx) # <<<<<<<<<<<<<< ++ * self.callbackthread.shutdown() ++ * del _callbacks[ctxid] + */ +- mpv_set_wakeup_callback(__pyx_v_self->_ctx, __pyx_f_9vidcutter_4libs_3mpv__c_callback, ((void *)__pyx_v_name)); ++ mpv_terminate_destroy(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":725 +- * self.callback = callback +- * self.callbackthread.set(callback) ++ /* "vidcutter/libs/pympv/mpv.pyx":792 ++ * return ++ * cdef uint64_t ctxid = id(self) + * with nogil: # <<<<<<<<<<<<<< +- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) +- * ++ * mpv_terminate_destroy(self._ctx) ++ * self.callbackthread.shutdown() + */ + /*finally:*/ { + /*normal exit:*/{ +@@ -14623,28 +14932,107 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(s + __Pyx_FastGIL_Forget(); + Py_BLOCK_THREADS + #endif +- goto __pyx_L5; ++ goto __pyx_L6; + } +- __pyx_L5:; ++ __pyx_L6:; + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":719 +- * mpv_wakeup(self._ctx) ++ /* "vidcutter/libs/pympv/mpv.pyx":794 ++ * with nogil: ++ * mpv_terminate_destroy(self._ctx) ++ * self.callbackthread.shutdown() # <<<<<<<<<<<<<< ++ * del _callbacks[ctxid] ++ * del _reply_userdatas[ctxid] ++ */ ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 794, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_4, function); ++ } ++ } ++ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":795 ++ * mpv_terminate_destroy(self._ctx) ++ * self.callbackthread.shutdown() ++ * del _callbacks[ctxid] # <<<<<<<<<<<<<< ++ * del _reply_userdatas[ctxid] ++ * self.callback = None ++ */ ++ if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 795, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":796 ++ * self.callbackthread.shutdown() ++ * del _callbacks[ctxid] ++ * del _reply_userdatas[ctxid] # <<<<<<<<<<<<<< ++ * self.callback = None ++ * self.reply_userdata = None ++ */ ++ if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 796, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":797 ++ * del _callbacks[ctxid] ++ * del _reply_userdatas[ctxid] ++ * self.callback = None # <<<<<<<<<<<<<< ++ * self.reply_userdata = None ++ * self._ctx = NULL ++ */ ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ __Pyx_GOTREF(__pyx_v_self->callback); ++ __Pyx_DECREF(__pyx_v_self->callback); ++ __pyx_v_self->callback = Py_None; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":798 ++ * del _reply_userdatas[ctxid] ++ * self.callback = None ++ * self.reply_userdata = None # <<<<<<<<<<<<<< ++ * self._ctx = NULL + * +- * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< +- * """Wraps: mpv_set_wakeup_callback""" +- * assert self._ctx ++ */ ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ __Pyx_GOTREF(__pyx_v_self->reply_userdata); ++ __Pyx_DECREF(__pyx_v_self->reply_userdata); ++ __pyx_v_self->reply_userdata = Py_None; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":799 ++ * self.callback = None ++ * self.reply_userdata = None ++ * self._ctx = NULL # <<<<<<<<<<<<<< ++ * ++ * # def opengl_cb_api(self): ++ */ ++ __pyx_v_self->_ctx = NULL; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":788 ++ * return err ++ * ++ * def shutdown(self): # <<<<<<<<<<<<<< ++ * if self._ctx == NULL: ++ * return + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_wakeup_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); +@@ -14652,374 +15040,403 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(s + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":728 +- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) ++/* "vidcutter/libs/pympv/mpv.pyx":813 ++ * # return ctx ++ * ++ * def __dealloc__(self): # <<<<<<<<<<<<<< ++ * self.shutdown() + * +- * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_get_wakeup_pipe""" +- * assert self._ctx + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35get_wakeup_pipe(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe[] = "Wraps: mpv_get_wakeup_pipe"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35get_wakeup_pipe(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; ++static void __pyx_pw_9vidcutter_4libs_3mpv_7Context_41__dealloc__(PyObject *__pyx_v_self); /*proto*/ ++static void __pyx_pw_9vidcutter_4libs_3mpv_7Context_41__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("get_wakeup_pipe (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); ++ __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +- return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- int __pyx_v_pipe; +- PyObject *__pyx_r = NULL; ++static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("get_wakeup_pipe", 0); ++ __Pyx_RefNannySetupContext("__dealloc__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":730 +- * def get_wakeup_pipe(self): +- * """Wraps: mpv_get_wakeup_pipe""" +- * assert self._ctx # <<<<<<<<<<<<<< +- * cdef int pipe +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":814 ++ * ++ * def __dealloc__(self): ++ * self.shutdown() # <<<<<<<<<<<<<< ++ * ++ * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: + */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 730, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 814, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); + } + } +- #endif ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":732 +- * assert self._ctx +- * cdef int pipe +- * with nogil: # <<<<<<<<<<<<<< +- * pipe = mpv_get_wakeup_pipe(self._ctx) +- * return pipe +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":733 +- * cdef int pipe +- * with nogil: +- * pipe = mpv_get_wakeup_pipe(self._ctx) # <<<<<<<<<<<<<< +- * return pipe ++ /* "vidcutter/libs/pympv/mpv.pyx":813 ++ * # return ctx ++ * ++ * def __dealloc__(self): # <<<<<<<<<<<<<< ++ * self.shutdown() + * + */ +- __pyx_v_pipe = mpv_get_wakeup_pipe(__pyx_v_self->_ctx); +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":732 +- * assert self._ctx +- * cdef int pipe +- * with nogil: # <<<<<<<<<<<<<< +- * pipe = mpv_get_wakeup_pipe(self._ctx) +- * return pipe ++ /* function exit code */ ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __pyx_L0:; ++ __Pyx_RefNannyFinishContext(); ++} ++ ++/* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * def __setstate_cython__(self, __pyx_state): + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":734 +- * with nogil: +- * pipe = mpv_get_wakeup_pipe(self._ctx) +- * return pipe # <<<<<<<<<<<<<< +- * +- * def __cinit__(self): ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_43__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_43__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_42__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_42__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__reduce_cython__", 0); ++ ++ /* "(tree fragment)":2 ++ * def __reduce_cython__(self): ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __PYX_ERR(1, 2, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":728 +- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) +- * +- * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_get_wakeup_pipe""" +- * assert self._ctx ++ /* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_wakeup_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; +- __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":736 +- * return pipe +- * +- * def __cinit__(self): # <<<<<<<<<<<<<< +- * cdef uint64_t ctxid = id(self) +- * with nogil: ++/* "(tree fragment)":3 ++ * def __reduce_cython__(self): ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_7Context_37__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_7Context_37__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- int __pyx_r; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_45__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_45__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); +- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { +- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} +- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_36__cinit__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_44__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_36__cinit__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- uint64_t __pyx_v_ctxid; +- int __pyx_r; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- uint64_t __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__cinit__", 0); ++ __Pyx_RefNannySetupContext("__setstate_cython__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":737 +- * +- * def __cinit__(self): +- * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< +- * with nogil: +- * self._ctx = mpv_create() ++ /* "(tree fragment)":4 ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 737, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 737, __pyx_L1_error) ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_ctxid = ((uint64_t)__pyx_t_2); ++ __PYX_ERR(1, 4, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":738 +- * def __cinit__(self): +- * cdef uint64_t ctxid = id(self) +- * with nogil: # <<<<<<<<<<<<<< +- * self._ctx = mpv_create() +- * if not self._ctx: ++ /* "(tree fragment)":3 ++ * def __reduce_cython__(self): ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":739 +- * cdef uint64_t ctxid = id(self) +- * with nogil: +- * self._ctx = mpv_create() # <<<<<<<<<<<<<< +- * if not self._ctx: +- * raise MPVError("Context creation error") ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* "vidcutter/libs/pympv/mpv.pyx":816 ++ * self.shutdown() ++ * ++ * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< ++ * return (ctx)(name) ++ * + */ +- __pyx_v_self->_ctx = mpv_create(); +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":738 +- * def __cinit__(self): +- * cdef uint64_t ctxid = id(self) +- * with nogil: # <<<<<<<<<<<<<< +- * self._ctx = mpv_create() +- * if not self._ctx: ++static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, char const *__pyx_v_name) { ++ void *__pyx_r; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ intptr_t __pyx_t_5; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ #ifdef WITH_THREAD ++ PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); ++ #endif ++ __Pyx_RefNannySetupContext("_c_getprocaddress", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":817 ++ * ++ * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: ++ * return (ctx)(name) # <<<<<<<<<<<<<< ++ * ++ * cdef void _c_updatecb(void *ctx) with gil: + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } ++ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); ++ __pyx_t_3 = ((PyObject *)__pyx_v_ctx); __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); ++ } + } ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 817, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_r = ((void *)((intptr_t)__pyx_t_5)); ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":740 +- * with nogil: +- * self._ctx = mpv_create() +- * if not self._ctx: # <<<<<<<<<<<<<< +- * raise MPVError("Context creation error") +- * self.callbackthread = CallbackThread() ++ /* "vidcutter/libs/pympv/mpv.pyx":816 ++ * self.shutdown() ++ * ++ * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< ++ * return (ctx)(name) ++ * + */ +- __pyx_t_3 = ((!(__pyx_v_self->_ctx != 0)) != 0); +- if (unlikely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":741 +- * self._ctx = mpv_create() +- * if not self._ctx: +- * raise MPVError("Context creation error") # <<<<<<<<<<<<<< +- * self.callbackthread = CallbackThread() +- * _callbacks[ctxid] = self.callbackthread +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 741, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); +- } +- } +- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_Context_creation_error) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Context_creation_error); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 741, __pyx_L1_error) ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_getprocaddress", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __pyx_r = 0; ++ __pyx_L0:; ++ __Pyx_RefNannyFinishContext(); ++ #ifdef WITH_THREAD ++ __Pyx_PyGILState_Release(__pyx_gilstate_save); ++ #endif ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":740 +- * with nogil: +- * self._ctx = mpv_create() +- * if not self._ctx: # <<<<<<<<<<<<<< +- * raise MPVError("Context creation error") +- * self.callbackthread = CallbackThread() ++/* "vidcutter/libs/pympv/mpv.pyx":819 ++ * return (ctx)(name) ++ * ++ * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< ++ * (ctx)() ++ * + */ +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":742 +- * if not self._ctx: +- * raise MPVError("Context creation error") +- * self.callbackthread = CallbackThread() # <<<<<<<<<<<<<< +- * _callbacks[ctxid] = self.callbackthread +- * self.reply_userdata = dict() ++static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ #ifdef WITH_THREAD ++ PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); ++ #endif ++ __Pyx_RefNannySetupContext("_c_updatecb", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":820 ++ * ++ * cdef void _c_updatecb(void *ctx) with gil: ++ * (ctx)() # <<<<<<<<<<<<<< ++ * ++ * # cdef class OpenGLContext(object): + */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CallbackThread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 742, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); +- __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); ++ __pyx_t_2 = ((PyObject *)__pyx_v_ctx); __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); + } + } +- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error) ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 820, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->callbackthread); +- __Pyx_DECREF(__pyx_v_self->callbackthread); +- __pyx_v_self->callbackthread = __pyx_t_1; +- __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":743 +- * raise MPVError("Context creation error") +- * self.callbackthread = CallbackThread() +- * _callbacks[ctxid] = self.callbackthread # <<<<<<<<<<<<<< +- * self.reply_userdata = dict() +- * _reply_userdatas[ctxid] = self.reply_userdata +- */ +- __pyx_t_1 = __pyx_v_self->callbackthread; +- __Pyx_INCREF(__pyx_t_1); +- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 743, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":744 +- * self.callbackthread = CallbackThread() +- * _callbacks[ctxid] = self.callbackthread +- * self.reply_userdata = dict() # <<<<<<<<<<<<<< +- * _reply_userdatas[ctxid] = self.reply_userdata +- * self.callbackthread.start() ++ /* "vidcutter/libs/pympv/mpv.pyx":819 ++ * return (ctx)(name) ++ * ++ * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< ++ * (ctx)() ++ * + */ +- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->reply_userdata); +- __Pyx_DECREF(__pyx_v_self->reply_userdata); +- __pyx_v_self->reply_userdata = __pyx_t_1; +- __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":745 +- * _callbacks[ctxid] = self.callbackthread +- * self.reply_userdata = dict() +- * _reply_userdatas[ctxid] = self.reply_userdata # <<<<<<<<<<<<<< +- * self.callbackthread.start() ++ /* function exit code */ ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_updatecb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __pyx_L0:; ++ __Pyx_RefNannyFinishContext(); ++ #ifdef WITH_THREAD ++ __Pyx_PyGILState_Release(__pyx_gilstate_save); ++ #endif ++} ++ ++/* "vidcutter/libs/pympv/mpv.pyx":886 ++ * object owned + * ++ * def __init__(self): # <<<<<<<<<<<<<< ++ * self.owned = [] ++ * self.params[0].type = MPV_RENDER_PARAM_INVALID + */ +- __pyx_t_1 = __pyx_v_self->reply_userdata; +- __Pyx_INCREF(__pyx_t_1); +- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 745, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":746 +- * self.reply_userdata = dict() +- * _reply_userdatas[ctxid] = self.reply_userdata +- * self.callbackthread.start() # <<<<<<<<<<<<<< ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); ++ if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { ++ __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} ++ if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__init__", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":887 ++ * ++ * def __init__(self): ++ * self.owned = [] # <<<<<<<<<<<<<< ++ * self.params[0].type = MPV_RENDER_PARAM_INVALID + * +- * @_errors + */ +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 746, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); +- } +- } +- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) ++ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v_self->owned); ++ __Pyx_DECREF(__pyx_v_self->owned); ++ __pyx_v_self->owned = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":736 +- * return pipe ++ /* "vidcutter/libs/pympv/mpv.pyx":888 ++ * def __init__(self): ++ * self.owned = [] ++ * self.params[0].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< + * +- * def __cinit__(self): # <<<<<<<<<<<<<< +- * cdef uint64_t ctxid = id(self) +- * with nogil: ++ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): ++ */ ++ (__pyx_v_self->params[0]).type = MPV_RENDER_PARAM_INVALID; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":886 ++ * object owned ++ * ++ * def __init__(self): # <<<<<<<<<<<<<< ++ * self.owned = [] ++ * self.params[0].type = MPV_RENDER_PARAM_INVALID + */ + + /* function exit code */ +@@ -15027,1094 +15444,479 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_36__cinit__(struct __pyx_obj_ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":749 ++/* "vidcutter/libs/pympv/mpv.pyx":890 ++ * self.params[0].type = MPV_RENDER_PARAM_INVALID + * +- * @_errors +- * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< +- * """Wraps: mpv_observe_property""" +- * assert self._ctx ++ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< ++ * count = len(self.owned) ++ * if count >= MAX_RENDER_PARAMS: + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_39observe_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_38observe_property[] = "Wraps: mpv_observe_property"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_39observe_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_prop = 0; +- PyObject *__pyx_v_data = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("observe_property (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,0}; +- PyObject* values[2] = {0,0}; +- values[1] = ((PyObject *)Py_None); +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); +- if (value) { values[1] = value; kw_args--; } +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "observe_property") < 0)) __PYX_ERR(0, 749, __pyx_L3_error) +- } +- } else { +- switch (PyTuple_GET_SIZE(__pyx_args)) { +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- break; +- default: goto __pyx_L5_argtuple_error; +- } +- } +- __pyx_v_prop = values[0]; +- __pyx_v_data = values[1]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("observe_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 749, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_38observe_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38observe_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data) { +- uint64_t __pyx_v_id_data; +- PyObject *__pyx_v_userdatas = NULL; +- char *__pyx_v_propc; +- int __pyx_v_err; ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, void *__pyx_v_p, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args) { ++ int __pyx_v_owned = ((int)0); ++ PyObject *__pyx_v_count = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- Py_hash_t __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_1 = NULL; ++ Py_ssize_t __pyx_t_2; ++ int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; +- PyObject *__pyx_t_7 = NULL; +- int __pyx_t_8; +- int __pyx_t_9; +- char *__pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("observe_property", 0); +- __Pyx_INCREF(__pyx_v_prop); +- +- /* "vidcutter/libs/pympv/mpv.pyx":751 +- * def observe_property(self, prop, data=None): +- * """Wraps: mpv_observe_property""" +- * assert self._ctx # <<<<<<<<<<<<<< +- * cdef uint64_t id_data = hash(data) +- * id_data = hash(data) +- */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 751, __pyx_L1_error) ++ __Pyx_RefNannySetupContext("add_voidp", 0); ++ if (__pyx_optional_args) { ++ if (__pyx_optional_args->__pyx_n > 0) { ++ __pyx_v_owned = __pyx_optional_args->owned; + } + } +- #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":752 +- * """Wraps: mpv_observe_property""" +- * assert self._ctx +- * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< +- * id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) ++ /* "vidcutter/libs/pympv/mpv.pyx":891 ++ * ++ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): ++ * count = len(self.owned) # <<<<<<<<<<<<<< ++ * if count >= MAX_RENDER_PARAMS: ++ * if owned: + */ +- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 752, __pyx_L1_error) +- __pyx_v_id_data = ((uint64_t)__pyx_t_1); ++ __pyx_t_1 = __pyx_v_self->owned; ++ __Pyx_INCREF(__pyx_t_1); ++ __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 891, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_v_count = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":753 +- * assert self._ctx +- * cdef uint64_t id_data = hash(data) +- * id_data = hash(data) # <<<<<<<<<<<<<< +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is None: ++ /* "vidcutter/libs/pympv/mpv.pyx":892 ++ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): ++ * count = len(self.owned) ++ * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< ++ * if owned: ++ * free(p) + */ +- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 753, __pyx_L1_error) +- __pyx_v_id_data = ((uint64_t)__pyx_t_1); ++ __pyx_t_1 = PyObject_RichCompare(__pyx_v_count, __pyx_int_32, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 892, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 892, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ if (__pyx_t_3) { + +- /* "vidcutter/libs/pympv/mpv.pyx":754 +- * cdef uint64_t id_data = hash(data) +- * id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< +- * if userdatas is None: +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) ++ /* "vidcutter/libs/pympv/mpv.pyx":893 ++ * count = len(self.owned) ++ * if count >= MAX_RENDER_PARAMS: ++ * if owned: # <<<<<<<<<<<<<< ++ * free(p) ++ * raise PyMPVError("RenderParams overflow") + */ +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- __pyx_t_6 = 0; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- __pyx_t_6 = 1; +- } +- } +- #if CYTHON_FAST_PYCALL +- if (PyFunction_Check(__pyx_t_3)) { +- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; +- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- } else +- #endif +- #if CYTHON_FAST_PYCCALL +- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { +- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; +- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- } else +- #endif +- { +- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 754, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- if (__pyx_t_5) { +- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; +- } +- __Pyx_GIVEREF(__pyx_t_4); +- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); +- __pyx_t_4 = 0; +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- } +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_v_userdatas = __pyx_t_2; +- __pyx_t_2 = 0; ++ __pyx_t_3 = (__pyx_v_owned != 0); ++ if (__pyx_t_3) { + +- /* "vidcutter/libs/pympv/mpv.pyx":755 +- * id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is None: # <<<<<<<<<<<<<< +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) +- * userdatas.observed = True ++ /* "vidcutter/libs/pympv/mpv.pyx":894 ++ * if count >= MAX_RENDER_PARAMS: ++ * if owned: ++ * free(p) # <<<<<<<<<<<<<< ++ * raise PyMPVError("RenderParams overflow") ++ * + */ +- __pyx_t_8 = (__pyx_v_userdatas == Py_None); +- __pyx_t_9 = (__pyx_t_8 != 0); +- if (__pyx_t_9) { ++ free(__pyx_v_p); + +- /* "vidcutter/libs/pympv/mpv.pyx":756 +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is None: +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< +- * userdatas.observed = True +- * prop = _strenc(prop) ++ /* "vidcutter/libs/pympv/mpv.pyx":893 ++ * count = len(self.owned) ++ * if count >= MAX_RENDER_PARAMS: ++ * if owned: # <<<<<<<<<<<<<< ++ * free(p) ++ * raise PyMPVError("RenderParams overflow") + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_7 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_7)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_7); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } + } +- __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); +- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_2, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 756, __pyx_L1_error) +- __Pyx_INCREF(__pyx_t_2); +- __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_2); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":755 +- * id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is None: # <<<<<<<<<<<<<< +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) +- * userdatas.observed = True +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":757 +- * if userdatas is None: +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) +- * userdatas.observed = True # <<<<<<<<<<<<<< +- * prop = _strenc(prop) +- * cdef char* propc = prop +- */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_True) < 0) __PYX_ERR(0, 757, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":758 +- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) +- * userdatas.observed = True +- * prop = _strenc(prop) # <<<<<<<<<<<<<< +- * cdef char* propc = prop +- * cdef int err ++ /* "vidcutter/libs/pympv/mpv.pyx":895 ++ * if owned: ++ * free(p) ++ * raise PyMPVError("RenderParams overflow") # <<<<<<<<<<<<<< ++ * ++ * self.params[count].type = t + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strenc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_7 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_7)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_7); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_4, function); ++ } + } +- } +- __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_prop); +- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_2); +- __pyx_t_2 = 0; ++ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_RenderParams_overflow) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_RenderParams_overflow); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __PYX_ERR(0, 895, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":759 +- * userdatas.observed = True +- * prop = _strenc(prop) +- * cdef char* propc = prop # <<<<<<<<<<<<<< +- * cdef int err +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":892 ++ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): ++ * count = len(self.owned) ++ * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< ++ * if owned: ++ * free(p) + */ +- __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 759, __pyx_L1_error) +- __pyx_v_propc = __pyx_t_10; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":761 +- * cdef char* propc = prop +- * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_observe_property( +- * self._ctx, ++ /* "vidcutter/libs/pympv/mpv.pyx":897 ++ * raise PyMPVError("RenderParams overflow") ++ * ++ * self.params[count].type = t # <<<<<<<<<<<<<< ++ * self.params[count].data = p ++ * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 897, __pyx_L1_error) ++ (__pyx_v_self->params[__pyx_t_2]).type = __pyx_v_t; + +- /* "vidcutter/libs/pympv/mpv.pyx":762 +- * cdef int err +- * with nogil: +- * err = mpv_observe_property( # <<<<<<<<<<<<<< +- * self._ctx, +- * id_data, ++ /* "vidcutter/libs/pympv/mpv.pyx":898 ++ * ++ * self.params[count].type = t ++ * self.params[count].data = p # <<<<<<<<<<<<<< ++ * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID ++ * self.owned.append(owned) + */ +- __pyx_v_err = mpv_observe_property(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_propc, MPV_FORMAT_NODE); +- } ++ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 898, __pyx_L1_error) ++ (__pyx_v_self->params[__pyx_t_2]).data = __pyx_v_p; + +- /* "vidcutter/libs/pympv/mpv.pyx":761 +- * cdef char* propc = prop +- * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_observe_property( +- * self._ctx, ++ /* "vidcutter/libs/pympv/mpv.pyx":899 ++ * self.params[count].type = t ++ * self.params[count].data = p ++ * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< ++ * self.owned.append(owned) ++ * + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L6; +- } +- __pyx_L6:; +- } +- } ++ __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_count, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 899, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ (__pyx_v_self->params[__pyx_t_2]).type = MPV_RENDER_PARAM_INVALID; + +- /* "vidcutter/libs/pympv/mpv.pyx":768 +- * MPV_FORMAT_NODE, +- * ) +- * return err # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":900 ++ * self.params[count].data = p ++ * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID ++ * self.owned.append(owned) # <<<<<<<<<<<<<< + * +- * @_errors ++ * cdef add_int(self, mpv_render_param_type t, int val): + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_r = __pyx_t_2; +- __pyx_t_2 = 0; +- goto __pyx_L0; ++ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_owned); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 900, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->owned, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 900, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":749 ++ /* "vidcutter/libs/pympv/mpv.pyx":890 ++ * self.params[0].type = MPV_RENDER_PARAM_INVALID + * +- * @_errors +- * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< +- * """Wraps: mpv_observe_property""" +- * assert self._ctx ++ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< ++ * count = len(self.owned) ++ * if count >= MAX_RENDER_PARAMS: + */ + + /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_voidp", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_userdatas); +- __Pyx_XDECREF(__pyx_v_prop); ++ __Pyx_XDECREF(__pyx_v_count); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":771 ++/* "vidcutter/libs/pympv/mpv.pyx":902 ++ * self.owned.append(owned) + * +- * @_errors +- * def unobserve_property(self, data): # <<<<<<<<<<<<<< +- * """Wraps: mpv_unobserve_property""" +- * assert self._ctx ++ * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< ++ * cdef int *p = malloc(sizeof(int)) ++ * p[0] = val + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_41unobserve_property(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/ +-static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_40unobserve_property[] = "Wraps: mpv_unobserve_property"; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_41unobserve_property(PyObject *__pyx_v_self, PyObject *__pyx_v_data) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("unobserve_property (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_40unobserve_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_data)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_40unobserve_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_data) { +- uint64_t __pyx_v_id_data; +- PyObject *__pyx_v_userdatas = NULL; +- int __pyx_v_err; ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, int __pyx_v_val) { ++ int *__pyx_v_p; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- Py_hash_t __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- PyObject *__pyx_t_7 = NULL; +- int __pyx_t_8; +- int __pyx_t_9; ++ PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("unobserve_property", 0); ++ __Pyx_RefNannySetupContext("add_int", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":773 +- * def unobserve_property(self, data): +- * """Wraps: mpv_unobserve_property""" +- * assert self._ctx # <<<<<<<<<<<<<< +- * cdef uint64_t id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) ++ /* "vidcutter/libs/pympv/mpv.pyx":903 ++ * ++ * cdef add_int(self, mpv_render_param_type t, int val): ++ * cdef int *p = malloc(sizeof(int)) # <<<<<<<<<<<<<< ++ * p[0] = val ++ * self.add_voidp(t, p) + */ +- #ifndef CYTHON_WITHOUT_ASSERTIONS +- if (unlikely(!Py_OptimizeFlag)) { +- if (unlikely(!(__pyx_v_self->_ctx != 0))) { +- PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 773, __pyx_L1_error) +- } +- } +- #endif ++ __pyx_v_p = ((int *)malloc((sizeof(int)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":774 +- * """Wraps: mpv_unobserve_property""" +- * assert self._ctx +- * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is not None: +- */ +- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 774, __pyx_L1_error) +- __pyx_v_id_data = ((uint64_t)__pyx_t_1); +- +- /* "vidcutter/libs/pympv/mpv.pyx":775 +- * assert self._ctx +- * cdef uint64_t id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< +- * if userdatas is not None: +- * userdatas.observed = False +- */ +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- __pyx_t_6 = 0; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- __pyx_t_6 = 1; +- } +- } +- #if CYTHON_FAST_PYCALL +- if (PyFunction_Check(__pyx_t_3)) { +- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; +- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- } else +- #endif +- #if CYTHON_FAST_PYCCALL +- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { +- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; +- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- } else +- #endif +- { +- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 775, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- if (__pyx_t_5) { +- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; +- } +- __Pyx_GIVEREF(__pyx_t_4); +- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); +- __pyx_t_4 = 0; +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- } +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_v_userdatas = __pyx_t_2; +- __pyx_t_2 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":776 +- * cdef uint64_t id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is not None: # <<<<<<<<<<<<<< +- * userdatas.observed = False +- * if userdatas.counter <= 0: +- */ +- __pyx_t_8 = (__pyx_v_userdatas != Py_None); +- __pyx_t_9 = (__pyx_t_8 != 0); +- if (__pyx_t_9) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":777 +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is not None: +- * userdatas.observed = False # <<<<<<<<<<<<<< +- * if userdatas.counter <= 0: +- * del self.reply_userdata[id_data] +- */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 777, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":778 +- * if userdatas is not None: +- * userdatas.observed = False +- * if userdatas.counter <= 0: # <<<<<<<<<<<<<< +- * del self.reply_userdata[id_data] +- * cdef int err +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_counter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 778, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 778, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 778, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (__pyx_t_9) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":779 +- * userdatas.observed = False +- * if userdatas.counter <= 0: +- * del self.reply_userdata[id_data] # <<<<<<<<<<<<<< +- * cdef int err +- * with nogil: +- */ +- if (unlikely(__Pyx_DelItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 779, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":778 +- * if userdatas is not None: +- * userdatas.observed = False +- * if userdatas.counter <= 0: # <<<<<<<<<<<<<< +- * del self.reply_userdata[id_data] +- * cdef int err +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":776 +- * cdef uint64_t id_data = hash(data) +- * userdatas = self.reply_userdata.get(id_data, None) +- * if userdatas is not None: # <<<<<<<<<<<<<< +- * userdatas.observed = False +- * if userdatas.counter <= 0: +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":781 +- * del self.reply_userdata[id_data] +- * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_unobserve_property( +- * self._ctx, +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":782 +- * cdef int err +- * with nogil: +- * err = mpv_unobserve_property( # <<<<<<<<<<<<<< +- * self._ctx, +- * id_data, +- */ +- __pyx_v_err = mpv_unobserve_property(__pyx_v_self->_ctx, __pyx_v_id_data); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":781 +- * del self.reply_userdata[id_data] +- * cdef int err +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_unobserve_property( +- * self._ctx, ++ /* "vidcutter/libs/pympv/mpv.pyx":904 ++ * cdef add_int(self, mpv_render_param_type t, int val): ++ * cdef int *p = malloc(sizeof(int)) ++ * p[0] = val # <<<<<<<<<<<<<< ++ * self.add_voidp(t, p) ++ * + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L7; +- } +- __pyx_L7:; +- } +- } ++ (__pyx_v_p[0]) = __pyx_v_val; + +- /* "vidcutter/libs/pympv/mpv.pyx":786 +- * id_data, +- * ) +- * return err # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":905 ++ * cdef int *p = malloc(sizeof(int)) ++ * p[0] = val ++ * self.add_voidp(t, p) # <<<<<<<<<<<<<< + * +- * def shutdown(self): ++ * cdef add_string(self, mpv_render_param_type t, char *s): + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 786, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":771 ++ /* "vidcutter/libs/pympv/mpv.pyx":902 ++ * self.owned.append(owned) + * +- * @_errors +- * def unobserve_property(self, data): # <<<<<<<<<<<<<< +- * """Wraps: mpv_unobserve_property""" +- * assert self._ctx ++ * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< ++ * cdef int *p = malloc(sizeof(int)) ++ * p[0] = val + */ + + /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.unobserve_property", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_int", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_userdatas); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":788 +- * return err ++/* "vidcutter/libs/pympv/mpv.pyx":907 ++ * self.add_voidp(t, p) + * +- * def shutdown(self): # <<<<<<<<<<<<<< +- * if self._ctx == NULL: +- * return ++ * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< ++ * cdef char *p = malloc(strlen(s) + 1) ++ * strcpy(p, s) + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_43shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_43shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("shutdown (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_42shutdown(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_42shutdown(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- uint64_t __pyx_v_ctxid; ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, char *__pyx_v_s) { ++ char *__pyx_v_p; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- uint64_t __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; ++ PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("shutdown", 0); ++ __Pyx_RefNannySetupContext("add_string", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":789 ++ /* "vidcutter/libs/pympv/mpv.pyx":908 + * +- * def shutdown(self): +- * if self._ctx == NULL: # <<<<<<<<<<<<<< +- * return +- * cdef uint64_t ctxid = id(self) +- */ +- __pyx_t_1 = ((__pyx_v_self->_ctx == NULL) != 0); +- if (__pyx_t_1) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":790 +- * def shutdown(self): +- * if self._ctx == NULL: +- * return # <<<<<<<<<<<<<< +- * cdef uint64_t ctxid = id(self) +- * with nogil: +- */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":789 +- * +- * def shutdown(self): +- * if self._ctx == NULL: # <<<<<<<<<<<<<< +- * return +- * cdef uint64_t ctxid = id(self) +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":791 +- * if self._ctx == NULL: +- * return +- * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_terminate_destroy(self._ctx) +- */ +- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 791, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v_ctxid = ((uint64_t)__pyx_t_3); +- +- /* "vidcutter/libs/pympv/mpv.pyx":792 +- * return +- * cdef uint64_t ctxid = id(self) +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_terminate_destroy(self._ctx) +- * self.callbackthread.shutdown() +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":793 +- * cdef uint64_t ctxid = id(self) +- * with nogil: +- * mpv_terminate_destroy(self._ctx) # <<<<<<<<<<<<<< +- * self.callbackthread.shutdown() +- * del _callbacks[ctxid] +- */ +- mpv_terminate_destroy(__pyx_v_self->_ctx); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":792 +- * return +- * cdef uint64_t ctxid = id(self) +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_terminate_destroy(self._ctx) +- * self.callbackthread.shutdown() +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L6; +- } +- __pyx_L6:; +- } +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":794 +- * with nogil: +- * mpv_terminate_destroy(self._ctx) +- * self.callbackthread.shutdown() # <<<<<<<<<<<<<< +- * del _callbacks[ctxid] +- * del _reply_userdatas[ctxid] +- */ +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 794, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); +- } +- } +- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":795 +- * mpv_terminate_destroy(self._ctx) +- * self.callbackthread.shutdown() +- * del _callbacks[ctxid] # <<<<<<<<<<<<<< +- * del _reply_userdatas[ctxid] +- * self.callback = None +- */ +- if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 795, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":796 +- * self.callbackthread.shutdown() +- * del _callbacks[ctxid] +- * del _reply_userdatas[ctxid] # <<<<<<<<<<<<<< +- * self.callback = None +- * self.reply_userdata = None +- */ +- if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 796, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":797 +- * del _callbacks[ctxid] +- * del _reply_userdatas[ctxid] +- * self.callback = None # <<<<<<<<<<<<<< +- * self.reply_userdata = None +- * self._ctx = NULL ++ * cdef add_string(self, mpv_render_param_type t, char *s): ++ * cdef char *p = malloc(strlen(s) + 1) # <<<<<<<<<<<<<< ++ * strcpy(p, s) ++ * self.add_voidp(t, p) + */ +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->callback); +- __Pyx_DECREF(__pyx_v_self->callback); +- __pyx_v_self->callback = Py_None; ++ __pyx_v_p = ((char *)malloc((strlen(__pyx_v_s) + 1))); + +- /* "vidcutter/libs/pympv/mpv.pyx":798 +- * del _reply_userdatas[ctxid] +- * self.callback = None +- * self.reply_userdata = None # <<<<<<<<<<<<<< +- * self._ctx = NULL ++ /* "vidcutter/libs/pympv/mpv.pyx":909 ++ * cdef add_string(self, mpv_render_param_type t, char *s): ++ * cdef char *p = malloc(strlen(s) + 1) ++ * strcpy(p, s) # <<<<<<<<<<<<<< ++ * self.add_voidp(t, p) + * + */ +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- __Pyx_GOTREF(__pyx_v_self->reply_userdata); +- __Pyx_DECREF(__pyx_v_self->reply_userdata); +- __pyx_v_self->reply_userdata = Py_None; ++ (void)(strcpy(__pyx_v_p, __pyx_v_s)); + +- /* "vidcutter/libs/pympv/mpv.pyx":799 +- * self.callback = None +- * self.reply_userdata = None +- * self._ctx = NULL # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":910 ++ * cdef char *p = malloc(strlen(s) + 1) ++ * strcpy(p, s) ++ * self.add_voidp(t, p) # <<<<<<<<<<<<<< + * +- * def opengl_cb_api(self): ++ * def __dealloc__(self): + */ +- __pyx_v_self->_ctx = NULL; ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":788 +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":907 ++ * self.add_voidp(t, p) + * +- * def shutdown(self): # <<<<<<<<<<<<<< +- * if self._ctx == NULL: +- * return ++ * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< ++ * cdef char *p = malloc(strlen(s) + 1) ++ * strcpy(p, s) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_string", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":801 +- * self._ctx = NULL +- * +- * def opengl_cb_api(self): # <<<<<<<<<<<<<< +- * cdef void *cb ++/* "vidcutter/libs/pympv/mpv.pyx":912 ++ * self.add_voidp(t, p) + * ++ * def __dealloc__(self): # <<<<<<<<<<<<<< ++ * for i, j in enumerate(self.owned): ++ * if j: + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_45opengl_cb_api(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_45opengl_cb_api(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; ++static void __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ ++static void __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("opengl_cb_api (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_44opengl_cb_api(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); ++ __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +- return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44opengl_cb_api(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- void *__pyx_v__ctx; +- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_ctx = NULL; +- PyObject *__pyx_r = NULL; ++static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { ++ PyObject *__pyx_v_i = NULL; ++ PyObject *__pyx_v_j = NULL; + __Pyx_RefNannyDeclarations +- int __pyx_t_1; ++ PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; ++ Py_ssize_t __pyx_t_3; ++ PyObject *(*__pyx_t_4)(PyObject *); ++ PyObject *__pyx_t_5 = NULL; ++ int __pyx_t_6; ++ Py_ssize_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("opengl_cb_api", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":804 +- * cdef void *cb +- * +- * _ctx = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB) # <<<<<<<<<<<<<< +- * if not _ctx: +- * raise MPVError("OpenGL API not available") +- */ +- __pyx_v__ctx = mpv_get_sub_api(__pyx_v_self->_ctx, MPV_SUB_API_OPENGL_CB); +- +- /* "vidcutter/libs/pympv/mpv.pyx":805 +- * +- * _ctx = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB) +- * if not _ctx: # <<<<<<<<<<<<<< +- * raise MPVError("OpenGL API not available") +- * +- */ +- __pyx_t_1 = ((!(__pyx_v__ctx != 0)) != 0); +- if (unlikely(__pyx_t_1)) { ++ __Pyx_RefNannySetupContext("__dealloc__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":806 +- * _ctx = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB) +- * if not _ctx: +- * raise MPVError("OpenGL API not available") # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":913 + * +- * ctx = OpenGLContext() ++ * def __dealloc__(self): ++ * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< ++ * if j: ++ * free(self.params[i].data) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 806, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_INCREF(__pyx_int_0); ++ __pyx_t_1 = __pyx_int_0; ++ if (likely(PyList_CheckExact(__pyx_v_self->owned)) || PyTuple_CheckExact(__pyx_v_self->owned)) { ++ __pyx_t_2 = __pyx_v_self->owned; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; + __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } +- } +- __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_OpenGL_API_not_available) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_OpenGL_API_not_available); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 806, __pyx_L1_error) ++ } else { ++ __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->owned); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_Raise(__pyx_t_2, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __PYX_ERR(0, 806, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":805 +- * +- * _ctx = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB) +- * if not _ctx: # <<<<<<<<<<<<<< +- * raise MPVError("OpenGL API not available") +- * +- */ ++ __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L1_error) + } ++ for (;;) { ++ if (likely(!__pyx_t_4)) { ++ if (likely(PyList_CheckExact(__pyx_t_2))) { ++ if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; ++ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) ++ #else ++ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ #endif ++ } else { ++ if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; ++ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) ++ #else ++ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ #endif ++ } ++ } else { ++ __pyx_t_5 = __pyx_t_4(__pyx_t_2); ++ if (unlikely(!__pyx_t_5)) { ++ PyObject* exc_type = PyErr_Occurred(); ++ if (exc_type) { ++ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); ++ else __PYX_ERR(0, 913, __pyx_L1_error) ++ } ++ break; ++ } ++ __Pyx_GOTREF(__pyx_t_5); ++ } ++ __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_5); ++ __pyx_t_5 = 0; ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); ++ __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_DECREF(__pyx_t_1); ++ __pyx_t_1 = __pyx_t_5; ++ __pyx_t_5 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":808 +- * raise MPVError("OpenGL API not available") +- * +- * ctx = OpenGLContext() # <<<<<<<<<<<<<< +- * ctx._ctx = _ctx +- * +- */ +- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_OpenGLContext)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 808, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_v_ctx = ((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_t_2); +- __pyx_t_2 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":809 +- * +- * ctx = OpenGLContext() +- * ctx._ctx = _ctx # <<<<<<<<<<<<<< +- * +- * return ctx +- */ +- __pyx_v_ctx->_ctx = ((struct mpv_opengl_cb_context *)__pyx_v__ctx); +- +- /* "vidcutter/libs/pympv/mpv.pyx":811 +- * ctx._ctx = _ctx +- * +- * return ctx # <<<<<<<<<<<<<< +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":914 + * def __dealloc__(self): ++ * for i, j in enumerate(self.owned): ++ * if j: # <<<<<<<<<<<<<< ++ * free(self.params[i].data) ++ * + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); +- __pyx_r = ((PyObject *)__pyx_v_ctx); +- goto __pyx_L0; ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_j); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 914, __pyx_L1_error) ++ if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":801 +- * self._ctx = NULL +- * +- * def opengl_cb_api(self): # <<<<<<<<<<<<<< +- * cdef void *cb ++ /* "vidcutter/libs/pympv/mpv.pyx":915 ++ * for i, j in enumerate(self.owned): ++ * if j: ++ * free(self.params[i].data) # <<<<<<<<<<<<<< + * ++ * cdef void *get_pointer(const char *name, object obj): + */ ++ __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error) ++ free((__pyx_v_self->params[__pyx_t_7]).data); + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.opengl_cb_api", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF((PyObject *)__pyx_v_ctx); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":813 +- * return ctx +- * +- * def __dealloc__(self): # <<<<<<<<<<<<<< +- * self.shutdown() ++ /* "vidcutter/libs/pympv/mpv.pyx":914 ++ * def __dealloc__(self): ++ * for i, j in enumerate(self.owned): ++ * if j: # <<<<<<<<<<<<<< ++ * free(self.params[i].data) + * + */ ++ } + +-/* Python wrapper */ +-static void __pyx_pw_9vidcutter_4libs_3mpv_7Context_47__dealloc__(PyObject *__pyx_v_self); /*proto*/ +-static void __pyx_pw_9vidcutter_4libs_3mpv_7Context_47__dealloc__(PyObject *__pyx_v_self) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); +- __pyx_pf_9vidcutter_4libs_3mpv_7Context_46__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +-} +- +-static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_46__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__dealloc__", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":814 ++ /* "vidcutter/libs/pympv/mpv.pyx":913 + * + * def __dealloc__(self): +- * self.shutdown() # <<<<<<<<<<<<<< +- * +- * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: ++ * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< ++ * if j: ++ * free(self.params[i].data) + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 814, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } + } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":813 +- * return ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":912 ++ * self.add_voidp(t, p) + * + * def __dealloc__(self): # <<<<<<<<<<<<<< +- * self.shutdown() +- * ++ * for i, j in enumerate(self.owned): ++ * if j: + */ + + /* function exit code */ +@@ -16122,32 +15924,34 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_46__dealloc__(struct __pyx_o + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv._RenderParams.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_i); ++ __Pyx_XDECREF(__pyx_v_j); + __Pyx_RefNannyFinishContext(); + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_49__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_49__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +@@ -16158,11 +15962,11 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYT + + /* "(tree fragment)":2 + * def __reduce_cython__(self): +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +@@ -16170,14 +15974,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYT + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); +@@ -16186,25 +15990,25 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYT + + /* "(tree fragment)":3 + * def __reduce_cython__(self): +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_51__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_51__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +@@ -16214,11 +16018,11 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(C + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +@@ -16226,2675 +16030,2187 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(C + + /* "(tree fragment)":3 + * def __reduce_cython__(self): +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":816 +- * self.shutdown() +- * +- * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< +- * return (ctx)(name) ++/* "vidcutter/libs/pympv/mpv.pyx":917 ++ * free(self.params[i].data) + * ++ * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< ++ * cdef void *p ++ * if PyCapsule_IsValid(obj, name): + */ + +-static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, char const *__pyx_v_name) { ++static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, PyObject *__pyx_v_obj) { ++ void *__pyx_v_p; + void *__pyx_r; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; ++ int __pyx_t_1; ++ void *__pyx_t_2; ++ int __pyx_t_3; ++ int __pyx_t_4; + intptr_t __pyx_t_5; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ PyObject *__pyx_t_8 = NULL; ++ PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- #ifdef WITH_THREAD +- PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); +- #endif +- __Pyx_RefNannySetupContext("_c_getprocaddress", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":817 +- * +- * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: +- * return (ctx)(name) # <<<<<<<<<<<<<< +- * +- * cdef void _c_updatecb(void *ctx) with gil: +- */ +- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); +- __pyx_t_3 = ((PyObject *)__pyx_v_ctx); __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } +- } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 817, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_r = ((void *)((intptr_t)__pyx_t_5)); +- goto __pyx_L0; ++ __Pyx_RefNannySetupContext("get_pointer", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":816 +- * self.shutdown() +- * +- * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< +- * return (ctx)(name) +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":919 ++ * cdef void *get_pointer(const char *name, object obj): ++ * cdef void *p ++ * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< ++ * p = PyCapsule_GetPointer(obj, name) ++ * elif isinstance(obj, int) or isinstance(obj, long) and obj: + */ ++ __pyx_t_1 = (PyCapsule_IsValid(__pyx_v_obj, __pyx_v_name) != 0); ++ if (__pyx_t_1) { + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_getprocaddress", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_RefNannyFinishContext(); +- #ifdef WITH_THREAD +- __Pyx_PyGILState_Release(__pyx_gilstate_save); +- #endif +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":920 ++ * cdef void *p ++ * if PyCapsule_IsValid(obj, name): ++ * p = PyCapsule_GetPointer(obj, name) # <<<<<<<<<<<<<< ++ * elif isinstance(obj, int) or isinstance(obj, long) and obj: ++ * p = obj ++ */ ++ __pyx_t_2 = PyCapsule_GetPointer(__pyx_v_obj, __pyx_v_name); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 920, __pyx_L1_error) ++ __pyx_v_p = __pyx_t_2; + +-/* "vidcutter/libs/pympv/mpv.pyx":819 +- * return (ctx)(name) +- * +- * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< +- * (ctx)() +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":919 ++ * cdef void *get_pointer(const char *name, object obj): ++ * cdef void *p ++ * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< ++ * p = PyCapsule_GetPointer(obj, name) ++ * elif isinstance(obj, int) or isinstance(obj, long) and obj: + */ ++ goto __pyx_L3; ++ } + +-static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- #ifdef WITH_THREAD +- PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); +- #endif +- __Pyx_RefNannySetupContext("_c_updatecb", 0); ++ /* "vidcutter/libs/pympv/mpv.pyx":921 ++ * if PyCapsule_IsValid(obj, name): ++ * p = PyCapsule_GetPointer(obj, name) ++ * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< ++ * p = obj ++ * else: ++ */ ++ __pyx_t_3 = PyInt_Check(__pyx_v_obj); ++ __pyx_t_4 = (__pyx_t_3 != 0); ++ if (!__pyx_t_4) { ++ } else { ++ __pyx_t_1 = __pyx_t_4; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_4 = PyLong_Check(__pyx_v_obj); ++ __pyx_t_3 = (__pyx_t_4 != 0); ++ if (__pyx_t_3) { ++ } else { ++ __pyx_t_1 = __pyx_t_3; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 921, __pyx_L1_error) ++ __pyx_t_1 = __pyx_t_3; ++ __pyx_L4_bool_binop_done:; ++ if (likely(__pyx_t_1)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":820 +- * +- * cdef void _c_updatecb(void *ctx) with gil: +- * (ctx)() # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":922 ++ * p = PyCapsule_GetPointer(obj, name) ++ * elif isinstance(obj, int) or isinstance(obj, long) and obj: ++ * p = obj # <<<<<<<<<<<<<< ++ * else: ++ * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) ++ */ ++ __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_v_obj); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) ++ __pyx_v_p = ((void *)((intptr_t)__pyx_t_5)); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":921 ++ * if PyCapsule_IsValid(obj, name): ++ * p = PyCapsule_GetPointer(obj, name) ++ * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< ++ * p = obj ++ * else: ++ */ ++ goto __pyx_L3; ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":924 ++ * p = obj ++ * else: ++ * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) # <<<<<<<<<<<<<< ++ * return p + * +- * cdef class OpenGLContext(object): + */ +- __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); +- __pyx_t_2 = ((PyObject *)__pyx_v_ctx); __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); ++ /*else*/ { ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_v_obj); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 924, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_8); ++ __pyx_t_9 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { ++ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); ++ if (likely(__pyx_t_9)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); ++ __Pyx_INCREF(__pyx_t_9); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_7, function); ++ } + } ++ __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); ++ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; ++ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; ++ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 924, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_Raise(__pyx_t_6, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __PYX_ERR(0, 924, __pyx_L1_error) + } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 820, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_L3:; + +- /* "vidcutter/libs/pympv/mpv.pyx":819 +- * return (ctx)(name) +- * +- * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< +- * (ctx)() ++ /* "vidcutter/libs/pympv/mpv.pyx":925 ++ * else: ++ * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) ++ * return p # <<<<<<<<<<<<<< + * ++ * @cython.internal + */ +- +- /* function exit code */ ++ __pyx_r = __pyx_v_p; + goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_updatecb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); +- __pyx_L0:; +- __Pyx_RefNannyFinishContext(); +- #ifdef WITH_THREAD +- __Pyx_PyGILState_Release(__pyx_gilstate_save); +- #endif +-} + +-/* "vidcutter/libs/pympv/mpv.pyx":828 +- * object update_cb ++ /* "vidcutter/libs/pympv/mpv.pyx":917 ++ * free(self.params[i].data) + * +- * def __init__(self): # <<<<<<<<<<<<<< +- * self.inited = False +- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) ++ * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< ++ * cdef void *p ++ * if PyCapsule_IsValid(obj, name): + */ + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); +- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} +- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self)); +- + /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_XDECREF(__pyx_t_9); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv.get_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __pyx_r = 0; ++ __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self) { +- int __pyx_r; ++/* "vidcutter/libs/pympv/mpv.pyx":929 ++ * @cython.internal ++ * cdef class RenderFrameInfo(object): ++ * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< ++ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) ++ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) ++ */ ++ ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self, struct mpv_render_frame_info *__pyx_v_info) { ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; ++ int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__init__", 0); ++ __Pyx_RefNannySetupContext("_from_struct", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":829 +- * +- * def __init__(self): +- * self.inited = False # <<<<<<<<<<<<<< +- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":930 ++ * cdef class RenderFrameInfo(object): ++ * cdef _from_struct(self, mpv_render_frame_info *info): ++ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) # <<<<<<<<<<<<<< ++ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) ++ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) + */ +- __pyx_v_self->inited = 0; ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_PRESENT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 930, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_present, __pyx_t_1) < 0) __PYX_ERR(0, 930, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":830 +- * def __init__(self): +- * self.inited = False +- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) # <<<<<<<<<<<<<< +- * +- * def init_gl(self, exts, get_proc_address): ++ /* "vidcutter/libs/pympv/mpv.pyx":931 ++ * cdef _from_struct(self, mpv_render_frame_info *info): ++ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) ++ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) # <<<<<<<<<<<<<< ++ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) ++ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_warnings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REDRAW)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warn); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 830, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 931, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redraw, __pyx_t_1) < 0) __PYX_ERR(0, 931, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":828 +- * object update_cb +- * +- * def __init__(self): # <<<<<<<<<<<<<< +- * self.inited = False +- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) ++ /* "vidcutter/libs/pympv/mpv.pyx":932 ++ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) ++ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) ++ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) # <<<<<<<<<<<<<< ++ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) ++ * self.target_time = info[0].target_time + */ ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REPEAT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 932, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repeat, __pyx_t_1) < 0) __PYX_ERR(0, 932, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* function exit code */ +- __pyx_r = 0; +- goto __pyx_L0; ++ /* "vidcutter/libs/pympv/mpv.pyx":933 ++ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) ++ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) ++ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) # <<<<<<<<<<<<<< ++ * self.target_time = info[0].target_time ++ * return self ++ */ ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_block_vsync, __pyx_t_1) < 0) __PYX_ERR(0, 933, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":934 ++ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) ++ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) ++ * self.target_time = info[0].target_time # <<<<<<<<<<<<<< ++ * return self ++ * ++ */ ++ __pyx_t_1 = __Pyx_PyInt_From_int64_t((__pyx_v_info[0]).target_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target_time, __pyx_t_1) < 0) __PYX_ERR(0, 934, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":935 ++ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) ++ * self.target_time = info[0].target_time ++ * return self # <<<<<<<<<<<<<< ++ * ++ * cdef class RenderContext(object): ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(((PyObject *)__pyx_v_self)); ++ __pyx_r = ((PyObject *)__pyx_v_self); ++ goto __pyx_L0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":929 ++ * @cython.internal ++ * cdef class RenderFrameInfo(object): ++ * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< ++ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) ++ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) ++ */ ++ ++ /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = -1; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo._from_struct", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; + __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":832 +- * 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 ++/* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * cdef tuple state ++ * cdef object _dict + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_3init_gl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_3init_gl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_exts = 0; +- PyObject *__pyx_v_get_proc_address = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("init_gl (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exts,&__pyx_n_s_get_proc_address,0}; +- PyObject* values[2] = {0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exts)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_get_proc_address)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("init_gl", 1, 2, 2, 1); __PYX_ERR(0, 832, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init_gl") < 0)) __PYX_ERR(0, 832, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- } +- __pyx_v_exts = values[0]; +- __pyx_v_get_proc_address = values[1]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("init_gl", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 832, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.init_gl", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_2init_gl(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), __pyx_v_exts, __pyx_v_get_proc_address); ++ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_2init_gl(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_exts, PyObject *__pyx_v_get_proc_address) { +- char *__pyx_v_extsc; +- int __pyx_v_err; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self) { ++ PyObject *__pyx_v_state = 0; ++ PyObject *__pyx_v__dict = 0; ++ int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; +- PyObject *__pyx_t_3 = NULL; ++ int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- char *__pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("init_gl", 0); +- __Pyx_INCREF(__pyx_v_exts); +- +- /* "vidcutter/libs/pympv/mpv.pyx":833 +- * +- * 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: +- */ +- __pyx_t_2 = (__pyx_v_exts != Py_None); +- if ((__pyx_t_2 != 0)) { +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_strenc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 833, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); +- } +- } +- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_exts) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_exts); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 833, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_t_1 = __pyx_t_3; +- __pyx_t_3 = 0; +- } else { +- __Pyx_INCREF(Py_None); +- __pyx_t_1 = Py_None; +- } +- __Pyx_DECREF_SET(__pyx_v_exts, __pyx_t_1); +- __pyx_t_1 = 0; ++ __Pyx_RefNannySetupContext("__reduce_cython__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":834 +- * 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 ++ /* "(tree fragment)":5 ++ * cdef object _dict ++ * cdef bint use_setstate ++ * state = () # <<<<<<<<<<<<<< ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: + */ +- __pyx_v_extsc = NULL; ++ __Pyx_INCREF(__pyx_empty_tuple); ++ __pyx_v_state = __pyx_empty_tuple; + +- /* "vidcutter/libs/pympv/mpv.pyx":835 +- * exts = _strenc(exts) if exts is not None else None +- * cdef char* extsc = NULL +- * if exts is not None: # <<<<<<<<<<<<<< +- * extsc = exts +- * with nogil: ++ /* "(tree fragment)":6 ++ * cdef bint use_setstate ++ * state = () ++ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< ++ * if _dict is not None: ++ * state += (_dict,) + */ +- __pyx_t_2 = (__pyx_v_exts != Py_None); +- __pyx_t_6 = (__pyx_t_2 != 0); +- if (__pyx_t_6) { ++ __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_v__dict = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":836 +- * cdef char* extsc = NULL +- * if exts is not None: +- * extsc = exts # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, ++ /* "(tree fragment)":7 ++ * state = () ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: # <<<<<<<<<<<<<< ++ * state += (_dict,) ++ * use_setstate = True + */ +- __pyx_t_7 = __Pyx_PyObject_AsWritableString(__pyx_v_exts); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 836, __pyx_L1_error) +- __pyx_v_extsc = __pyx_t_7; ++ __pyx_t_2 = (__pyx_v__dict != Py_None); ++ __pyx_t_3 = (__pyx_t_2 != 0); ++ if (__pyx_t_3) { + +- /* "vidcutter/libs/pympv/mpv.pyx":835 +- * exts = _strenc(exts) if exts is not None else None +- * cdef char* extsc = NULL +- * if exts is not None: # <<<<<<<<<<<<<< +- * extsc = exts +- * with nogil: ++ /* "(tree fragment)":8 ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: ++ * state += (_dict,) # <<<<<<<<<<<<<< ++ * use_setstate = True ++ * else: + */ +- } ++ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_INCREF(__pyx_v__dict); ++ __Pyx_GIVEREF(__pyx_v__dict); ++ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); ++ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); ++ __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":837 +- * if exts is not None: +- * extsc = exts +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, +- * get_proc_address) ++ /* "(tree fragment)":9 ++ * if _dict is not None: ++ * state += (_dict,) ++ * use_setstate = True # <<<<<<<<<<<<<< ++ * else: ++ * use_setstate = False + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_v_use_setstate = 1; + +- /* "vidcutter/libs/pympv/mpv.pyx":838 +- * extsc = exts +- * with nogil: +- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, # <<<<<<<<<<<<<< +- * get_proc_address) +- * if err < 0: ++ /* "(tree fragment)":7 ++ * state = () ++ * _dict = getattr(self, '__dict__', None) ++ * if _dict is not None: # <<<<<<<<<<<<<< ++ * state += (_dict,) ++ * use_setstate = True + */ +- __pyx_v_err = mpv_opengl_cb_init_gl(__pyx_v_self->_ctx, __pyx_v_extsc, (&__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress), ((void *)__pyx_v_get_proc_address)); +- } ++ goto __pyx_L3; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":837 +- * if exts is not None: +- * extsc = exts +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, +- * get_proc_address) ++ /* "(tree fragment)":11 ++ * use_setstate = True ++ * else: ++ * use_setstate = False # <<<<<<<<<<<<<< ++ * if use_setstate: ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L6; +- } +- __pyx_L6:; +- } ++ /*else*/ { ++ __pyx_v_use_setstate = 0; + } ++ __pyx_L3:; + +- /* "vidcutter/libs/pympv/mpv.pyx":840 +- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, +- * get_proc_address) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * ++ /* "(tree fragment)":12 ++ * else: ++ * use_setstate = False ++ * if use_setstate: # <<<<<<<<<<<<<< ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state ++ * else: + */ +- __pyx_t_6 = ((__pyx_v_err < 0) != 0); +- if (unlikely(__pyx_t_6)) { ++ __pyx_t_3 = (__pyx_v_use_setstate != 0); ++ if (__pyx_t_3) { + +- /* "vidcutter/libs/pympv/mpv.pyx":841 +- * get_proc_address) +- * if err < 0: +- * raise MPVError(err) # <<<<<<<<<<<<<< +- * +- * self.inited = True ++ /* "(tree fragment)":13 ++ * use_setstate = False ++ * if use_setstate: ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state # <<<<<<<<<<<<<< ++ * else: ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 841, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 841, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_RenderFrameInfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } +- } +- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error) ++ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 841, __pyx_L1_error) ++ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_INCREF(__pyx_int_222419149); ++ __Pyx_GIVEREF(__pyx_int_222419149); ++ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); ++ __Pyx_INCREF(Py_None); ++ __Pyx_GIVEREF(Py_None); ++ PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); ++ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_GIVEREF(__pyx_t_4); ++ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); ++ __Pyx_GIVEREF(__pyx_t_1); ++ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); ++ __Pyx_INCREF(__pyx_v_state); ++ __Pyx_GIVEREF(__pyx_v_state); ++ PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state); ++ __pyx_t_4 = 0; ++ __pyx_t_1 = 0; ++ __pyx_r = __pyx_t_5; ++ __pyx_t_5 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":840 +- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, +- * get_proc_address) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * ++ /* "(tree fragment)":12 ++ * else: ++ * use_setstate = False ++ * if use_setstate: # <<<<<<<<<<<<<< ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state ++ * else: + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":843 +- * raise MPVError(err) +- * +- * self.inited = True # <<<<<<<<<<<<<< +- * +- * def set_update_callback(self, cb): ++ /* "(tree fragment)":15 ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state ++ * else: ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) + */ +- __pyx_v_self->inited = 1; ++ /*else*/ { ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_RenderFrameInfo); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); ++ __Pyx_INCREF(__pyx_int_222419149); ++ __Pyx_GIVEREF(__pyx_int_222419149); ++ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); ++ __Pyx_INCREF(__pyx_v_state); ++ __Pyx_GIVEREF(__pyx_v_state); ++ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); ++ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_GIVEREF(__pyx_t_5); ++ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); ++ __Pyx_GIVEREF(__pyx_t_1); ++ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); ++ __pyx_t_5 = 0; ++ __pyx_t_1 = 0; ++ __pyx_r = __pyx_t_4; ++ __pyx_t_4 = 0; ++ goto __pyx_L0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":832 +- * 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 ++ /* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * cdef tuple state ++ * cdef object _dict + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.init_gl", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_exts); ++ __Pyx_XDECREF(__pyx_v_state); ++ __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":845 +- * self.inited = True +- * +- * def set_update_callback(self, cb): # <<<<<<<<<<<<<< +- * self.update_cb = cb +- * with nogil: ++/* "(tree fragment)":16 ++ * else: ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_5set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_5set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_update_callback (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_4set_update_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), ((PyObject *)__pyx_v_cb)); ++ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_4set_update_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_cb) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_update_callback", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":846 +- * +- * def set_update_callback(self, cb): +- * self.update_cb = cb # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) +- */ +- __Pyx_INCREF(__pyx_v_cb); +- __Pyx_GIVEREF(__pyx_v_cb); +- __Pyx_GOTREF(__pyx_v_self->update_cb); +- __Pyx_DECREF(__pyx_v_self->update_cb); +- __pyx_v_self->update_cb = __pyx_v_cb; +- +- /* "vidcutter/libs/pympv/mpv.pyx":847 +- * def set_update_callback(self, cb): +- * self.update_cb = cb +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) +- * +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":848 +- * self.update_cb = cb +- * with nogil: +- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) # <<<<<<<<<<<<<< +- * +- * def draw(self, fbo, w, h): +- */ +- mpv_opengl_cb_set_update_callback(__pyx_v_self->_ctx, (&__pyx_f_9vidcutter_4libs_3mpv__c_updatecb), ((void *)__pyx_v_cb)); +- } ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__setstate_cython__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":847 +- * def set_update_callback(self, cb): +- * self.update_cb = cb +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) +- * ++ /* "(tree fragment)":17 ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) ++ * def __setstate_cython__(self, __pyx_state): ++ * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } ++ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":845 +- * self.inited = True +- * +- * def set_update_callback(self, cb): # <<<<<<<<<<<<<< +- * self.update_cb = cb +- * with nogil: ++ /* "(tree fragment)":16 ++ * else: ++ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":850 +- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) ++/* "vidcutter/libs/pympv/mpv.pyx":950 ++ * bint inited + * +- * def draw(self, fbo, w, h): # <<<<<<<<<<<<<< +- * cdef: +- * int fboc = fbo ++ * def __init__(self, mpv, # <<<<<<<<<<<<<< ++ * api_type, ++ * opengl_init_params=None, + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_7draw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_7draw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_fbo = 0; +- PyObject *__pyx_v_w = 0; +- PyObject *__pyx_v_h = 0; ++static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_mpv = 0; ++ PyObject *__pyx_v_api_type = 0; ++ PyObject *__pyx_v_opengl_init_params = 0; ++ PyObject *__pyx_v_advanced_control = 0; ++ PyObject *__pyx_v_x11_display = 0; ++ PyObject *__pyx_v_wl_display = 0; ++ PyObject *__pyx_v_drm_display = 0; ++ PyObject *__pyx_v_drm_osd_size = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; ++ int __pyx_r; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("draw (wrapper)", 0); ++ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fbo,&__pyx_n_s_w,&__pyx_n_s_h,0}; +- PyObject* values[3] = {0,0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fbo)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("draw", 1, 3, 3, 1); __PYX_ERR(0, 850, __pyx_L3_error) +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("draw", 1, 3, 3, 2); __PYX_ERR(0, 850, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "draw") < 0)) __PYX_ERR(0, 850, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- } +- __pyx_v_fbo = values[0]; +- __pyx_v_w = values[1]; +- __pyx_v_h = values[2]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("draw", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 850, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.draw", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_6draw(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), __pyx_v_fbo, __pyx_v_w, __pyx_v_h); ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_api_type,&__pyx_n_s_opengl_init_params,&__pyx_n_s_advanced_control,&__pyx_n_s_x11_display,&__pyx_n_s_wl_display,&__pyx_n_s_drm_display,&__pyx_n_s_drm_osd_size,0}; ++ PyObject* values[8] = {0,0,0,0,0,0,0,0}; + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_6draw(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_fbo, PyObject *__pyx_v_w, PyObject *__pyx_v_h) { +- int __pyx_v_fboc; +- int __pyx_v_wc; +- int __pyx_v_hc; +- int __pyx_v_err; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- int __pyx_t_2; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- PyObject *__pyx_t_6 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("draw", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":852 +- * def draw(self, fbo, w, h): +- * cdef: +- * int fboc = fbo # <<<<<<<<<<<<<< +- * int wc = w +- * int hc = h ++ /* "vidcutter/libs/pympv/mpv.pyx":952 ++ * def __init__(self, mpv, ++ * api_type, ++ * opengl_init_params=None, # <<<<<<<<<<<<<< ++ * advanced_control=False, ++ * x11_display=None, + */ +- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_fbo); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 852, __pyx_L1_error) +- __pyx_v_fboc = __pyx_t_1; ++ values[2] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":853 +- * cdef: +- * int fboc = fbo +- * int wc = w # <<<<<<<<<<<<<< +- * int hc = h +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":953 ++ * api_type, ++ * opengl_init_params=None, ++ * advanced_control=False, # <<<<<<<<<<<<<< ++ * x11_display=None, ++ * wl_display=None, + */ +- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_w); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 853, __pyx_L1_error) +- __pyx_v_wc = __pyx_t_1; ++ values[3] = ((PyObject *)Py_False); + +- /* "vidcutter/libs/pympv/mpv.pyx":854 +- * int fboc = fbo +- * int wc = w +- * int hc = h # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) ++ /* "vidcutter/libs/pympv/mpv.pyx":954 ++ * opengl_init_params=None, ++ * advanced_control=False, ++ * x11_display=None, # <<<<<<<<<<<<<< ++ * wl_display=None, ++ * drm_display=None, + */ +- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_h); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 854, __pyx_L1_error) +- __pyx_v_hc = __pyx_t_1; ++ values[4] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":855 +- * int wc = w +- * int hc = h +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) +- * if err < 0: ++ /* "vidcutter/libs/pympv/mpv.pyx":955 ++ * advanced_control=False, ++ * x11_display=None, ++ * wl_display=None, # <<<<<<<<<<<<<< ++ * drm_display=None, ++ * drm_osd_size=None + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ values[5] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":856 +- * int hc = h +- * with nogil: +- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) # <<<<<<<<<<<<<< +- * if err < 0: +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":956 ++ * x11_display=None, ++ * wl_display=None, ++ * drm_display=None, # <<<<<<<<<<<<<< ++ * drm_osd_size=None ++ * ): + */ +- __pyx_v_err = mpv_opengl_cb_draw(__pyx_v_self->_ctx, __pyx_v_fboc, __pyx_v_wc, __pyx_v_hc); +- } ++ values[6] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":855 +- * int wc = w +- * int hc = h +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) +- * if err < 0: ++ /* "vidcutter/libs/pympv/mpv.pyx":957 ++ * wl_display=None, ++ * drm_display=None, ++ * drm_osd_size=None # <<<<<<<<<<<<<< ++ * ): ++ * + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; ++ values[7] = ((PyObject *)Py_None); ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); ++ CYTHON_FALLTHROUGH; ++ case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); ++ CYTHON_FALLTHROUGH; ++ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); ++ CYTHON_FALLTHROUGH; ++ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); ++ CYTHON_FALLTHROUGH; ++ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); ++ CYTHON_FALLTHROUGH; ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mpv)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_api_type)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, 1); __PYX_ERR(0, 950, __pyx_L3_error) ++ } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_opengl_init_params); ++ if (value) { values[2] = value; kw_args--; } ++ } ++ CYTHON_FALLTHROUGH; ++ case 3: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_advanced_control); ++ if (value) { values[3] = value; kw_args--; } ++ } ++ CYTHON_FALLTHROUGH; ++ case 4: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x11_display); ++ if (value) { values[4] = value; kw_args--; } ++ } ++ CYTHON_FALLTHROUGH; ++ case 5: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wl_display); ++ if (value) { values[5] = value; kw_args--; } ++ } ++ CYTHON_FALLTHROUGH; ++ case 6: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_drm_display); ++ if (value) { values[6] = value; kw_args--; } ++ } ++ CYTHON_FALLTHROUGH; ++ case 7: ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_drm_osd_size); ++ if (value) { values[7] = value; kw_args--; } + } +- __pyx_L5:; + } +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":857 +- * with nogil: +- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * +- */ +- __pyx_t_2 = ((__pyx_v_err < 0) != 0); +- if (unlikely(__pyx_t_2)) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":858 +- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) +- * if err < 0: +- * raise MPVError(err) # <<<<<<<<<<<<<< +- * +- * def report_flip(self, time): +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 858, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 858, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_6 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); +- if (likely(__pyx_t_6)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); +- __Pyx_INCREF(__pyx_t_6); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 950, __pyx_L3_error) ++ } ++ } else { ++ switch (PyTuple_GET_SIZE(__pyx_args)) { ++ case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); ++ CYTHON_FALLTHROUGH; ++ case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); ++ CYTHON_FALLTHROUGH; ++ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); ++ CYTHON_FALLTHROUGH; ++ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); ++ CYTHON_FALLTHROUGH; ++ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); ++ CYTHON_FALLTHROUGH; ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ break; ++ default: goto __pyx_L5_argtuple_error; + } + } +- __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 858, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_Raise(__pyx_t_3, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(0, 858, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":857 +- * with nogil: +- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * +- */ ++ __pyx_v_mpv = values[0]; ++ __pyx_v_api_type = values[1]; ++ __pyx_v_opengl_init_params = values[2]; ++ __pyx_v_advanced_control = values[3]; ++ __pyx_v_x11_display = values[4]; ++ __pyx_v_wl_display = values[5]; ++ __pyx_v_drm_display = values[6]; ++ __pyx_v_drm_osd_size = values[7]; + } +- +- /* "vidcutter/libs/pympv/mpv.pyx":850 +- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) +- * +- * def draw(self, fbo, w, h): # <<<<<<<<<<<<<< +- * cdef: +- * int fboc = fbo +- */ +- +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.draw", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 950, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ return -1; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_api_type, __pyx_v_opengl_init_params, __pyx_v_advanced_control, __pyx_v_x11_display, __pyx_v_wl_display, __pyx_v_drm_display, __pyx_v_drm_osd_size); + +-/* "vidcutter/libs/pympv/mpv.pyx":860 +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":950 ++ * bint inited + * +- * def report_flip(self, time): # <<<<<<<<<<<<<< +- * cdef int64_t ctime = time +- * with nogil: ++ * def __init__(self, mpv, # <<<<<<<<<<<<<< ++ * api_type, ++ * opengl_init_params=None, + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_9report_flip(PyObject *__pyx_v_self, PyObject *__pyx_v_time); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_9report_flip(PyObject *__pyx_v_self, PyObject *__pyx_v_time) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("report_flip (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_8report_flip(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), ((PyObject *)__pyx_v_time)); +- + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_8report_flip(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_time) { +- int64_t __pyx_v_ctime; +- int __pyx_v_err; +- PyObject *__pyx_r = NULL; ++static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_mpv, PyObject *__pyx_v_api_type, PyObject *__pyx_v_opengl_init_params, PyObject *__pyx_v_advanced_control, PyObject *__pyx_v_x11_display, PyObject *__pyx_v_wl_display, PyObject *__pyx_v_drm_display, PyObject *__pyx_v_drm_osd_size) { ++ struct mpv_opengl_init_params __pyx_v_gl_params; ++ struct mpv_opengl_drm_params __pyx_v_drm_params; ++ struct mpv_opengl_drm_osd_size __pyx_v__drm_osd_size; ++ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_params = NULL; ++ PyObject *__pyx_v_arp = NULL; ++ int __pyx_v_err; ++ int __pyx_r; + __Pyx_RefNannyDeclarations +- int64_t __pyx_t_1; +- int __pyx_t_2; +- PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; +- PyObject *__pyx_t_6 = NULL; ++ int __pyx_t_6; ++ int __pyx_t_7; ++ char const *__pyx_t_8; ++ PyObject *(*__pyx_t_9)(PyObject *); ++ int __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("report_flip", 0); ++ __Pyx_RefNannySetupContext("__init__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":861 ++ /* "vidcutter/libs/pympv/mpv.pyx":965 ++ * mpv_opengl_drm_osd_size _drm_osd_size + * +- * def report_flip(self, time): +- * cdef int64_t ctime = time # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) ++ * self._mpv = mpv # <<<<<<<<<<<<<< ++ * ++ * memset(&gl_params, 0, sizeof(gl_params)) + */ +- __pyx_t_1 = __Pyx_PyInt_As_int64_t(__pyx_v_time); if (unlikely((__pyx_t_1 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 861, __pyx_L1_error) +- __pyx_v_ctime = __pyx_t_1; ++ if (!(likely(((__pyx_v_mpv) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_mpv, __pyx_ptype_9vidcutter_4libs_3mpv_Context))))) __PYX_ERR(0, 965, __pyx_L1_error) ++ __pyx_t_1 = __pyx_v_mpv; ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v_self->_mpv); ++ __Pyx_DECREF(((PyObject *)__pyx_v_self->_mpv)); ++ __pyx_v_self->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_t_1); ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":862 +- * def report_flip(self, time): +- * cdef int64_t ctime = time +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) +- * if err < 0: ++ /* "vidcutter/libs/pympv/mpv.pyx":967 ++ * 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)) + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ (void)(memset((&__pyx_v_gl_params), 0, (sizeof(__pyx_v_gl_params)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":863 +- * cdef int64_t ctime = time +- * with nogil: +- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) # <<<<<<<<<<<<<< +- * if err < 0: +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":968 ++ * ++ * memset(&gl_params, 0, sizeof(gl_params)) ++ * memset(&drm_params, 0, sizeof(drm_params)) # <<<<<<<<<<<<<< ++ * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) ++ * + */ +- __pyx_v_err = mpv_opengl_cb_report_flip(__pyx_v_self->_ctx, __pyx_v_ctime); +- } ++ (void)(memset((&__pyx_v_drm_params), 0, (sizeof(__pyx_v_drm_params)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":862 +- * def report_flip(self, time): +- * cdef int64_t ctime = time +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) +- * if err < 0: ++ /* "vidcutter/libs/pympv/mpv.pyx":969 ++ * memset(&gl_params, 0, sizeof(gl_params)) ++ * memset(&drm_params, 0, sizeof(drm_params)) ++ * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) # <<<<<<<<<<<<<< ++ * ++ * params = _RenderParams() + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } ++ (void)(memset((&__pyx_v__drm_osd_size), 0, (sizeof(__pyx_v__drm_osd_size)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":864 +- * with nogil: +- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":971 ++ * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) ++ * ++ * params = _RenderParams() # <<<<<<<<<<<<<< + * ++ * if api_type == self.API_OPENGL: + */ +- __pyx_t_2 = ((__pyx_v_err < 0) != 0); +- if (unlikely(__pyx_t_2)) { ++ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":865 +- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) +- * if err < 0: +- * raise MPVError(err) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":973 ++ * params = _RenderParams() ++ * ++ * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< ++ * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) ++ * else: ++ */ ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_api_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 973, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (likely(__pyx_t_3)) { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":974 ++ * ++ * if api_type == self.API_OPENGL: ++ * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) # <<<<<<<<<<<<<< ++ * else: ++ * raise PyMPVError("Unknown api_type %r" % api_type) ++ */ ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_string(__pyx_v_params, MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":973 ++ * params = _RenderParams() ++ * ++ * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< ++ * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) ++ * else: ++ */ ++ goto __pyx_L3; ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":976 ++ * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) ++ * else: ++ * raise PyMPVError("Unknown api_type %r" % api_type) # <<<<<<<<<<<<<< + * +- * def uninit_gl(self): ++ * if opengl_init_params is not None: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 865, __pyx_L1_error) ++ /*else*/ { ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_api_type_r, __pyx_v_api_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 976, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 865, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_6 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); +- if (likely(__pyx_t_6)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); +- __Pyx_INCREF(__pyx_t_6); ++ __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); ++ __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); ++ __Pyx_DECREF_SET(__pyx_t_1, function); + } + } +- __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 865, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_Raise(__pyx_t_3, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(0, 865, __pyx_L1_error) ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_Raise(__pyx_t_2, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __PYX_ERR(0, 976, __pyx_L1_error) ++ } ++ __pyx_L3:; + +- /* "vidcutter/libs/pympv/mpv.pyx":864 +- * with nogil: +- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":978 ++ * raise PyMPVError("Unknown api_type %r" % api_type) + * ++ * if opengl_init_params is not None: # <<<<<<<<<<<<<< ++ * self._get_proc_address = opengl_init_params["get_proc_address"] ++ * gl_params.get_proc_address = &_c_getprocaddress + */ +- } ++ __pyx_t_3 = (__pyx_v_opengl_init_params != Py_None); ++ __pyx_t_6 = (__pyx_t_3 != 0); ++ if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":860 +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":979 + * +- * def report_flip(self, time): # <<<<<<<<<<<<<< +- * cdef int64_t ctime = time +- * with nogil: ++ * if opengl_init_params is not None: ++ * self._get_proc_address = opengl_init_params["get_proc_address"] # <<<<<<<<<<<<<< ++ * gl_params.get_proc_address = &_c_getprocaddress ++ * gl_params.get_proc_address_ctx = self._get_proc_address + */ ++ __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_init_params, __pyx_n_s_get_proc_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_GIVEREF(__pyx_t_2); ++ __Pyx_GOTREF(__pyx_v_self->_get_proc_address); ++ __Pyx_DECREF(__pyx_v_self->_get_proc_address); ++ __pyx_v_self->_get_proc_address = __pyx_t_2; ++ __pyx_t_2 = 0; + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.report_flip", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":980 ++ * if opengl_init_params is not None: ++ * self._get_proc_address = opengl_init_params["get_proc_address"] ++ * gl_params.get_proc_address = &_c_getprocaddress # <<<<<<<<<<<<<< ++ * gl_params.get_proc_address_ctx = self._get_proc_address ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) ++ */ ++ __pyx_v_gl_params.get_proc_address = (&__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress); + +-/* "vidcutter/libs/pympv/mpv.pyx":867 +- * raise MPVError(err) +- * +- * def uninit_gl(self): # <<<<<<<<<<<<<< +- * if not self.inited: +- * return ++ /* "vidcutter/libs/pympv/mpv.pyx":981 ++ * self._get_proc_address = opengl_init_params["get_proc_address"] ++ * gl_params.get_proc_address = &_c_getprocaddress ++ * gl_params.get_proc_address_ctx = self._get_proc_address # <<<<<<<<<<<<<< ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) ++ * if advanced_control: + */ ++ __pyx_v_gl_params.get_proc_address_ctx = ((void *)__pyx_v_self->_get_proc_address); + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_11uninit_gl(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_11uninit_gl(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("uninit_gl (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_10uninit_gl(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self)); ++ /* "vidcutter/libs/pympv/mpv.pyx":982 ++ * gl_params.get_proc_address = &_c_getprocaddress ++ * gl_params.get_proc_address_ctx = self._get_proc_address ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) # <<<<<<<<<<<<<< ++ * if advanced_control: ++ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) ++ */ ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, (&__pyx_v_gl_params), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 982, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":978 ++ * raise PyMPVError("Unknown api_type %r" % api_type) ++ * ++ * if opengl_init_params is not None: # <<<<<<<<<<<<<< ++ * self._get_proc_address = opengl_init_params["get_proc_address"] ++ * gl_params.get_proc_address = &_c_getprocaddress ++ */ ++ } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_10uninit_gl(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self) { +- int __pyx_v_err; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("uninit_gl", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":868 +- * +- * def uninit_gl(self): +- * if not self.inited: # <<<<<<<<<<<<<< +- * return +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":983 ++ * gl_params.get_proc_address_ctx = self._get_proc_address ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) ++ * if advanced_control: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) ++ * if x11_display: + */ +- __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); +- if (__pyx_t_1) { ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_advanced_control); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 983, __pyx_L1_error) ++ if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":869 +- * def uninit_gl(self): +- * if not self.inited: +- * return # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_opengl_cb_uninit_gl(self._ctx) ++ /* "vidcutter/libs/pympv/mpv.pyx":984 ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) ++ * if advanced_control: ++ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) # <<<<<<<<<<<<<< ++ * if x11_display: ++ * self._x11_display = x11_display + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_ADVANCED_CONTROL, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 984, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":868 +- * +- * def uninit_gl(self): +- * if not self.inited: # <<<<<<<<<<<<<< +- * return +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":983 ++ * gl_params.get_proc_address_ctx = self._get_proc_address ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) ++ * if advanced_control: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) ++ * if x11_display: + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":870 +- * if not self.inited: +- * return +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_opengl_cb_uninit_gl(self._ctx) +- * if err < 0: ++ /* "vidcutter/libs/pympv/mpv.pyx":985 ++ * if advanced_control: ++ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) ++ * if x11_display: # <<<<<<<<<<<<<< ++ * self._x11_display = x11_display ++ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_x11_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 985, __pyx_L1_error) ++ if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":871 +- * return +- * with nogil: +- * err = mpv_opengl_cb_uninit_gl(self._ctx) # <<<<<<<<<<<<<< +- * if err < 0: +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":986 ++ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) ++ * if x11_display: ++ * self._x11_display = x11_display # <<<<<<<<<<<<<< ++ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) ++ * if wl_display: + */ +- __pyx_v_err = mpv_opengl_cb_uninit_gl(__pyx_v_self->_ctx); +- } ++ __Pyx_INCREF(__pyx_v_x11_display); ++ __Pyx_GIVEREF(__pyx_v_x11_display); ++ __Pyx_GOTREF(__pyx_v_self->_x11_display); ++ __Pyx_DECREF(__pyx_v_self->_x11_display); ++ __pyx_v_self->_x11_display = __pyx_v_x11_display; + +- /* "vidcutter/libs/pympv/mpv.pyx":870 +- * if not self.inited: +- * return +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_opengl_cb_uninit_gl(self._ctx) +- * if err < 0: ++ /* "vidcutter/libs/pympv/mpv.pyx":987 ++ * if x11_display: ++ * self._x11_display = x11_display ++ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) # <<<<<<<<<<<<<< ++ * if wl_display: ++ * self._wl_display = wl_display ++ */ ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_X11_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"Display"), __pyx_v_x11_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 987, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":985 ++ * if advanced_control: ++ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) ++ * if x11_display: # <<<<<<<<<<<<<< ++ * self._x11_display = x11_display ++ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L6; +- } +- __pyx_L6:; +- } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":872 +- * with nogil: +- * err = mpv_opengl_cb_uninit_gl(self._ctx) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * self.inited = False ++ /* "vidcutter/libs/pympv/mpv.pyx":988 ++ * self._x11_display = x11_display ++ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) ++ * if wl_display: # <<<<<<<<<<<<<< ++ * self._wl_display = wl_display ++ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) + */ +- __pyx_t_1 = ((__pyx_v_err < 0) != 0); +- if (unlikely(__pyx_t_1)) { ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_wl_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 988, __pyx_L1_error) ++ if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":873 +- * err = mpv_opengl_cb_uninit_gl(self._ctx) +- * if err < 0: +- * raise MPVError(err) # <<<<<<<<<<<<<< +- * self.inited = False +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":989 ++ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) ++ * if wl_display: ++ * self._wl_display = wl_display # <<<<<<<<<<<<<< ++ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) ++ * if drm_display: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 873, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 873, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } +- } +- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 873, __pyx_L1_error) ++ __Pyx_INCREF(__pyx_v_wl_display); ++ __Pyx_GIVEREF(__pyx_v_wl_display); ++ __Pyx_GOTREF(__pyx_v_self->_wl_display); ++ __Pyx_DECREF(__pyx_v_self->_wl_display); ++ __pyx_v_self->_wl_display = __pyx_v_wl_display; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":990 ++ * if wl_display: ++ * self._wl_display = wl_display ++ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) # <<<<<<<<<<<<<< ++ * if drm_display: ++ * drm_params.fd = drm_display.get("fd", -1) ++ */ ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_WL_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"wl_display"), __pyx_v_wl_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __PYX_ERR(0, 873, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":872 +- * with nogil: +- * err = mpv_opengl_cb_uninit_gl(self._ctx) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * self.inited = False ++ /* "vidcutter/libs/pympv/mpv.pyx":988 ++ * self._x11_display = x11_display ++ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) ++ * if wl_display: # <<<<<<<<<<<<<< ++ * self._wl_display = wl_display ++ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":874 +- * if err < 0: +- * raise MPVError(err) +- * self.inited = False # <<<<<<<<<<<<<< +- * +- * def __dealloc__(self): ++ /* "vidcutter/libs/pympv/mpv.pyx":991 ++ * self._wl_display = wl_display ++ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) ++ * if drm_display: # <<<<<<<<<<<<<< ++ * drm_params.fd = drm_display.get("fd", -1) ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) + */ +- __pyx_v_self->inited = 0; ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_drm_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 991, __pyx_L1_error) ++ if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":867 +- * raise MPVError(err) +- * +- * def uninit_gl(self): # <<<<<<<<<<<<<< +- * if not self.inited: +- * return ++ /* "vidcutter/libs/pympv/mpv.pyx":992 ++ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) ++ * if drm_display: ++ * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) ++ * drm_params.connector_id = drm_display.get("connector_id", -1) + */ ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 992, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_drm_params.fd = __pyx_t_7; + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.uninit_gl", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":876 +- * self.inited = False +- * +- * def __dealloc__(self): # <<<<<<<<<<<<<< +- * self.uninit_gl() +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":993 ++ * if drm_display: ++ * drm_params.fd = drm_display.get("fd", -1) ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< ++ * drm_params.connector_id = drm_display.get("connector_id", -1) ++ * arp = drm_display.get("atomic_request_ptr", None) + */ ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 993, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v_drm_params.crtc_id = __pyx_t_7; + +-/* Python wrapper */ +-static void __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_13__dealloc__(PyObject *__pyx_v_self); /*proto*/ +-static void __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_13__dealloc__(PyObject *__pyx_v_self) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); +- __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_12__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +-} +- +-static void __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_12__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self) { +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__dealloc__", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":877 +- * +- * def __dealloc__(self): +- * self.uninit_gl() # <<<<<<<<<<<<<< +- * +- * DEF MAX_RENDER_PARAMS = 32 ++ /* "vidcutter/libs/pympv/mpv.pyx":994 ++ * drm_params.fd = drm_display.get("fd", -1) ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) ++ * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< ++ * arp = drm_display.get("atomic_request_ptr", None) ++ * if arp is not None: + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_uninit_gl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 877, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 877, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 994, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_drm_params.connector_id = __pyx_t_7; + +- /* "vidcutter/libs/pympv/mpv.pyx":876 +- * self.inited = False +- * +- * def __dealloc__(self): # <<<<<<<<<<<<<< +- * self.uninit_gl() +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":995 ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) ++ * drm_params.connector_id = drm_display.get("connector_id", -1) ++ * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< ++ * if arp is not None: ++ * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") + */ ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_arp = __pyx_t_2; ++ __pyx_t_2 = 0; + +- /* function exit code */ +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv.OpenGLContext.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); +- __pyx_L0:; +- __Pyx_RefNannyFinishContext(); +-} +- +-/* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): ++ /* "vidcutter/libs/pympv/mpv.pyx":996 ++ * drm_params.connector_id = drm_display.get("connector_id", -1) ++ * arp = drm_display.get("atomic_request_ptr", None) ++ * if arp is not None: # <<<<<<<<<<<<<< ++ * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") ++ * drm_params.render_fd = drm_display.get("render_fd", -1) + */ ++ __pyx_t_6 = (__pyx_v_arp != Py_None); ++ __pyx_t_3 = (__pyx_t_6 != 0); ++ if (__pyx_t_3) { + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_15__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_15__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_14__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__reduce_cython__", 0); +- +- /* "(tree fragment)":2 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ /* "vidcutter/libs/pympv/mpv.pyx":997 ++ * arp = drm_display.get("atomic_request_ptr", None) ++ * if arp is not None: ++ * 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) + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(1, 2, __pyx_L1_error) ++ __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_arp); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 997, __pyx_L1_error) ++ __pyx_v_drm_params.atomic_request_ptr = ((struct _drmModeAtomicReq **)__pyx_f_9vidcutter_4libs_3mpv_get_pointer(__pyx_t_8, __pyx_kp_s_drmModeAtomicReq)); + +- /* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): ++ /* "vidcutter/libs/pympv/mpv.pyx":996 ++ * drm_params.connector_id = drm_display.get("connector_id", -1) ++ * arp = drm_display.get("atomic_request_ptr", None) ++ * if arp is not None: # <<<<<<<<<<<<<< ++ * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") ++ * drm_params.render_fd = drm_display.get("render_fd", -1) + */ ++ } + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "(tree fragment)":3 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ /* "vidcutter/libs/pympv/mpv.pyx":998 ++ * if arp is not None: ++ * 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: + */ ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 998, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 998, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v_drm_params.render_fd = __pyx_t_7; + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_17__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_17__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_16__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__setstate_cython__", 0); +- +- /* "(tree fragment)":4 +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":999 ++ * 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 + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(1, 4, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_DISPLAY, (&__pyx_v_drm_params), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "(tree fragment)":3 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ /* "vidcutter/libs/pympv/mpv.pyx":991 ++ * self._wl_display = wl_display ++ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) ++ * if drm_display: # <<<<<<<<<<<<<< ++ * drm_params.fd = drm_display.get("fd", -1) ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) + */ ++ } + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":886 +- * object owned +- * +- * def __init__(self): # <<<<<<<<<<<<<< +- * self.owned = [] +- * self.params[0].type = MPV_RENDER_PARAM_INVALID ++ /* "vidcutter/libs/pympv/mpv.pyx":1000 ++ * 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) + */ ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_drm_osd_size); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1000, __pyx_L1_error) ++ if (__pyx_t_3) { + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); +- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} +- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__init__", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":887 +- * +- * def __init__(self): +- * self.owned = [] # <<<<<<<<<<<<<< +- * self.params[0].type = MPV_RENDER_PARAM_INVALID ++ /* "vidcutter/libs/pympv/mpv.pyx":1001 ++ * 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) + * + */ +- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->owned); +- __Pyx_DECREF(__pyx_v_self->owned); +- __pyx_v_self->owned = __pyx_t_1; +- __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":888 +- * def __init__(self): +- * self.owned = [] +- * self.params[0].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< +- * +- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): +- */ +- (__pyx_v_self->params[0]).type = MPV_RENDER_PARAM_INVALID; ++ if ((likely(PyTuple_CheckExact(__pyx_v_drm_osd_size))) || (PyList_CheckExact(__pyx_v_drm_osd_size))) { ++ PyObject* sequence = __pyx_v_drm_osd_size; ++ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); ++ if (unlikely(size != 2)) { ++ if (size > 2) __Pyx_RaiseTooManyValuesError(2); ++ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); ++ __PYX_ERR(0, 1001, __pyx_L1_error) ++ } ++ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ if (likely(PyTuple_CheckExact(sequence))) { ++ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); ++ __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); ++ } else { ++ __pyx_t_1 = PyList_GET_ITEM(sequence, 0); ++ __pyx_t_2 = PyList_GET_ITEM(sequence, 1); ++ } ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(__pyx_t_2); ++ #else ++ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ #endif ++ } else { ++ Py_ssize_t index = -1; ++ __pyx_t_4 = PyObject_GetIter(__pyx_v_drm_osd_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; ++ index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed; ++ __Pyx_GOTREF(__pyx_t_1); ++ index = 1; __pyx_t_2 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; ++ __Pyx_GOTREF(__pyx_t_2); ++ if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __pyx_t_9 = NULL; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ goto __pyx_L12_unpacking_done; ++ __pyx_L11_unpacking_failed:; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_9 = NULL; ++ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); ++ __PYX_ERR(0, 1001, __pyx_L1_error) ++ __pyx_L12_unpacking_done:; ++ } ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v__drm_osd_size.width = __pyx_t_7; ++ __pyx_v__drm_osd_size.height = __pyx_t_10; + +- /* "vidcutter/libs/pympv/mpv.pyx":886 +- * object owned ++ /* "vidcutter/libs/pympv/mpv.pyx":1002 ++ * 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) # <<<<<<<<<<<<<< + * +- * def __init__(self): # <<<<<<<<<<<<<< +- * self.owned = [] +- * self.params[0].type = MPV_RENDER_PARAM_INVALID ++ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) + */ ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_OSD_SIZE, (&__pyx_v__drm_osd_size), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1002, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* function exit code */ +- __pyx_r = 0; +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = -1; +- __pyx_L0:; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":890 +- * self.params[0].type = MPV_RENDER_PARAM_INVALID +- * +- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< +- * count = len(self.owned) +- * if count >= MAX_RENDER_PARAMS: ++ /* "vidcutter/libs/pympv/mpv.pyx":1000 ++ * 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) + */ +- +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, void *__pyx_v_p, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args) { +- int __pyx_v_owned = ((int)0); +- PyObject *__pyx_v_count = NULL; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- Py_ssize_t __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("add_voidp", 0); +- if (__pyx_optional_args) { +- if (__pyx_optional_args->__pyx_n > 0) { +- __pyx_v_owned = __pyx_optional_args->owned; +- } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":891 ++ /* "vidcutter/libs/pympv/mpv.pyx":1004 ++ * params.add_voidp(MPV_RENDER_PARAM_DRM_OSD_SIZE, &_drm_osd_size) + * +- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): +- * count = len(self.owned) # <<<<<<<<<<<<<< +- * if count >= MAX_RENDER_PARAMS: +- * if owned: +- */ +- __pyx_t_1 = __pyx_v_self->owned; +- __Pyx_INCREF(__pyx_t_1); +- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 891, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_count = __pyx_t_1; +- __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":892 +- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): +- * count = len(self.owned) +- * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< +- * if owned: +- * free(p) +- */ +- __pyx_t_1 = PyObject_RichCompare(__pyx_v_count, __pyx_int_32, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 892, __pyx_L1_error) +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 892, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- if (__pyx_t_3) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":893 +- * count = len(self.owned) +- * if count >= MAX_RENDER_PARAMS: +- * if owned: # <<<<<<<<<<<<<< +- * free(p) +- * raise PyMPVError("RenderParams overflow") ++ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) # <<<<<<<<<<<<<< ++ * if err < 0: ++ * raise MPVError(err) + */ +- __pyx_t_3 = (__pyx_v_owned != 0); +- if (__pyx_t_3) { ++ __pyx_v_err = mpv_render_context_create((&__pyx_v_self->_ctx), __pyx_v_self->_mpv->_ctx, __pyx_v_params->params); + +- /* "vidcutter/libs/pympv/mpv.pyx":894 +- * if count >= MAX_RENDER_PARAMS: +- * if owned: +- * free(p) # <<<<<<<<<<<<<< +- * raise PyMPVError("RenderParams overflow") ++ /* "vidcutter/libs/pympv/mpv.pyx":1005 + * ++ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) ++ * if err < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(err) ++ * self.inited = True + */ +- free(__pyx_v_p); +- +- /* "vidcutter/libs/pympv/mpv.pyx":893 +- * count = len(self.owned) +- * if count >= MAX_RENDER_PARAMS: +- * if owned: # <<<<<<<<<<<<<< +- * free(p) +- * raise PyMPVError("RenderParams overflow") +- */ +- } ++ __pyx_t_3 = ((__pyx_v_err < 0) != 0); ++ if (unlikely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":895 +- * if owned: +- * free(p) +- * raise PyMPVError("RenderParams overflow") # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1006 ++ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) ++ * if err < 0: ++ * raise MPVError(err) # <<<<<<<<<<<<<< ++ * self.inited = True + * +- * self.params[count].type = t + */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1006, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1006, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); ++ __Pyx_DECREF_SET(__pyx_t_1, function); + } + } +- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_RenderParams_overflow) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_RenderParams_overflow); ++ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1006, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 895, __pyx_L1_error) ++ __Pyx_Raise(__pyx_t_2, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __PYX_ERR(0, 1006, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":892 +- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): +- * count = len(self.owned) +- * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< +- * if owned: +- * free(p) ++ /* "vidcutter/libs/pympv/mpv.pyx":1005 ++ * ++ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) ++ * if err < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(err) ++ * self.inited = True + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":897 +- * raise PyMPVError("RenderParams overflow") ++ /* "vidcutter/libs/pympv/mpv.pyx":1007 ++ * if err < 0: ++ * raise MPVError(err) ++ * self.inited = True # <<<<<<<<<<<<<< + * +- * self.params[count].type = t # <<<<<<<<<<<<<< +- * self.params[count].data = p +- * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID ++ * @_errors + */ +- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 897, __pyx_L1_error) +- (__pyx_v_self->params[__pyx_t_2]).type = __pyx_v_t; ++ __pyx_v_self->inited = 1; + +- /* "vidcutter/libs/pympv/mpv.pyx":898 ++ /* "vidcutter/libs/pympv/mpv.pyx":950 ++ * bint inited + * +- * self.params[count].type = t +- * self.params[count].data = p # <<<<<<<<<<<<<< +- * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID +- * self.owned.append(owned) +- */ +- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 898, __pyx_L1_error) +- (__pyx_v_self->params[__pyx_t_2]).data = __pyx_v_p; +- +- /* "vidcutter/libs/pympv/mpv.pyx":899 +- * self.params[count].type = t +- * self.params[count].data = p +- * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< +- * self.owned.append(owned) +- * +- */ +- __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_count, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 899, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- (__pyx_v_self->params[__pyx_t_2]).type = MPV_RENDER_PARAM_INVALID; +- +- /* "vidcutter/libs/pympv/mpv.pyx":900 +- * self.params[count].data = p +- * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID +- * self.owned.append(owned) # <<<<<<<<<<<<<< +- * +- * cdef add_int(self, mpv_render_param_type t, int val): +- */ +- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_owned); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 900, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->owned, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 900, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":890 +- * self.params[0].type = MPV_RENDER_PARAM_INVALID +- * +- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< +- * count = len(self.owned) +- * if count >= MAX_RENDER_PARAMS: ++ * def __init__(self, mpv, # <<<<<<<<<<<<<< ++ * api_type, ++ * opengl_init_params=None, + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_voidp", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = -1; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_count); +- __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_XDECREF((PyObject *)__pyx_v_params); ++ __Pyx_XDECREF(__pyx_v_arp); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":902 +- * self.owned.append(owned) ++/* "vidcutter/libs/pympv/mpv.pyx":1010 + * +- * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< +- * cdef int *p = malloc(sizeof(int)) +- * p[0] = val ++ * @_errors ++ * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< ++ * cdef: ++ * mpv_render_param param + */ + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, int __pyx_v_val) { +- int *__pyx_v_p; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile(PyObject *__pyx_v_self, PyObject *__pyx_v_icc_blob); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile(PyObject *__pyx_v_self, PyObject *__pyx_v_icc_blob) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("set_icc_profile (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_icc_blob)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_icc_blob) { ++ struct mpv_render_param __pyx_v_param; ++ struct mpv_byte_array __pyx_v_val; ++ int __pyx_v_err; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_1; ++ int __pyx_t_2; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ char *__pyx_t_6; ++ Py_ssize_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("add_int", 0); ++ __Pyx_RefNannySetupContext("set_icc_profile", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":903 ++ /* "vidcutter/libs/pympv/mpv.pyx":1016 ++ * int err + * +- * cdef add_int(self, mpv_render_param_type t, int val): +- * cdef int *p = malloc(sizeof(int)) # <<<<<<<<<<<<<< +- * p[0] = val +- * self.add_voidp(t, p) ++ * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< ++ * raise PyMPVError("icc_blob should be a bytes instance") ++ * val.data = icc_blob + */ +- __pyx_v_p = ((int *)malloc((sizeof(int)))); ++ __pyx_t_1 = PyBytes_Check(__pyx_v_icc_blob); ++ __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); ++ if (unlikely(__pyx_t_2)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":904 +- * cdef add_int(self, mpv_render_param_type t, int val): +- * cdef int *p = malloc(sizeof(int)) +- * p[0] = val # <<<<<<<<<<<<<< +- * self.add_voidp(t, p) ++ /* "vidcutter/libs/pympv/mpv.pyx":1017 + * ++ * if not isinstance(icc_blob, bytes): ++ * raise PyMPVError("icc_blob should be a bytes instance") # <<<<<<<<<<<<<< ++ * val.data = icc_blob ++ * val.size = len(icc_blob) + */ +- (__pyx_v_p[0]) = __pyx_v_val; ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1017, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_4, function); ++ } ++ } ++ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_icc_blob_should_be_a_bytes_insta) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_icc_blob_should_be_a_bytes_insta); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1017, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_Raise(__pyx_t_3, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __PYX_ERR(0, 1017, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":905 +- * cdef int *p = malloc(sizeof(int)) +- * p[0] = val +- * self.add_voidp(t, p) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1016 ++ * int err + * +- * cdef add_string(self, mpv_render_param_type t, char *s): ++ * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< ++ * raise PyMPVError("icc_blob should be a bytes instance") ++ * val.data = icc_blob + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":902 +- * self.owned.append(owned) ++ /* "vidcutter/libs/pympv/mpv.pyx":1018 ++ * if not isinstance(icc_blob, bytes): ++ * raise PyMPVError("icc_blob should be a bytes instance") ++ * val.data = icc_blob # <<<<<<<<<<<<<< ++ * val.size = len(icc_blob) + * +- * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< +- * cdef int *p = malloc(sizeof(int)) +- * p[0] = val + */ ++ __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_icc_blob); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1018, __pyx_L1_error) ++ __pyx_v_val.data = ((void *)((char *)__pyx_t_6)); + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_int", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":907 +- * self.add_voidp(t, p) ++ /* "vidcutter/libs/pympv/mpv.pyx":1019 ++ * raise PyMPVError("icc_blob should be a bytes instance") ++ * val.data = icc_blob ++ * val.size = len(icc_blob) # <<<<<<<<<<<<<< + * +- * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< +- * cdef char *p = malloc(strlen(s) + 1) +- * strcpy(p, s) ++ * param.type = MPV_RENDER_PARAM_ICC_PROFILE + */ ++ __pyx_t_7 = PyObject_Length(__pyx_v_icc_blob); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1019, __pyx_L1_error) ++ __pyx_v_val.size = __pyx_t_7; + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, char *__pyx_v_s) { +- char *__pyx_v_p; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("add_string", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":908 ++ /* "vidcutter/libs/pympv/mpv.pyx":1021 ++ * val.size = len(icc_blob) ++ * ++ * param.type = MPV_RENDER_PARAM_ICC_PROFILE # <<<<<<<<<<<<<< ++ * param.data = &val + * +- * cdef add_string(self, mpv_render_param_type t, char *s): +- * cdef char *p = malloc(strlen(s) + 1) # <<<<<<<<<<<<<< +- * strcpy(p, s) +- * self.add_voidp(t, p) + */ +- __pyx_v_p = ((char *)malloc((strlen(__pyx_v_s) + 1))); ++ __pyx_v_param.type = MPV_RENDER_PARAM_ICC_PROFILE; + +- /* "vidcutter/libs/pympv/mpv.pyx":909 +- * cdef add_string(self, mpv_render_param_type t, char *s): +- * cdef char *p = malloc(strlen(s) + 1) +- * strcpy(p, s) # <<<<<<<<<<<<<< +- * self.add_voidp(t, p) ++ /* "vidcutter/libs/pympv/mpv.pyx":1022 ++ * ++ * param.type = MPV_RENDER_PARAM_ICC_PROFILE ++ * param.data = &val # <<<<<<<<<<<<<< + * ++ * with nogil: + */ +- (void)(strcpy(__pyx_v_p, __pyx_v_s)); ++ __pyx_v_param.data = (&__pyx_v_val); + +- /* "vidcutter/libs/pympv/mpv.pyx":910 +- * cdef char *p = malloc(strlen(s) + 1) +- * strcpy(p, s) +- * self.add_voidp(t, p) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1024 ++ * param.data = &val + * +- * def __dealloc__(self): ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_render_context_set_parameter(self._ctx, param) ++ * return err + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":907 +- * self.add_voidp(t, p) ++ /* "vidcutter/libs/pympv/mpv.pyx":1025 ++ * ++ * with nogil: ++ * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< ++ * return err + * +- * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< +- * cdef char *p = malloc(strlen(s) + 1) +- * strcpy(p, s) + */ ++ __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); ++ } + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_string", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":912 +- * self.add_voidp(t, p) +- * +- * def __dealloc__(self): # <<<<<<<<<<<<<< +- * for i, j in enumerate(self.owned): +- * if j: +- */ +- +-/* Python wrapper */ +-static void __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ +-static void __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(PyObject *__pyx_v_self) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); +- __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +-} +- +-static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { +- PyObject *__pyx_v_i = NULL; +- PyObject *__pyx_v_j = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- Py_ssize_t __pyx_t_3; +- PyObject *(*__pyx_t_4)(PyObject *); +- PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- Py_ssize_t __pyx_t_7; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__dealloc__", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":913 ++ /* "vidcutter/libs/pympv/mpv.pyx":1024 ++ * param.data = &val + * +- * def __dealloc__(self): +- * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< +- * if j: +- * free(self.params[i].data) ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_render_context_set_parameter(self._ctx, param) ++ * return err + */ +- __Pyx_INCREF(__pyx_int_0); +- __pyx_t_1 = __pyx_int_0; +- if (likely(PyList_CheckExact(__pyx_v_self->owned)) || PyTuple_CheckExact(__pyx_v_self->owned)) { +- __pyx_t_2 = __pyx_v_self->owned; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; +- __pyx_t_4 = NULL; +- } else { +- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->owned); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L1_error) +- } +- for (;;) { +- if (likely(!__pyx_t_4)) { +- if (likely(PyList_CheckExact(__pyx_t_2))) { +- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; +- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) +- #else +- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- #endif +- } else { +- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; +- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) +- #else +- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- #endif +- } +- } else { +- __pyx_t_5 = __pyx_t_4(__pyx_t_2); +- if (unlikely(!__pyx_t_5)) { +- PyObject* exc_type = PyErr_Occurred(); +- if (exc_type) { +- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); +- else __PYX_ERR(0, 913, __pyx_L1_error) ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L6; + } +- break; ++ __pyx_L6:; + } +- __Pyx_GOTREF(__pyx_t_5); +- } +- __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_5); +- __pyx_t_5 = 0; +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); +- __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_DECREF(__pyx_t_1); +- __pyx_t_1 = __pyx_t_5; +- __pyx_t_5 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":914 +- * def __dealloc__(self): +- * for i, j in enumerate(self.owned): +- * if j: # <<<<<<<<<<<<<< +- * free(self.params[i].data) +- * +- */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_j); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 914, __pyx_L1_error) +- if (__pyx_t_6) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":915 +- * for i, j in enumerate(self.owned): +- * if j: +- * free(self.params[i].data) # <<<<<<<<<<<<<< +- * +- * cdef void *get_pointer(const char *name, object obj): +- */ +- __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error) +- free((__pyx_v_self->params[__pyx_t_7]).data); +- +- /* "vidcutter/libs/pympv/mpv.pyx":914 +- * def __dealloc__(self): +- * for i, j in enumerate(self.owned): +- * if j: # <<<<<<<<<<<<<< +- * free(self.params[i].data) +- * +- */ +- } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":913 ++ /* "vidcutter/libs/pympv/mpv.pyx":1026 ++ * with nogil: ++ * err = mpv_render_context_set_parameter(self._ctx, param) ++ * return err # <<<<<<<<<<<<<< + * +- * def __dealloc__(self): +- * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< +- * if j: +- * free(self.params[i].data) ++ * @_errors + */ +- } +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1026, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":912 +- * self.add_voidp(t, p) ++ /* "vidcutter/libs/pympv/mpv.pyx":1010 + * +- * def __dealloc__(self): # <<<<<<<<<<<<<< +- * for i, j in enumerate(self.owned): +- * if j: ++ * @_errors ++ * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< ++ * cdef: ++ * mpv_render_param param + */ + + /* function exit code */ +- goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv._RenderParams.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.set_icc_profile", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_i); +- __Pyx_XDECREF(__pyx_v_j); ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); ++ return __pyx_r; + } + +-/* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("self.params cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): ++/* "vidcutter/libs/pympv/mpv.pyx":1029 ++ * ++ * @_errors ++ * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< ++ * cdef: ++ * mpv_render_param param + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light(PyObject *__pyx_v_self, PyObject *__pyx_v_lux); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light(PyObject *__pyx_v_self, PyObject *__pyx_v_lux) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("set_ambient_light (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_light(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_lux)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_light(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_lux) { ++ struct mpv_render_param __pyx_v_param; ++ int __pyx_v_val; ++ int __pyx_v_err; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_1; ++ PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__reduce_cython__", 0); ++ __Pyx_RefNannySetupContext("set_ambient_light", 0); + +- /* "(tree fragment)":2 +- * def __reduce_cython__(self): +- * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self.params cannot be converted to a Python object for pickling") ++ /* "vidcutter/libs/pympv/mpv.pyx":1035 ++ * int err ++ * ++ * val = lux # <<<<<<<<<<<<<< ++ * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT ++ * param.data = &val + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(1, 2, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_lux); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1035, __pyx_L1_error) ++ __pyx_v_val = __pyx_t_1; + +- /* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("self.params cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): ++ /* "vidcutter/libs/pympv/mpv.pyx":1036 ++ * ++ * val = lux ++ * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT # <<<<<<<<<<<<<< ++ * param.data = &val ++ * + */ ++ __pyx_v_param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT; + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "(tree fragment)":3 +- * def __reduce_cython__(self): +- * raise TypeError("self.params cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("self.params cannot be converted to a Python object for pickling") ++ /* "vidcutter/libs/pympv/mpv.pyx":1037 ++ * val = lux ++ * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT ++ * param.data = &val # <<<<<<<<<<<<<< ++ * ++ * with nogil: + */ ++ __pyx_v_param.data = (&__pyx_v_val); + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); ++ /* "vidcutter/libs/pympv/mpv.pyx":1039 ++ * param.data = &val ++ * ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_render_context_set_parameter(self._ctx, param) ++ * return err ++ */ ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":1040 ++ * ++ * with nogil: ++ * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< ++ * return err ++ * ++ */ ++ __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); ++ } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__setstate_cython__", 0); ++ /* "vidcutter/libs/pympv/mpv.pyx":1039 ++ * param.data = &val ++ * ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_render_context_set_parameter(self._ctx, param) ++ * return err ++ */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } + +- /* "(tree fragment)":4 +- * raise TypeError("self.params cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1041 ++ * with nogil: ++ * err = mpv_render_context_set_parameter(self._ctx, param) ++ * return err # <<<<<<<<<<<<<< ++ * ++ * def get_next_frame_info(self): + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(1, 4, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_r = __pyx_t_2; ++ __pyx_t_2 = 0; ++ goto __pyx_L0; + +- /* "(tree fragment)":3 +- * def __reduce_cython__(self): +- * raise TypeError("self.params cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("self.params cannot be converted to a Python object for pickling") ++ /* "vidcutter/libs/pympv/mpv.pyx":1029 ++ * ++ * @_errors ++ * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< ++ * cdef: ++ * mpv_render_param param + */ + + /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.set_ambient_light", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; ++ __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":917 +- * free(self.params[i].data) ++/* "vidcutter/libs/pympv/mpv.pyx":1043 ++ * return err + * +- * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< +- * cdef void *p +- * if PyCapsule_IsValid(obj, name): ++ * def get_next_frame_info(self): # <<<<<<<<<<<<<< ++ * cdef: ++ * mpv_render_frame_info info + */ + +-static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, PyObject *__pyx_v_obj) { +- void *__pyx_v_p; +- void *__pyx_r; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("get_next_frame_info (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_info(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); ++ ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_info(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { ++ struct mpv_render_frame_info __pyx_v_info; ++ struct mpv_render_param __pyx_v_param; ++ int __pyx_v_err; ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; +- void *__pyx_t_2; +- int __pyx_t_3; +- int __pyx_t_4; +- intptr_t __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- PyObject *__pyx_t_8 = NULL; +- PyObject *__pyx_t_9 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("get_pointer", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":919 +- * cdef void *get_pointer(const char *name, object obj): +- * cdef void *p +- * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< +- * p = PyCapsule_GetPointer(obj, name) +- * elif isinstance(obj, int) or isinstance(obj, long) and obj: +- */ +- __pyx_t_1 = (PyCapsule_IsValid(__pyx_v_obj, __pyx_v_name) != 0); +- if (__pyx_t_1) { ++ __Pyx_RefNannySetupContext("get_next_frame_info", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":920 +- * cdef void *p +- * if PyCapsule_IsValid(obj, name): +- * p = PyCapsule_GetPointer(obj, name) # <<<<<<<<<<<<<< +- * elif isinstance(obj, int) or isinstance(obj, long) and obj: +- * p = obj ++ /* "vidcutter/libs/pympv/mpv.pyx":1048 ++ * mpv_render_param param ++ * ++ * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO # <<<<<<<<<<<<<< ++ * param.data = &info ++ * with nogil: + */ +- __pyx_t_2 = PyCapsule_GetPointer(__pyx_v_obj, __pyx_v_name); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 920, __pyx_L1_error) +- __pyx_v_p = __pyx_t_2; ++ __pyx_v_param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO; + +- /* "vidcutter/libs/pympv/mpv.pyx":919 +- * cdef void *get_pointer(const char *name, object obj): +- * cdef void *p +- * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< +- * p = PyCapsule_GetPointer(obj, name) +- * elif isinstance(obj, int) or isinstance(obj, long) and obj: ++ /* "vidcutter/libs/pympv/mpv.pyx":1049 ++ * ++ * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO ++ * param.data = &info # <<<<<<<<<<<<<< ++ * with nogil: ++ * err = mpv_render_context_get_info(self._ctx, param) + */ +- goto __pyx_L3; +- } ++ __pyx_v_param.data = (&__pyx_v_info); + +- /* "vidcutter/libs/pympv/mpv.pyx":921 +- * if PyCapsule_IsValid(obj, name): +- * p = PyCapsule_GetPointer(obj, name) +- * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< +- * p = obj +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":1050 ++ * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO ++ * param.data = &info ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_render_context_get_info(self._ctx, param) ++ * if err < 0: + */ +- __pyx_t_3 = PyInt_Check(__pyx_v_obj); +- __pyx_t_4 = (__pyx_t_3 != 0); +- if (!__pyx_t_4) { +- } else { +- __pyx_t_1 = __pyx_t_4; +- goto __pyx_L4_bool_binop_done; +- } +- __pyx_t_4 = PyLong_Check(__pyx_v_obj); +- __pyx_t_3 = (__pyx_t_4 != 0); +- if (__pyx_t_3) { +- } else { +- __pyx_t_1 = __pyx_t_3; +- goto __pyx_L4_bool_binop_done; +- } +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 921, __pyx_L1_error) +- __pyx_t_1 = __pyx_t_3; +- __pyx_L4_bool_binop_done:; +- if (likely(__pyx_t_1)) { ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":922 +- * p = PyCapsule_GetPointer(obj, name) +- * elif isinstance(obj, int) or isinstance(obj, long) and obj: +- * p = obj # <<<<<<<<<<<<<< +- * else: +- * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) ++ /* "vidcutter/libs/pympv/mpv.pyx":1051 ++ * param.data = &info ++ * with nogil: ++ * err = mpv_render_context_get_info(self._ctx, param) # <<<<<<<<<<<<<< ++ * if err < 0: ++ * raise MPVError(err) + */ +- __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_v_obj); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) +- __pyx_v_p = ((void *)((intptr_t)__pyx_t_5)); ++ __pyx_v_err = mpv_render_context_get_info(__pyx_v_self->_ctx, __pyx_v_param); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":921 +- * if PyCapsule_IsValid(obj, name): +- * p = PyCapsule_GetPointer(obj, name) +- * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< +- * p = obj +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":1050 ++ * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO ++ * param.data = &info ++ * with nogil: # <<<<<<<<<<<<<< ++ * err = mpv_render_context_get_info(self._ctx, param) ++ * if err < 0: + */ +- goto __pyx_L3; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":924 +- * p = obj +- * else: +- * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) # <<<<<<<<<<<<<< +- * return p ++ /* "vidcutter/libs/pympv/mpv.pyx":1052 ++ * with nogil: ++ * err = mpv_render_context_get_info(self._ctx, param) ++ * if err < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(err) + * + */ +- /*else*/ { +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_v_obj); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 924, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_8); +- __pyx_t_9 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { +- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); +- if (likely(__pyx_t_9)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); +- __Pyx_INCREF(__pyx_t_9); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_7, function); +- } +- } +- __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); +- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; +- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 924, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_Raise(__pyx_t_6, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __PYX_ERR(0, 924, __pyx_L1_error) +- } +- __pyx_L3:; ++ __pyx_t_1 = ((__pyx_v_err < 0) != 0); ++ if (unlikely(__pyx_t_1)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":925 +- * else: +- * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) +- * return p # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1053 ++ * err = mpv_render_context_get_info(self._ctx, param) ++ * if err < 0: ++ * raise MPVError(err) # <<<<<<<<<<<<<< + * +- * @cython.internal ++ * return RenderFrameInfo()._from_struct(&info) + */ +- __pyx_r = __pyx_v_p; +- goto __pyx_L0; ++ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1053, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); ++ } ++ } ++ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_Raise(__pyx_t_2, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __PYX_ERR(0, 1053, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":917 +- * free(self.params[i].data) ++ /* "vidcutter/libs/pympv/mpv.pyx":1052 ++ * with nogil: ++ * err = mpv_render_context_get_info(self._ctx, param) ++ * if err < 0: # <<<<<<<<<<<<<< ++ * raise MPVError(err) + * +- * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< +- * cdef void *p +- * if PyCapsule_IsValid(obj, name): +- */ +- +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_XDECREF(__pyx_t_9); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv.get_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":929 +- * @cython.internal +- * cdef class RenderFrameInfo(object): +- * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< +- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) +- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) +- */ +- +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self, struct mpv_render_frame_info *__pyx_v_info) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("_from_struct", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":930 +- * cdef class RenderFrameInfo(object): +- * cdef _from_struct(self, mpv_render_frame_info *info): +- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) # <<<<<<<<<<<<<< +- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) +- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) +- */ +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_PRESENT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 930, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_present, __pyx_t_1) < 0) __PYX_ERR(0, 930, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":931 +- * cdef _from_struct(self, mpv_render_frame_info *info): +- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) +- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) # <<<<<<<<<<<<<< +- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) +- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) +- */ +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REDRAW)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 931, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redraw, __pyx_t_1) < 0) __PYX_ERR(0, 931, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":932 +- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) +- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) +- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) # <<<<<<<<<<<<<< +- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) +- * self.target_time = info[0].target_time +- */ +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REPEAT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 932, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repeat, __pyx_t_1) < 0) __PYX_ERR(0, 932, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":933 +- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) +- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) +- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) # <<<<<<<<<<<<<< +- * self.target_time = info[0].target_time +- * return self + */ +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_block_vsync, __pyx_t_1) < 0) __PYX_ERR(0, 933, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":934 +- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) +- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) +- * self.target_time = info[0].target_time # <<<<<<<<<<<<<< +- * return self ++ /* "vidcutter/libs/pympv/mpv.pyx":1055 ++ * raise MPVError(err) + * +- */ +- __pyx_t_1 = __Pyx_PyInt_From_int64_t((__pyx_v_info[0]).target_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target_time, __pyx_t_1) < 0) __PYX_ERR(0, 934, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":935 +- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) +- * self.target_time = info[0].target_time +- * return self # <<<<<<<<<<<<<< ++ * return RenderFrameInfo()._from_struct(&info) # <<<<<<<<<<<<<< + * +- * cdef class RenderContext(object): ++ * def set_update_callback(self, cb): + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(((PyObject *)__pyx_v_self)); +- __pyx_r = ((PyObject *)__pyx_v_self); ++ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo *)((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2)->__pyx_vtab)->_from_struct(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2), (&__pyx_v_info)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_r = __pyx_t_3; ++ __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":929 +- * @cython.internal +- * cdef class RenderFrameInfo(object): +- * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< +- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) +- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) ++ /* "vidcutter/libs/pympv/mpv.pyx":1043 ++ * return err ++ * ++ * def get_next_frame_info(self): # <<<<<<<<<<<<<< ++ * cdef: ++ * mpv_render_frame_info info + */ + + /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo._from_struct", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.get_next_frame_info", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * cdef tuple state +- * cdef object _dict ++/* "vidcutter/libs/pympv/mpv.pyx":1057 ++ * return RenderFrameInfo()._from_struct(&info) ++ * ++ * def set_update_callback(self, cb): # <<<<<<<<<<<<<< ++ * with nogil: ++ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("set_update_callback (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_cb)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self) { +- PyObject *__pyx_v_state = 0; +- PyObject *__pyx_v__dict = 0; +- int __pyx_v_use_setstate; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_cb) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__reduce_cython__", 0); +- +- /* "(tree fragment)":5 +- * cdef object _dict +- * cdef bint use_setstate +- * state = () # <<<<<<<<<<<<<< +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: +- */ +- __Pyx_INCREF(__pyx_empty_tuple); +- __pyx_v_state = __pyx_empty_tuple; +- +- /* "(tree fragment)":6 +- * cdef bint use_setstate +- * state = () +- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< +- * if _dict is not None: +- * state += (_dict,) +- */ +- __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v__dict = __pyx_t_1; +- __pyx_t_1 = 0; +- +- /* "(tree fragment)":7 +- * state = () +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: # <<<<<<<<<<<<<< +- * state += (_dict,) +- * use_setstate = True +- */ +- __pyx_t_2 = (__pyx_v__dict != Py_None); +- __pyx_t_3 = (__pyx_t_2 != 0); +- if (__pyx_t_3) { +- +- /* "(tree fragment)":8 +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: +- * state += (_dict,) # <<<<<<<<<<<<<< +- * use_setstate = True +- * else: +- */ +- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(__pyx_v__dict); +- __Pyx_GIVEREF(__pyx_v__dict); +- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); +- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); +- __pyx_t_4 = 0; +- +- /* "(tree fragment)":9 +- * if _dict is not None: +- * state += (_dict,) +- * use_setstate = True # <<<<<<<<<<<<<< +- * else: +- * use_setstate = False +- */ +- __pyx_v_use_setstate = 1; +- +- /* "(tree fragment)":7 +- * state = () +- * _dict = getattr(self, '__dict__', None) +- * if _dict is not None: # <<<<<<<<<<<<<< +- * state += (_dict,) +- * use_setstate = True +- */ +- goto __pyx_L3; +- } +- +- /* "(tree fragment)":11 +- * use_setstate = True +- * else: +- * use_setstate = False # <<<<<<<<<<<<<< +- * if use_setstate: +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state +- */ +- /*else*/ { +- __pyx_v_use_setstate = 0; +- } +- __pyx_L3:; ++ __Pyx_RefNannySetupContext("set_update_callback", 0); + +- /* "(tree fragment)":12 +- * else: +- * use_setstate = False +- * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":1058 ++ * ++ * def set_update_callback(self, cb): ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) ++ * self.update_cb = cb + */ +- __pyx_t_3 = (__pyx_v_use_setstate != 0); +- if (__pyx_t_3) { ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "(tree fragment)":13 +- * use_setstate = False +- * if use_setstate: +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state # <<<<<<<<<<<<<< +- * else: +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) ++ /* "vidcutter/libs/pympv/mpv.pyx":1059 ++ * def set_update_callback(self, cb): ++ * with nogil: ++ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) # <<<<<<<<<<<<<< ++ * self.update_cb = cb ++ * + */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_RenderFrameInfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_222419149); +- __Pyx_GIVEREF(__pyx_int_222419149); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); +- __Pyx_INCREF(Py_None); +- __Pyx_GIVEREF(Py_None); +- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); +- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_GIVEREF(__pyx_t_4); +- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); +- __Pyx_INCREF(__pyx_v_state); +- __Pyx_GIVEREF(__pyx_v_state); +- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state); +- __pyx_t_4 = 0; +- __pyx_t_1 = 0; +- __pyx_r = __pyx_t_5; +- __pyx_t_5 = 0; +- goto __pyx_L0; ++ mpv_render_context_set_update_callback(__pyx_v_self->_ctx, (&__pyx_f_9vidcutter_4libs_3mpv__c_updatecb), ((void *)__pyx_v_cb)); ++ } + +- /* "(tree fragment)":12 +- * else: +- * use_setstate = False +- * if use_setstate: # <<<<<<<<<<<<<< +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":1058 ++ * ++ * def set_update_callback(self, cb): ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) ++ * self.update_cb = cb + */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } + } + +- /* "(tree fragment)":15 +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state +- * else: +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) ++ /* "vidcutter/libs/pympv/mpv.pyx":1060 ++ * with nogil: ++ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) ++ * self.update_cb = cb # <<<<<<<<<<<<<< ++ * ++ * def update(self): + */ +- /*else*/ { +- __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_RenderFrameInfo); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); +- __Pyx_INCREF(__pyx_int_222419149); +- __Pyx_GIVEREF(__pyx_int_222419149); +- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); +- __Pyx_INCREF(__pyx_v_state); +- __Pyx_GIVEREF(__pyx_v_state); +- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); +- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_GIVEREF(__pyx_t_5); +- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); +- __pyx_t_5 = 0; +- __pyx_t_1 = 0; +- __pyx_r = __pyx_t_4; +- __pyx_t_4 = 0; +- goto __pyx_L0; +- } ++ __Pyx_INCREF(__pyx_v_cb); ++ __Pyx_GIVEREF(__pyx_v_cb); ++ __Pyx_GOTREF(__pyx_v_self->update_cb); ++ __Pyx_DECREF(__pyx_v_self->update_cb); ++ __pyx_v_self->update_cb = __pyx_v_cb; + +- /* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * cdef tuple state +- * cdef object _dict ++ /* "vidcutter/libs/pympv/mpv.pyx":1057 ++ * return RenderFrameInfo()._from_struct(&info) ++ * ++ * def set_update_callback(self, cb): # <<<<<<<<<<<<<< ++ * with nogil: ++ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) + */ + + /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_state); +- __Pyx_XDECREF(__pyx_v__dict); ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "(tree fragment)":16 +- * else: +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) ++/* "vidcutter/libs/pympv/mpv.pyx":1062 ++ * self.update_cb = cb ++ * ++ * def update(self): # <<<<<<<<<<<<<< ++ * cdef uint64_t ret ++ * with nogil: + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); ++ __Pyx_RefNannySetupContext("update (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { ++ uint64_t __pyx_v_ret; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__setstate_cython__", 0); ++ __Pyx_RefNannySetupContext("update", 0); + +- /* "(tree fragment)":17 +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) +- * def __setstate_cython__(self, __pyx_state): +- * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1064 ++ * def update(self): ++ * cdef uint64_t ret ++ * with nogil: # <<<<<<<<<<<<<< ++ * ret = mpv_render_context_update(self._ctx) ++ * return ret + */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1065 ++ * cdef uint64_t ret ++ * with nogil: ++ * ret = mpv_render_context_update(self._ctx) # <<<<<<<<<<<<<< ++ * return ret ++ * ++ */ ++ __pyx_v_ret = mpv_render_context_update(__pyx_v_self->_ctx); ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1064 ++ * def update(self): ++ * cdef uint64_t ret ++ * with nogil: # <<<<<<<<<<<<<< ++ * ret = mpv_render_context_update(self._ctx) ++ * return ret ++ */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1066 ++ * with nogil: ++ * ret = mpv_render_context_update(self._ctx) ++ * return ret # <<<<<<<<<<<<<< ++ * ++ * @_errors ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +- /* "(tree fragment)":16 +- * else: +- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) ++ /* "vidcutter/libs/pympv/mpv.pyx":1062 ++ * self.update_cb = cb ++ * ++ * def update(self): # <<<<<<<<<<<<<< ++ * cdef uint64_t ret ++ * with nogil: + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.update", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); +@@ -18902,98 +18218,80 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cy + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":950 +- * bint inited ++/* "vidcutter/libs/pympv/mpv.pyx":1069 + * +- * def __init__(self, mpv, # <<<<<<<<<<<<<< +- * api_type, +- * opengl_init_params=None, ++ * @_errors ++ * def render(self, # <<<<<<<<<<<<<< ++ * opengl_fbo=None, ++ * flip_y=False, + */ + + /* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_mpv = 0; +- PyObject *__pyx_v_api_type = 0; +- PyObject *__pyx_v_opengl_init_params = 0; +- PyObject *__pyx_v_advanced_control = 0; +- PyObject *__pyx_v_x11_display = 0; +- PyObject *__pyx_v_wl_display = 0; +- PyObject *__pyx_v_drm_display = 0; +- PyObject *__pyx_v_drm_osd_size = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_opengl_fbo = 0; ++ PyObject *__pyx_v_flip_y = 0; ++ PyObject *__pyx_v_depth = 0; ++ PyObject *__pyx_v_block_for_target_time = 0; ++ PyObject *__pyx_v_skip_rendering = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- int __pyx_r; ++ PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); ++ __Pyx_RefNannySetupContext("render (wrapper)", 0); + { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_api_type,&__pyx_n_s_opengl_init_params,&__pyx_n_s_advanced_control,&__pyx_n_s_x11_display,&__pyx_n_s_wl_display,&__pyx_n_s_drm_display,&__pyx_n_s_drm_osd_size,0}; +- PyObject* values[8] = {0,0,0,0,0,0,0,0}; +- +- /* "vidcutter/libs/pympv/mpv.pyx":952 +- * def __init__(self, mpv, +- * api_type, +- * opengl_init_params=None, # <<<<<<<<<<<<<< +- * advanced_control=False, +- * x11_display=None, +- */ +- values[2] = ((PyObject *)Py_None); ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_opengl_fbo,&__pyx_n_s_flip_y,&__pyx_n_s_depth,&__pyx_n_s_block_for_target_time,&__pyx_n_s_skip_rendering,0}; ++ PyObject* values[5] = {0,0,0,0,0}; + +- /* "vidcutter/libs/pympv/mpv.pyx":953 +- * api_type, +- * opengl_init_params=None, +- * advanced_control=False, # <<<<<<<<<<<<<< +- * x11_display=None, +- * wl_display=None, ++ /* "vidcutter/libs/pympv/mpv.pyx":1070 ++ * @_errors ++ * def render(self, ++ * opengl_fbo=None, # <<<<<<<<<<<<<< ++ * flip_y=False, ++ * depth=None, + */ +- values[3] = ((PyObject *)Py_False); ++ values[0] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":954 +- * opengl_init_params=None, +- * advanced_control=False, +- * x11_display=None, # <<<<<<<<<<<<<< +- * wl_display=None, +- * drm_display=None, ++ /* "vidcutter/libs/pympv/mpv.pyx":1071 ++ * def render(self, ++ * opengl_fbo=None, ++ * flip_y=False, # <<<<<<<<<<<<<< ++ * depth=None, ++ * block_for_target_time=True, + */ +- values[4] = ((PyObject *)Py_None); ++ values[1] = ((PyObject *)Py_False); + +- /* "vidcutter/libs/pympv/mpv.pyx":955 +- * advanced_control=False, +- * x11_display=None, +- * wl_display=None, # <<<<<<<<<<<<<< +- * drm_display=None, +- * drm_osd_size=None ++ /* "vidcutter/libs/pympv/mpv.pyx":1072 ++ * opengl_fbo=None, ++ * flip_y=False, ++ * depth=None, # <<<<<<<<<<<<<< ++ * block_for_target_time=True, ++ * skip_rendering=False): + */ +- values[5] = ((PyObject *)Py_None); ++ values[2] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":956 +- * x11_display=None, +- * wl_display=None, +- * drm_display=None, # <<<<<<<<<<<<<< +- * drm_osd_size=None +- * ): ++ /* "vidcutter/libs/pympv/mpv.pyx":1073 ++ * flip_y=False, ++ * depth=None, ++ * block_for_target_time=True, # <<<<<<<<<<<<<< ++ * skip_rendering=False): ++ * + */ +- values[6] = ((PyObject *)Py_None); ++ values[3] = ((PyObject *)Py_True); + +- /* "vidcutter/libs/pympv/mpv.pyx":957 +- * wl_display=None, +- * drm_display=None, +- * drm_osd_size=None # <<<<<<<<<<<<<< +- * ): ++ /* "vidcutter/libs/pympv/mpv.pyx":1074 ++ * depth=None, ++ * block_for_target_time=True, ++ * skip_rendering=False): # <<<<<<<<<<<<<< + * ++ * cdef: + */ +- values[7] = ((PyObject *)Py_None); ++ values[4] = ((PyObject *)Py_False); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { +- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); +- CYTHON_FALLTHROUGH; +- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); +- CYTHON_FALLTHROUGH; +- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); +- CYTHON_FALLTHROUGH; + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); +@@ -19010,62 +18308,40 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mpv)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_opengl_fbo); ++ if (value) { values[0] = value; kw_args--; } ++ } + CYTHON_FALLTHROUGH; + case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_api_type)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, 1); __PYX_ERR(0, 950, __pyx_L3_error) ++ if (kw_args > 0) { ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flip_y); ++ if (value) { values[1] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 2: + if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_opengl_init_params); ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth); + if (value) { values[2] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 3: + if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_advanced_control); ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block_for_target_time); + if (value) { values[3] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 4: + if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x11_display); ++ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_skip_rendering); + if (value) { values[4] = value; kw_args--; } + } +- CYTHON_FALLTHROUGH; +- case 5: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wl_display); +- if (value) { values[5] = value; kw_args--; } +- } +- CYTHON_FALLTHROUGH; +- case 6: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_drm_display); +- if (value) { values[6] = value; kw_args--; } +- } +- CYTHON_FALLTHROUGH; +- case 7: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_drm_osd_size); +- if (value) { values[7] = value; kw_args--; } +- } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 950, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(0, 1069, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); +- CYTHON_FALLTHROUGH; +- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); +- CYTHON_FALLTHROUGH; +- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); +- CYTHON_FALLTHROUGH; + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); +@@ -19073,36 +18349,35 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- break; ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; + default: goto __pyx_L5_argtuple_error; + } + } +- __pyx_v_mpv = values[0]; +- __pyx_v_api_type = values[1]; +- __pyx_v_opengl_init_params = values[2]; +- __pyx_v_advanced_control = values[3]; +- __pyx_v_x11_display = values[4]; +- __pyx_v_wl_display = values[5]; +- __pyx_v_drm_display = values[6]; +- __pyx_v_drm_osd_size = values[7]; +- } +- goto __pyx_L4_argument_unpacking_done; ++ __pyx_v_opengl_fbo = values[0]; ++ __pyx_v_flip_y = values[1]; ++ __pyx_v_depth = values[2]; ++ __pyx_v_block_for_target_time = values[3]; ++ __pyx_v_skip_rendering = values[4]; ++ } ++ goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 950, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("render", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1069, __pyx_L3_error) + __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +- return -1; ++ return NULL; + __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_api_type, __pyx_v_opengl_init_params, __pyx_v_advanced_control, __pyx_v_x11_display, __pyx_v_wl_display, __pyx_v_drm_display, __pyx_v_drm_osd_size); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_opengl_fbo, __pyx_v_flip_y, __pyx_v_depth, __pyx_v_block_for_target_time, __pyx_v_skip_rendering); + +- /* "vidcutter/libs/pympv/mpv.pyx":950 +- * bint inited ++ /* "vidcutter/libs/pympv/mpv.pyx":1069 + * +- * def __init__(self, mpv, # <<<<<<<<<<<<<< +- * api_type, +- * opengl_init_params=None, ++ * @_errors ++ * def render(self, # <<<<<<<<<<<<<< ++ * opengl_fbo=None, ++ * flip_y=False, + */ + + /* function exit code */ +@@ -19110,786 +18385,626 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_mpv, PyObject *__pyx_v_api_type, PyObject *__pyx_v_opengl_init_params, PyObject *__pyx_v_advanced_control, PyObject *__pyx_v_x11_display, PyObject *__pyx_v_wl_display, PyObject *__pyx_v_drm_display, PyObject *__pyx_v_drm_osd_size) { +- struct mpv_opengl_init_params __pyx_v_gl_params; +- struct mpv_opengl_drm_params __pyx_v_drm_params; +- struct mpv_opengl_drm_osd_size __pyx_v__drm_osd_size; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_opengl_fbo, PyObject *__pyx_v_flip_y, PyObject *__pyx_v_depth, PyObject *__pyx_v_block_for_target_time, PyObject *__pyx_v_skip_rendering) { ++ struct mpv_opengl_fbo __pyx_v_fbo; + struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_params = NULL; +- PyObject *__pyx_v_arp = NULL; +- int __pyx_v_err; +- int __pyx_r; ++ int __pyx_v_ret; ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; ++ int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; ++ int __pyx_t_5; + int __pyx_t_6; +- int __pyx_t_7; +- char const *__pyx_t_8; +- PyObject *(*__pyx_t_9)(PyObject *); +- int __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__init__", 0); ++ __Pyx_RefNannySetupContext("render", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":965 +- * mpv_opengl_drm_osd_size _drm_osd_size ++ /* "vidcutter/libs/pympv/mpv.pyx":1079 ++ * mpv_opengl_fbo fbo + * +- * self._mpv = mpv # <<<<<<<<<<<<<< ++ * params = _RenderParams() # <<<<<<<<<<<<<< + * +- * memset(&gl_params, 0, sizeof(gl_params)) ++ * if opengl_fbo: + */ +- if (!(likely(((__pyx_v_mpv) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_mpv, __pyx_ptype_9vidcutter_4libs_3mpv_Context))))) __PYX_ERR(0, 965, __pyx_L1_error) +- __pyx_t_1 = __pyx_v_mpv; +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v_self->_mpv); +- __Pyx_DECREF(((PyObject *)__pyx_v_self->_mpv)); +- __pyx_v_self->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_t_1); ++ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":967 +- * self._mpv = mpv ++ /* "vidcutter/libs/pympv/mpv.pyx":1081 ++ * params = _RenderParams() + * +- * memset(&gl_params, 0, sizeof(gl_params)) # <<<<<<<<<<<<<< +- * memset(&drm_params, 0, sizeof(drm_params)) +- * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) ++ * if opengl_fbo: # <<<<<<<<<<<<<< ++ * memset(&fbo, 0, sizeof(fbo)) ++ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 + */ +- (void)(memset((&__pyx_v_gl_params), 0, (sizeof(__pyx_v_gl_params)))); ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_opengl_fbo); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1081, __pyx_L1_error) ++ if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":968 +- * +- * memset(&gl_params, 0, sizeof(gl_params)) +- * memset(&drm_params, 0, sizeof(drm_params)) # <<<<<<<<<<<<<< +- * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) ++ /* "vidcutter/libs/pympv/mpv.pyx":1082 + * ++ * if opengl_fbo: ++ * memset(&fbo, 0, sizeof(fbo)) # <<<<<<<<<<<<<< ++ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 ++ * fbo.w = opengl_fbo["w"] + */ +- (void)(memset((&__pyx_v_drm_params), 0, (sizeof(__pyx_v_drm_params)))); ++ (void)(memset((&__pyx_v_fbo), 0, (sizeof(__pyx_v_fbo)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":969 +- * memset(&gl_params, 0, sizeof(gl_params)) +- * memset(&drm_params, 0, sizeof(drm_params)) +- * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) # <<<<<<<<<<<<<< +- * +- * params = _RenderParams() ++ /* "vidcutter/libs/pympv/mpv.pyx":1083 ++ * if opengl_fbo: ++ * memset(&fbo, 0, sizeof(fbo)) ++ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< ++ * fbo.w = opengl_fbo["w"] ++ * fbo.h = opengl_fbo["h"] + */ +- (void)(memset((&__pyx_v__drm_osd_size), 0, (sizeof(__pyx_v__drm_osd_size)))); ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1083, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1083, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1083, __pyx_L1_error) ++ if (!__pyx_t_2) { ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ } else { ++ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1083, __pyx_L1_error) ++ __pyx_t_3 = __pyx_t_5; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_3 = 0; ++ __pyx_L4_bool_binop_done:; ++ __pyx_v_fbo.fbo = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":971 +- * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) +- * +- * params = _RenderParams() # <<<<<<<<<<<<<< +- * +- * if api_type == self.API_OPENGL: ++ /* "vidcutter/libs/pympv/mpv.pyx":1084 ++ * memset(&fbo, 0, sizeof(fbo)) ++ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 ++ * fbo.w = opengl_fbo["w"] # <<<<<<<<<<<<<< ++ * fbo.h = opengl_fbo["h"] ++ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 + */ +- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); +- __pyx_t_1 = 0; ++ __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1084, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1084, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_v_fbo.w = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":973 +- * params = _RenderParams() +- * +- * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< +- * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) +- * else: ++ /* "vidcutter/libs/pympv/mpv.pyx":1085 ++ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 ++ * fbo.w = opengl_fbo["w"] ++ * fbo.h = opengl_fbo["h"] # <<<<<<<<<<<<<< ++ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = PyObject_RichCompare(__pyx_v_api_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 973, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (likely(__pyx_t_3)) { ++ __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1085, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1085, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_v_fbo.h = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":974 +- * +- * if api_type == self.API_OPENGL: +- * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) # <<<<<<<<<<<<<< +- * else: +- * raise PyMPVError("Unknown api_type %r" % api_type) ++ /* "vidcutter/libs/pympv/mpv.pyx":1086 ++ * fbo.w = opengl_fbo["w"] ++ * fbo.h = opengl_fbo["h"] ++ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) ++ * if flip_y: + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_string(__pyx_v_params, MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1086, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error) ++ if (!__pyx_t_2) { ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ } else { ++ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1086, __pyx_L1_error) ++ __pyx_t_3 = __pyx_t_5; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ goto __pyx_L6_bool_binop_done; ++ } ++ __pyx_t_3 = 0; ++ __pyx_L6_bool_binop_done:; ++ __pyx_v_fbo.internal_format = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":973 ++ /* "vidcutter/libs/pympv/mpv.pyx":1087 ++ * fbo.h = opengl_fbo["h"] ++ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) # <<<<<<<<<<<<<< ++ * if flip_y: ++ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) ++ */ ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_FBO, (&__pyx_v_fbo), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1081 + * params = _RenderParams() + * +- * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< +- * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) +- * else: ++ * if opengl_fbo: # <<<<<<<<<<<<<< ++ * memset(&fbo, 0, sizeof(fbo)) ++ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 + */ +- goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":976 +- * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) +- * else: +- * raise PyMPVError("Unknown api_type %r" % api_type) # <<<<<<<<<<<<<< +- * +- * if opengl_init_params is not None: ++ /* "vidcutter/libs/pympv/mpv.pyx":1088 ++ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) ++ * if flip_y: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) ++ * if depth is not None: + */ +- /*else*/ { +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_flip_y); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1088, __pyx_L1_error) ++ if (__pyx_t_2) { ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1089 ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) ++ * if flip_y: ++ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) # <<<<<<<<<<<<<< ++ * if depth is not None: ++ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) ++ */ ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_FLIP_Y, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_api_type_r, __pyx_v_api_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 976, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_1, function); +- } +- } +- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_Raise(__pyx_t_2, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __PYX_ERR(0, 976, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1088 ++ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) ++ * if flip_y: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) ++ * if depth is not None: ++ */ + } +- __pyx_L3:; + +- /* "vidcutter/libs/pympv/mpv.pyx":978 +- * raise PyMPVError("Unknown api_type %r" % api_type) +- * +- * if opengl_init_params is not None: # <<<<<<<<<<<<<< +- * self._get_proc_address = opengl_init_params["get_proc_address"] +- * gl_params.get_proc_address = &_c_getprocaddress ++ /* "vidcutter/libs/pympv/mpv.pyx":1090 ++ * if flip_y: ++ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) ++ * if depth is not None: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) ++ * if not block_for_target_time: + */ +- __pyx_t_3 = (__pyx_v_opengl_init_params != Py_None); +- __pyx_t_6 = (__pyx_t_3 != 0); ++ __pyx_t_2 = (__pyx_v_depth != Py_None); ++ __pyx_t_6 = (__pyx_t_2 != 0); + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":979 +- * +- * if opengl_init_params is not None: +- * self._get_proc_address = opengl_init_params["get_proc_address"] # <<<<<<<<<<<<<< +- * gl_params.get_proc_address = &_c_getprocaddress +- * gl_params.get_proc_address_ctx = self._get_proc_address ++ /* "vidcutter/libs/pympv/mpv.pyx":1091 ++ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) ++ * if depth is not None: ++ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) # <<<<<<<<<<<<<< ++ * if not block_for_target_time: ++ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) + */ +- __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_init_params, __pyx_n_s_get_proc_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_GIVEREF(__pyx_t_2); +- __Pyx_GOTREF(__pyx_v_self->_get_proc_address); +- __Pyx_DECREF(__pyx_v_self->_get_proc_address); +- __pyx_v_self->_get_proc_address = __pyx_t_2; +- __pyx_t_2 = 0; ++ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_depth); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1091, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_DEPTH, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":980 +- * if opengl_init_params is not None: +- * self._get_proc_address = opengl_init_params["get_proc_address"] +- * gl_params.get_proc_address = &_c_getprocaddress # <<<<<<<<<<<<<< +- * gl_params.get_proc_address_ctx = self._get_proc_address +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) ++ /* "vidcutter/libs/pympv/mpv.pyx":1090 ++ * if flip_y: ++ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) ++ * if depth is not None: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) ++ * if not block_for_target_time: + */ +- __pyx_v_gl_params.get_proc_address = (&__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":981 +- * self._get_proc_address = opengl_init_params["get_proc_address"] +- * gl_params.get_proc_address = &_c_getprocaddress +- * gl_params.get_proc_address_ctx = self._get_proc_address # <<<<<<<<<<<<<< +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) +- * if advanced_control: ++ /* "vidcutter/libs/pympv/mpv.pyx":1092 ++ * if depth is not None: ++ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) ++ * if not block_for_target_time: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) ++ * if skip_rendering: + */ +- __pyx_v_gl_params.get_proc_address_ctx = ((void *)__pyx_v_self->_get_proc_address); ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_block_for_target_time); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1092, __pyx_L1_error) ++ __pyx_t_2 = ((!__pyx_t_6) != 0); ++ if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":982 +- * gl_params.get_proc_address = &_c_getprocaddress +- * gl_params.get_proc_address_ctx = self._get_proc_address +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) # <<<<<<<<<<<<<< +- * if advanced_control: +- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) ++ /* "vidcutter/libs/pympv/mpv.pyx":1093 ++ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) ++ * if not block_for_target_time: ++ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) # <<<<<<<<<<<<<< ++ * if skip_rendering: ++ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, (&__pyx_v_gl_params), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 982, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":978 +- * raise PyMPVError("Unknown api_type %r" % api_type) +- * +- * if opengl_init_params is not None: # <<<<<<<<<<<<<< +- * self._get_proc_address = opengl_init_params["get_proc_address"] +- * gl_params.get_proc_address = &_c_getprocaddress ++ /* "vidcutter/libs/pympv/mpv.pyx":1092 ++ * if depth is not None: ++ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) ++ * if not block_for_target_time: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) ++ * if skip_rendering: + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":983 +- * gl_params.get_proc_address_ctx = self._get_proc_address +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) +- * if advanced_control: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) +- * if x11_display: ++ /* "vidcutter/libs/pympv/mpv.pyx":1094 ++ * if not block_for_target_time: ++ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) ++ * if skip_rendering: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) ++ * + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_advanced_control); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 983, __pyx_L1_error) +- if (__pyx_t_6) { ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skip_rendering); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error) ++ if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":984 +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) +- * if advanced_control: +- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) # <<<<<<<<<<<<<< +- * if x11_display: +- * self._x11_display = x11_display ++ /* "vidcutter/libs/pympv/mpv.pyx":1095 ++ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) ++ * if skip_rendering: ++ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) # <<<<<<<<<<<<<< ++ * ++ * with nogil: + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_ADVANCED_CONTROL, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 984, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_SKIP_RENDERING, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1095, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":983 +- * gl_params.get_proc_address_ctx = self._get_proc_address +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) +- * if advanced_control: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) +- * if x11_display: ++ /* "vidcutter/libs/pympv/mpv.pyx":1094 ++ * if not block_for_target_time: ++ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) ++ * if skip_rendering: # <<<<<<<<<<<<<< ++ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) ++ * + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":985 +- * if advanced_control: +- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) +- * if x11_display: # <<<<<<<<<<<<<< +- * self._x11_display = x11_display +- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) ++ /* "vidcutter/libs/pympv/mpv.pyx":1097 ++ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) ++ * ++ * with nogil: # <<<<<<<<<<<<<< ++ * ret = mpv_render_context_render(self._ctx, params.params) ++ * return ret + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_x11_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 985, __pyx_L1_error) +- if (__pyx_t_6) { ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":986 +- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) +- * if x11_display: +- * self._x11_display = x11_display # <<<<<<<<<<<<<< +- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) +- * if wl_display: ++ /* "vidcutter/libs/pympv/mpv.pyx":1098 ++ * ++ * with nogil: ++ * ret = mpv_render_context_render(self._ctx, params.params) # <<<<<<<<<<<<<< ++ * return ret ++ * + */ +- __Pyx_INCREF(__pyx_v_x11_display); +- __Pyx_GIVEREF(__pyx_v_x11_display); +- __Pyx_GOTREF(__pyx_v_self->_x11_display); +- __Pyx_DECREF(__pyx_v_self->_x11_display); +- __pyx_v_self->_x11_display = __pyx_v_x11_display; ++ __pyx_v_ret = mpv_render_context_render(__pyx_v_self->_ctx, __pyx_v_params->params); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":987 +- * if x11_display: +- * self._x11_display = x11_display +- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) # <<<<<<<<<<<<<< +- * if wl_display: +- * self._wl_display = wl_display ++ /* "vidcutter/libs/pympv/mpv.pyx":1097 ++ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) ++ * ++ * with nogil: # <<<<<<<<<<<<<< ++ * ret = mpv_render_context_render(self._ctx, params.params) ++ * return ret + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_X11_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"Display"), __pyx_v_x11_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 987, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L14; ++ } ++ __pyx_L14:; ++ } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":985 +- * if advanced_control: +- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) +- * if x11_display: # <<<<<<<<<<<<<< +- * self._x11_display = x11_display +- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) ++ /* "vidcutter/libs/pympv/mpv.pyx":1099 ++ * with nogil: ++ * ret = mpv_render_context_render(self._ctx, params.params) ++ * return ret # <<<<<<<<<<<<<< ++ * ++ * def report_swap(self): + */ +- } ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_r = __pyx_t_1; ++ __pyx_t_1 = 0; ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":988 +- * self._x11_display = x11_display +- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) +- * if wl_display: # <<<<<<<<<<<<<< +- * self._wl_display = wl_display +- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) ++ /* "vidcutter/libs/pympv/mpv.pyx":1069 ++ * ++ * @_errors ++ * def render(self, # <<<<<<<<<<<<<< ++ * opengl_fbo=None, ++ * flip_y=False, + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_wl_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 988, __pyx_L1_error) +- if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":989 +- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) +- * if wl_display: +- * self._wl_display = wl_display # <<<<<<<<<<<<<< +- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) +- * if drm_display: +- */ +- __Pyx_INCREF(__pyx_v_wl_display); +- __Pyx_GIVEREF(__pyx_v_wl_display); +- __Pyx_GOTREF(__pyx_v_self->_wl_display); +- __Pyx_DECREF(__pyx_v_self->_wl_display); +- __pyx_v_self->_wl_display = __pyx_v_wl_display; ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XDECREF((PyObject *)__pyx_v_params); ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":990 +- * if wl_display: +- * self._wl_display = wl_display +- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) # <<<<<<<<<<<<<< +- * if drm_display: +- * drm_params.fd = drm_display.get("fd", -1) ++/* "vidcutter/libs/pympv/mpv.pyx":1101 ++ * return ret ++ * ++ * def report_swap(self): # <<<<<<<<<<<<<< ++ * with nogil: ++ * mpv_render_context_report_swap(self._ctx) + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_WL_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"wl_display"), __pyx_v_wl_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":988 +- * self._x11_display = x11_display +- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) +- * if wl_display: # <<<<<<<<<<<<<< +- * self._wl_display = wl_display +- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) +- */ +- } ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("report_swap (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); + +- /* "vidcutter/libs/pympv/mpv.pyx":991 +- * self._wl_display = wl_display +- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) +- * if drm_display: # <<<<<<<<<<<<<< +- * drm_params.fd = drm_display.get("fd", -1) +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) +- */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_drm_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 991, __pyx_L1_error) +- if (__pyx_t_6) { ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":992 +- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) +- * if drm_display: +- * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) +- * drm_params.connector_id = drm_display.get("connector_id", -1) +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 992, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_drm_params.fd = __pyx_t_7; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("report_swap", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":993 +- * if drm_display: +- * drm_params.fd = drm_display.get("fd", -1) +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< +- * drm_params.connector_id = drm_display.get("connector_id", -1) +- * arp = drm_display.get("atomic_request_ptr", None) ++ /* "vidcutter/libs/pympv/mpv.pyx":1102 ++ * ++ * def report_swap(self): ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_render_context_report_swap(self._ctx) ++ * + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 993, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v_drm_params.crtc_id = __pyx_t_7; ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":994 +- * drm_params.fd = drm_display.get("fd", -1) +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) +- * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< +- * arp = drm_display.get("atomic_request_ptr", None) +- * if arp is not None: ++ /* "vidcutter/libs/pympv/mpv.pyx":1103 ++ * def report_swap(self): ++ * with nogil: ++ * mpv_render_context_report_swap(self._ctx) # <<<<<<<<<<<<<< ++ * ++ * def free(self): + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 994, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_drm_params.connector_id = __pyx_t_7; ++ mpv_render_context_report_swap(__pyx_v_self->_ctx); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":995 +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) +- * drm_params.connector_id = drm_display.get("connector_id", -1) +- * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< +- * if arp is not None: +- * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") ++ /* "vidcutter/libs/pympv/mpv.pyx":1102 ++ * ++ * def report_swap(self): ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_render_context_report_swap(self._ctx) ++ * + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_arp = __pyx_t_2; +- __pyx_t_2 = 0; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L5; ++ } ++ __pyx_L5:; ++ } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":996 +- * drm_params.connector_id = drm_display.get("connector_id", -1) +- * arp = drm_display.get("atomic_request_ptr", None) +- * if arp is not None: # <<<<<<<<<<<<<< +- * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") +- * drm_params.render_fd = drm_display.get("render_fd", -1) ++ /* "vidcutter/libs/pympv/mpv.pyx":1101 ++ * return ret ++ * ++ * def report_swap(self): # <<<<<<<<<<<<<< ++ * with nogil: ++ * mpv_render_context_report_swap(self._ctx) + */ +- __pyx_t_6 = (__pyx_v_arp != Py_None); +- __pyx_t_3 = (__pyx_t_6 != 0); +- if (__pyx_t_3) { + +- /* "vidcutter/libs/pympv/mpv.pyx":997 +- * arp = drm_display.get("atomic_request_ptr", None) +- * if arp is not None: +- * 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) +- */ +- __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_arp); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 997, __pyx_L1_error) +- __pyx_v_drm_params.atomic_request_ptr = ((struct _drmModeAtomicReq **)__pyx_f_9vidcutter_4libs_3mpv_get_pointer(__pyx_t_8, __pyx_kp_s_drmModeAtomicReq)); ++ /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":996 +- * drm_params.connector_id = drm_display.get("connector_id", -1) +- * arp = drm_display.get("atomic_request_ptr", None) +- * if arp is not None: # <<<<<<<<<<<<<< +- * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") +- * drm_params.render_fd = drm_display.get("render_fd", -1) ++/* "vidcutter/libs/pympv/mpv.pyx":1105 ++ * mpv_render_context_report_swap(self._ctx) ++ * ++ * def free(self): # <<<<<<<<<<<<<< ++ * if not self.inited: ++ * return + */ +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":998 +- * if arp is not None: +- * 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: +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 998, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 998, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v_drm_params.render_fd = __pyx_t_7; ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("free (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); + +- /* "vidcutter/libs/pympv/mpv.pyx":999 +- * 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 +- */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_DISPLAY, (&__pyx_v_drm_params), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":991 +- * self._wl_display = wl_display +- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) +- * if drm_display: # <<<<<<<<<<<<<< +- * drm_params.fd = drm_display.get("fd", -1) +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) +- */ +- } ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ int __pyx_t_1; ++ __Pyx_RefNannySetupContext("free", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1000 +- * 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) +- */ +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_drm_osd_size); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1000, __pyx_L1_error) +- if (__pyx_t_3) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":1001 +- * 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 ((likely(PyTuple_CheckExact(__pyx_v_drm_osd_size))) || (PyList_CheckExact(__pyx_v_drm_osd_size))) { +- PyObject* sequence = __pyx_v_drm_osd_size; +- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); +- if (unlikely(size != 2)) { +- if (size > 2) __Pyx_RaiseTooManyValuesError(2); +- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +- __PYX_ERR(0, 1001, __pyx_L1_error) +- } +- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- if (likely(PyTuple_CheckExact(sequence))) { +- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); +- __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); +- } else { +- __pyx_t_1 = PyList_GET_ITEM(sequence, 0); +- __pyx_t_2 = PyList_GET_ITEM(sequence, 1); +- } +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(__pyx_t_2); +- #else +- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1001, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- #endif +- } else { +- Py_ssize_t index = -1; +- __pyx_t_4 = PyObject_GetIter(__pyx_v_drm_osd_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1001, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; +- index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed; +- __Pyx_GOTREF(__pyx_t_1); +- index = 1; __pyx_t_2 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; +- __Pyx_GOTREF(__pyx_t_2); +- if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1001, __pyx_L1_error) +- __pyx_t_9 = NULL; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- goto __pyx_L12_unpacking_done; +- __pyx_L11_unpacking_failed:; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_t_9 = NULL; +- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +- __PYX_ERR(0, 1001, __pyx_L1_error) +- __pyx_L12_unpacking_done:; +- } +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v__drm_osd_size.width = __pyx_t_7; +- __pyx_v__drm_osd_size.height = __pyx_t_10; +- +- /* "vidcutter/libs/pympv/mpv.pyx":1002 +- * 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) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1106 + * +- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) ++ * def free(self): ++ * if not self.inited: # <<<<<<<<<<<<<< ++ * return ++ * with nogil: + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_OSD_SIZE, (&__pyx_v__drm_osd_size), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1002, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); ++ if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1000 +- * 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) ++ /* "vidcutter/libs/pympv/mpv.pyx":1107 ++ * def free(self): ++ * if not self.inited: ++ * return # <<<<<<<<<<<<<< ++ * with nogil: ++ * mpv_render_context_free(self._ctx) + */ +- } ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1004 +- * params.add_voidp(MPV_RENDER_PARAM_DRM_OSD_SIZE, &_drm_osd_size) ++ /* "vidcutter/libs/pympv/mpv.pyx":1106 + * +- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) # <<<<<<<<<<<<<< +- * if err < 0: +- * raise MPVError(err) ++ * def free(self): ++ * if not self.inited: # <<<<<<<<<<<<<< ++ * return ++ * with nogil: + */ +- __pyx_v_err = mpv_render_context_create((&__pyx_v_self->_ctx), __pyx_v_self->_mpv->_ctx, __pyx_v_params->params); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":1005 +- * +- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * self.inited = True ++ /* "vidcutter/libs/pympv/mpv.pyx":1108 ++ * if not self.inited: ++ * return ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_render_context_free(self._ctx) ++ * self.inited = False + */ +- __pyx_t_3 = ((__pyx_v_err < 0) != 0); +- if (unlikely(__pyx_t_3)) { ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1006 +- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) +- * if err < 0: +- * raise MPVError(err) # <<<<<<<<<<<<<< +- * self.inited = True ++ /* "vidcutter/libs/pympv/mpv.pyx":1109 ++ * return ++ * with nogil: ++ * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< ++ * self.inited = False + * + */ +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1006, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1006, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_1, function); ++ mpv_render_context_free(__pyx_v_self->_ctx); + } +- } +- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1006, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_Raise(__pyx_t_2, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __PYX_ERR(0, 1006, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1005 +- * +- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) +- * self.inited = True ++ /* "vidcutter/libs/pympv/mpv.pyx":1108 ++ * if not self.inited: ++ * return ++ * with nogil: # <<<<<<<<<<<<<< ++ * mpv_render_context_free(self._ctx) ++ * self.inited = False + */ ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L6; ++ } ++ __pyx_L6:; ++ } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1007 +- * if err < 0: +- * raise MPVError(err) +- * self.inited = True # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1110 ++ * with nogil: ++ * mpv_render_context_free(self._ctx) ++ * self.inited = False # <<<<<<<<<<<<<< + * +- * @_errors ++ * def close(self): + */ +- __pyx_v_self->inited = 1; ++ __pyx_v_self->inited = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":950 +- * bint inited ++ /* "vidcutter/libs/pympv/mpv.pyx":1105 ++ * mpv_render_context_report_swap(self._ctx) + * +- * def __init__(self, mpv, # <<<<<<<<<<<<<< +- * api_type, +- * opengl_init_params=None, ++ * def free(self): # <<<<<<<<<<<<<< ++ * if not self.inited: ++ * return + */ + + /* function exit code */ +- __pyx_r = 0; +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = -1; ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __pyx_L0:; +- __Pyx_XDECREF((PyObject *)__pyx_v_params); +- __Pyx_XDECREF(__pyx_v_arp); ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1010 ++/* "vidcutter/libs/pympv/mpv.pyx":1112 ++ * self.inited = False + * +- * @_errors +- * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< +- * cdef: +- * mpv_render_param param ++ * def close(self): # <<<<<<<<<<<<<< ++ * if not self.inited: ++ * return + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile(PyObject *__pyx_v_self, PyObject *__pyx_v_icc_blob); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile(PyObject *__pyx_v_self, PyObject *__pyx_v_icc_blob) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_icc_profile (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_icc_blob)); ++ __Pyx_RefNannySetupContext("close (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_icc_blob) { +- struct mpv_render_param __pyx_v_param; +- struct mpv_byte_array __pyx_v_val; +- int __pyx_v_err; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; +- int __pyx_t_2; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- char *__pyx_t_6; +- Py_ssize_t __pyx_t_7; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("set_icc_profile", 0); ++ __Pyx_RefNannySetupContext("close", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1016 +- * int err ++ /* "vidcutter/libs/pympv/mpv.pyx":1113 + * +- * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< +- * raise PyMPVError("icc_blob should be a bytes instance") +- * val.data = icc_blob +- */ +- __pyx_t_1 = PyBytes_Check(__pyx_v_icc_blob); +- __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); +- if (unlikely(__pyx_t_2)) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":1017 +- * +- * if not isinstance(icc_blob, bytes): +- * raise PyMPVError("icc_blob should be a bytes instance") # <<<<<<<<<<<<<< +- * val.data = icc_blob +- * val.size = len(icc_blob) +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1017, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); +- } +- } +- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_icc_blob_should_be_a_bytes_insta) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_icc_blob_should_be_a_bytes_insta); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1017, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_Raise(__pyx_t_3, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(0, 1017, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":1016 +- * int err +- * +- * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< +- * raise PyMPVError("icc_blob should be a bytes instance") +- * val.data = icc_blob +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1018 +- * if not isinstance(icc_blob, bytes): +- * raise PyMPVError("icc_blob should be a bytes instance") +- * val.data = icc_blob # <<<<<<<<<<<<<< +- * val.size = len(icc_blob) +- * +- */ +- __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_icc_blob); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1018, __pyx_L1_error) +- __pyx_v_val.data = ((void *)((char *)__pyx_t_6)); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1019 +- * raise PyMPVError("icc_blob should be a bytes instance") +- * val.data = icc_blob +- * val.size = len(icc_blob) # <<<<<<<<<<<<<< +- * +- * param.type = MPV_RENDER_PARAM_ICC_PROFILE ++ * def close(self): ++ * if not self.inited: # <<<<<<<<<<<<<< ++ * return ++ * with nogil: + */ +- __pyx_t_7 = PyObject_Length(__pyx_v_icc_blob); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1019, __pyx_L1_error) +- __pyx_v_val.size = __pyx_t_7; ++ __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); ++ if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1021 +- * val.size = len(icc_blob) +- * +- * param.type = MPV_RENDER_PARAM_ICC_PROFILE # <<<<<<<<<<<<<< +- * param.data = &val +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":1114 ++ * def close(self): ++ * if not self.inited: ++ * return # <<<<<<<<<<<<<< ++ * with nogil: ++ * mpv_render_context_free(self._ctx) + */ +- __pyx_v_param.type = MPV_RENDER_PARAM_ICC_PROFILE; ++ __Pyx_XDECREF(__pyx_r); ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1022 +- * +- * param.type = MPV_RENDER_PARAM_ICC_PROFILE +- * param.data = &val # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1113 + * ++ * def close(self): ++ * if not self.inited: # <<<<<<<<<<<<<< ++ * return + * with nogil: + */ +- __pyx_v_param.data = (&__pyx_v_val); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":1024 +- * param.data = &val +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":1115 ++ * if not self.inited: ++ * return + * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_render_context_set_parameter(self._ctx, param) +- * return err ++ * mpv_render_context_free(self._ctx) ++ * self.inited = False + */ + { + #ifdef WITH_THREAD +@@ -19899,22 +19014,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1025 +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":1116 ++ * return + * with nogil: +- * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< +- * return err ++ * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< ++ * self.inited = False + * + */ +- __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); ++ mpv_render_context_free(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1024 +- * param.data = &val +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":1115 ++ * if not self.inited: ++ * return + * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_render_context_set_parameter(self._ctx, param) +- * return err ++ * mpv_render_context_free(self._ctx) ++ * self.inited = False + */ + /*finally:*/ { + /*normal exit:*/{ +@@ -19928,1485 +19043,1505 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1026 ++ /* "vidcutter/libs/pympv/mpv.pyx":1117 + * with nogil: +- * err = mpv_render_context_set_parameter(self._ctx, param) +- * return err # <<<<<<<<<<<<<< ++ * mpv_render_context_free(self._ctx) ++ * self.inited = False # <<<<<<<<<<<<<< + * +- * @_errors ++ * def __dealloc__(self): + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1026, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ __pyx_v_self->inited = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1010 ++ /* "vidcutter/libs/pympv/mpv.pyx":1112 ++ * self.inited = False + * +- * @_errors +- * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< +- * cdef: +- * mpv_render_param param ++ * def close(self): # <<<<<<<<<<<<<< ++ * if not self.inited: ++ * return + */ + + /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.set_icc_profile", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1029 ++/* "vidcutter/libs/pympv/mpv.pyx":1119 ++ * self.inited = False ++ * ++ * def __dealloc__(self): # <<<<<<<<<<<<<< ++ * self.close() + * +- * @_errors +- * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< +- * cdef: +- * mpv_render_param param + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light(PyObject *__pyx_v_self, PyObject *__pyx_v_lux); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light(PyObject *__pyx_v_self, PyObject *__pyx_v_lux) { +- PyObject *__pyx_r = 0; ++static void __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(PyObject *__pyx_v_self); /*proto*/ ++static void __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_ambient_light (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_light(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_lux)); ++ __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); ++ __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +- return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_light(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_lux) { +- struct mpv_render_param __pyx_v_param; +- int __pyx_v_val; +- int __pyx_v_err; +- PyObject *__pyx_r = NULL; ++static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { + __Pyx_RefNannyDeclarations +- int __pyx_t_1; ++ PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("set_ambient_light", 0); ++ __Pyx_RefNannySetupContext("__dealloc__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1035 +- * int err ++ /* "vidcutter/libs/pympv/mpv.pyx":1120 + * +- * val = lux # <<<<<<<<<<<<<< +- * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT +- * param.data = &val ++ * def __dealloc__(self): ++ * self.close() # <<<<<<<<<<<<<< ++ * ++ * cdef class OpenGLRenderContext(RenderContext): + */ +- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_lux); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1035, __pyx_L1_error) +- __pyx_v_val = __pyx_t_1; ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1120, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1120, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1036 ++ /* "vidcutter/libs/pympv/mpv.pyx":1119 ++ * self.inited = False + * +- * val = lux +- * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT # <<<<<<<<<<<<<< +- * param.data = &val ++ * def __dealloc__(self): # <<<<<<<<<<<<<< ++ * self.close() + * + */ +- __pyx_v_param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT; + +- /* "vidcutter/libs/pympv/mpv.pyx":1037 +- * val = lux +- * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT +- * param.data = &val # <<<<<<<<<<<<<< +- * +- * with nogil: +- */ +- __pyx_v_param.data = (&__pyx_v_val); ++ /* function exit code */ ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv.RenderContext.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __pyx_L0:; ++ __Pyx_RefNannyFinishContext(); ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":1039 +- * param.data = &val +- * +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_render_context_set_parameter(self._ctx, param) +- * return err ++/* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1040 +- * +- * with nogil: +- * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< +- * return err +- * +- */ +- __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); +- } ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_22__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); + +- /* "vidcutter/libs/pympv/mpv.pyx":1039 +- * param.data = &val +- * +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_render_context_set_parameter(self._ctx, param) +- * return err +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":1041 +- * with nogil: +- * err = mpv_render_context_set_parameter(self._ctx, param) +- * return err # <<<<<<<<<<<<<< +- * +- * def get_next_frame_info(self): ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__reduce_cython__", 0); ++ ++ /* "(tree fragment)":2 ++ * def __reduce_cython__(self): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_r = __pyx_t_2; +- __pyx_t_2 = 0; +- goto __pyx_L0; ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __PYX_ERR(1, 2, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1029 +- * +- * @_errors +- * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< +- * cdef: +- * mpv_render_param param ++ /* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.set_ambient_light", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; +- __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1043 +- * return err +- * +- * def get_next_frame_info(self): # <<<<<<<<<<<<<< +- * cdef: +- * mpv_render_frame_info info ++/* "(tree fragment)":3 ++ * def __reduce_cython__(self): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("get_next_frame_info (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_info(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_info(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { +- struct mpv_render_frame_info __pyx_v_info; +- struct mpv_render_param __pyx_v_param; +- int __pyx_v_err; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; ++ PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("get_next_frame_info", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1048 +- * mpv_render_param param +- * +- * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO # <<<<<<<<<<<<<< +- * param.data = &info +- * with nogil: +- */ +- __pyx_v_param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO; +- +- /* "vidcutter/libs/pympv/mpv.pyx":1049 +- * +- * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO +- * param.data = &info # <<<<<<<<<<<<<< +- * with nogil: +- * err = mpv_render_context_get_info(self._ctx, param) +- */ +- __pyx_v_param.data = (&__pyx_v_info); ++ __Pyx_RefNannySetupContext("__setstate_cython__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1050 +- * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO +- * param.data = &info +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_render_context_get_info(self._ctx, param) +- * if err < 0: ++ /* "(tree fragment)":4 ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __PYX_ERR(1, 4, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1051 +- * param.data = &info +- * with nogil: +- * err = mpv_render_context_get_info(self._ctx, param) # <<<<<<<<<<<<<< +- * if err < 0: +- * raise MPVError(err) ++ /* "(tree fragment)":3 ++ * def __reduce_cython__(self): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") + */ +- __pyx_v_err = mpv_render_context_get_info(__pyx_v_self->_ctx, __pyx_v_param); +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":1050 +- * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO +- * param.data = &info +- * with nogil: # <<<<<<<<<<<<<< +- * err = mpv_render_context_get_info(self._ctx, param) +- * if err < 0: +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } ++ /* function exit code */ ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":1052 +- * with nogil: +- * err = mpv_render_context_get_info(self._ctx, param) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) ++/* "vidcutter/libs/pympv/mpv.pyx":1123 + * ++ * cdef class OpenGLRenderContext(RenderContext): ++ * def __init__(self, mpv, # <<<<<<<<<<<<<< ++ * get_proc_address, ++ * *args, **kwargs): + */ +- __pyx_t_1 = ((__pyx_v_err < 0) != 0); +- if (unlikely(__pyx_t_1)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1053 +- * err = mpv_render_context_get_info(self._ctx, param) +- * if err < 0: +- * raise MPVError(err) # <<<<<<<<<<<<<< +- * +- * return RenderFrameInfo()._from_struct(&info) +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1053, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } ++/* Python wrapper */ ++static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_mpv = 0; ++ PyObject *__pyx_v_get_proc_address = 0; ++ PyObject *__pyx_v_args = 0; ++ PyObject *__pyx_v_kwargs = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); ++ __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1; ++ __Pyx_GOTREF(__pyx_v_kwargs); ++ if (PyTuple_GET_SIZE(__pyx_args) > 2) { ++ __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args)); ++ if (unlikely(!__pyx_v_args)) { ++ __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; ++ __Pyx_RefNannyFinishContext(); ++ return -1; + } +- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_Raise(__pyx_t_2, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __PYX_ERR(0, 1053, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_v_args); ++ } else { ++ __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); ++ } ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_get_proc_address,0}; ++ PyObject* values[2] = {0,0}; ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ default: ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mpv)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_get_proc_address)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, 1); __PYX_ERR(0, 1123, __pyx_L3_error) ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2; ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 1123, __pyx_L3_error) ++ } ++ } else if (PyTuple_GET_SIZE(__pyx_args) < 2) { ++ goto __pyx_L5_argtuple_error; ++ } else { ++ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ } ++ __pyx_v_mpv = values[0]; ++ __pyx_v_get_proc_address = values[1]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1123, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; ++ __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return -1; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_get_proc_address, __pyx_v_args, __pyx_v_kwargs); + +- /* "vidcutter/libs/pympv/mpv.pyx":1052 +- * with nogil: +- * err = mpv_render_context_get_info(self._ctx, param) +- * if err < 0: # <<<<<<<<<<<<<< +- * raise MPVError(err) ++ /* function exit code */ ++ __Pyx_XDECREF(__pyx_v_args); ++ __Pyx_XDECREF(__pyx_v_kwargs); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static int __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self, PyObject *__pyx_v_mpv, PyObject *__pyx_v_get_proc_address, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { ++ PyObject *__pyx_v_init_params = NULL; ++ int __pyx_r; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__init__", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1127 ++ * *args, **kwargs): ++ * init_params = { ++ * "get_proc_address": get_proc_address # <<<<<<<<<<<<<< ++ * } ++ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, ++ */ ++ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1127, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_get_proc_address, __pyx_v_get_proc_address) < 0) __PYX_ERR(0, 1127, __pyx_L1_error) ++ __pyx_v_init_params = ((PyObject*)__pyx_t_1); ++ __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1129 ++ * "get_proc_address": get_proc_address ++ * } ++ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< ++ * init_params, *args, **kwargs) + * + */ +- } ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); + +- /* "vidcutter/libs/pympv/mpv.pyx":1055 +- * raise MPVError(err) ++ /* "vidcutter/libs/pympv/mpv.pyx":1130 ++ * } ++ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, ++ * init_params, *args, **kwargs) # <<<<<<<<<<<<<< + * +- * return RenderFrameInfo()._from_struct(&info) # <<<<<<<<<<<<<< ++ * class CallbackThread(Thread): ++ */ ++ __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_INCREF(((PyObject *)__pyx_v_self)); ++ __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); ++ PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self)); ++ __Pyx_INCREF(__pyx_v_mpv); ++ __Pyx_GIVEREF(__pyx_v_mpv); ++ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_mpv); ++ __Pyx_GIVEREF(__pyx_t_2); ++ PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); ++ __Pyx_INCREF(__pyx_v_init_params); ++ __Pyx_GIVEREF(__pyx_v_init_params); ++ PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_init_params); ++ __pyx_t_2 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1129 ++ * "get_proc_address": get_proc_address ++ * } ++ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< ++ * init_params, *args, **kwargs) + * +- * def set_update_callback(self, cb): + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error) ++ __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo *)((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2)->__pyx_vtab)->_from_struct(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2), (&__pyx_v_info)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1130 ++ * } ++ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, ++ * init_params, *args, **kwargs) # <<<<<<<<<<<<<< ++ * ++ * class CallbackThread(Thread): ++ */ ++ __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1129 ++ * "get_proc_address": get_proc_address ++ * } ++ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< ++ * init_params, *args, **kwargs) ++ * ++ */ ++ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_r = __pyx_t_3; +- __pyx_t_3 = 0; +- goto __pyx_L0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1043 +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":1123 + * +- * def get_next_frame_info(self): # <<<<<<<<<<<<<< +- * cdef: +- * mpv_render_frame_info info ++ * cdef class OpenGLRenderContext(RenderContext): ++ * def __init__(self, mpv, # <<<<<<<<<<<<<< ++ * get_proc_address, ++ * *args, **kwargs): + */ + + /* function exit code */ ++ __pyx_r = 0; ++ goto __pyx_L0; + __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.get_next_frame_info", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = -1; + __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_XDECREF(__pyx_v_init_params); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1057 +- * return RenderFrameInfo()._from_struct(&info) +- * +- * def set_update_callback(self, cb): # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) ++/* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_update_callback (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_cb)); ++ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_2__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_cb) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set_update_callback", 0); ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__reduce_cython__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1058 +- * +- * def set_update_callback(self, cb): +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) +- * self.update_cb = cb ++ /* "(tree fragment)":2 ++ * def __reduce_cython__(self): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __PYX_ERR(1, 2, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1059 +- * def set_update_callback(self, cb): +- * with nogil: +- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) # <<<<<<<<<<<<<< +- * self.update_cb = cb +- * +- */ +- mpv_render_context_set_update_callback(__pyx_v_self->_ctx, (&__pyx_f_9vidcutter_4libs_3mpv__c_updatecb), ((void *)__pyx_v_cb)); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1058 +- * +- * def set_update_callback(self, cb): +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) +- * self.update_cb = cb +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1060 +- * with nogil: +- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) +- * self.update_cb = cb # <<<<<<<<<<<<<< +- * +- * def update(self): +- */ +- __Pyx_INCREF(__pyx_v_cb); +- __Pyx_GIVEREF(__pyx_v_cb); +- __Pyx_GOTREF(__pyx_v_self->update_cb); +- __Pyx_DECREF(__pyx_v_self->update_cb); +- __pyx_v_self->update_cb = __pyx_v_cb; +- +- /* "vidcutter/libs/pympv/mpv.pyx":1057 +- * return RenderFrameInfo()._from_struct(&info) +- * +- * def set_update_callback(self, cb): # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) ++ /* "(tree fragment)":1 ++ * def __reduce_cython__(self): # <<<<<<<<<<<<<< ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1062 +- * self.update_cb = cb +- * +- * def update(self): # <<<<<<<<<<<<<< +- * cdef uint64_t ret +- * with nogil: ++/* "(tree fragment)":3 ++ * def __reduce_cython__(self): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("update (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { +- uint64_t __pyx_v_ret; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("update", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1064 +- * def update(self): +- * cdef uint64_t ret +- * with nogil: # <<<<<<<<<<<<<< +- * ret = mpv_render_context_update(self._ctx) +- * return ret +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":1065 +- * cdef uint64_t ret +- * with nogil: +- * ret = mpv_render_context_update(self._ctx) # <<<<<<<<<<<<<< +- * return ret +- * +- */ +- __pyx_v_ret = mpv_render_context_update(__pyx_v_self->_ctx); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1064 +- * def update(self): +- * cdef uint64_t ret +- * with nogil: # <<<<<<<<<<<<<< +- * ret = mpv_render_context_update(self._ctx) +- * return ret +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; +- } +- __pyx_L5:; +- } +- } ++ __Pyx_RefNannySetupContext("__setstate_cython__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1066 +- * with nogil: +- * ret = mpv_render_context_update(self._ctx) +- * return ret # <<<<<<<<<<<<<< +- * +- * @_errors ++ /* "(tree fragment)":4 ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ __Pyx_Raise(__pyx_t_1, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __PYX_ERR(1, 4, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1062 +- * self.update_cb = cb +- * +- * def update(self): # <<<<<<<<<<<<<< +- * cdef uint64_t ret +- * with nogil: ++ /* "(tree fragment)":3 ++ * def __reduce_cython__(self): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.update", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; +- __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1069 ++/* "vidcutter/libs/pympv/mpv.pyx":1133 + * +- * @_errors +- * def render(self, # <<<<<<<<<<<<<< +- * opengl_fbo=None, +- * flip_y=False, ++ * class CallbackThread(Thread): ++ * def __init__(self): # <<<<<<<<<<<<<< ++ * Thread.__init__(self) ++ * self.daemon = True + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_opengl_fbo = 0; +- PyObject *__pyx_v_flip_y = 0; +- PyObject *__pyx_v_depth = 0; +- PyObject *__pyx_v_block_for_target_time = 0; +- PyObject *__pyx_v_skip_rendering = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, METH_O, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("render (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_opengl_fbo,&__pyx_n_s_flip_y,&__pyx_n_s_depth,&__pyx_n_s_block_for_target_time,&__pyx_n_s_skip_rendering,0}; +- PyObject* values[5] = {0,0,0,0,0}; ++ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(__pyx_self, ((PyObject *)__pyx_v_self)); + +- /* "vidcutter/libs/pympv/mpv.pyx":1070 +- * @_errors +- * def render(self, +- * opengl_fbo=None, # <<<<<<<<<<<<<< +- * flip_y=False, +- * depth=None, +- */ +- values[0] = ((PyObject *)Py_None); ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":1071 +- * def render(self, +- * opengl_fbo=None, +- * flip_y=False, # <<<<<<<<<<<<<< +- * depth=None, +- * block_for_target_time=True, +- */ +- values[1] = ((PyObject *)Py_False); ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__init__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1072 +- * opengl_fbo=None, +- * flip_y=False, +- * depth=None, # <<<<<<<<<<<<<< +- * block_for_target_time=True, +- * skip_rendering=False): ++ /* "vidcutter/libs/pympv/mpv.pyx":1134 ++ * class CallbackThread(Thread): ++ * def __init__(self): ++ * Thread.__init__(self) # <<<<<<<<<<<<<< ++ * self.daemon = True ++ * self.lock = Semaphore() + */ +- values[2] = ((PyObject *)Py_None); ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1134, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_2 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_2)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_2); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_self) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self); ++ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1073 +- * flip_y=False, +- * depth=None, +- * block_for_target_time=True, # <<<<<<<<<<<<<< +- * skip_rendering=False): +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":1135 ++ * def __init__(self): ++ * Thread.__init__(self) ++ * self.daemon = True # <<<<<<<<<<<<<< ++ * self.lock = Semaphore() ++ * self.lock.acquire(True) + */ +- values[3] = ((PyObject *)Py_True); ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1074 +- * depth=None, +- * block_for_target_time=True, +- * skip_rendering=False): # <<<<<<<<<<<<<< +- * +- * cdef: ++ /* "vidcutter/libs/pympv/mpv.pyx":1136 ++ * Thread.__init__(self) ++ * self.daemon = True ++ * self.lock = Semaphore() # <<<<<<<<<<<<<< ++ * self.lock.acquire(True) ++ * self.callback = None + */ +- values[4] = ((PyObject *)Py_False); +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); +- CYTHON_FALLTHROUGH; +- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); +- CYTHON_FALLTHROUGH; +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_opengl_fbo); +- if (value) { values[0] = value; kw_args--; } +- } +- CYTHON_FALLTHROUGH; +- case 1: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flip_y); +- if (value) { values[1] = value; kw_args--; } +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth); +- if (value) { values[2] = value; kw_args--; } +- } +- CYTHON_FALLTHROUGH; +- case 3: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block_for_target_time); +- if (value) { values[3] = value; kw_args--; } +- } +- CYTHON_FALLTHROUGH; +- case 4: +- if (kw_args > 0) { +- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_skip_rendering); +- if (value) { values[4] = value; kw_args--; } +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(0, 1069, __pyx_L3_error) +- } +- } else { +- switch (PyTuple_GET_SIZE(__pyx_args)) { +- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); +- CYTHON_FALLTHROUGH; +- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); +- CYTHON_FALLTHROUGH; +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } ++ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1136, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_2 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_2)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_2); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); + } +- __pyx_v_opengl_fbo = values[0]; +- __pyx_v_flip_y = values[1]; +- __pyx_v_depth = values[2]; +- __pyx_v_block_for_target_time = values[3]; +- __pyx_v_skip_rendering = values[4]; + } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("render", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1069, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1136, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lock, __pyx_t_1) < 0) __PYX_ERR(0, 1136, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1137 ++ * self.daemon = True ++ * self.lock = Semaphore() ++ * self.lock.acquire(True) # <<<<<<<<<<<<<< ++ * self.callback = None ++ * self.isshutdown = False ++ */ ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_2, Py_True); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1137, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1138 ++ * self.lock = Semaphore() ++ * self.lock.acquire(True) ++ * self.callback = None # <<<<<<<<<<<<<< ++ * self.isshutdown = False ++ * ++ */ ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1138, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1139 ++ * self.lock.acquire(True) ++ * self.callback = None ++ * self.isshutdown = False # <<<<<<<<<<<<<< ++ * ++ * def shutdown(self): ++ */ ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_False) < 0) __PYX_ERR(0, 1139, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1133 ++ * ++ * class CallbackThread(Thread): ++ * def __init__(self): # <<<<<<<<<<<<<< ++ * Thread.__init__(self) ++ * self.daemon = True ++ */ ++ ++ /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_opengl_fbo, __pyx_v_flip_y, __pyx_v_depth, __pyx_v_block_for_target_time, __pyx_v_skip_rendering); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":1069 ++/* "vidcutter/libs/pympv/mpv.pyx":1141 ++ * self.isshutdown = False + * +- * @_errors +- * def render(self, # <<<<<<<<<<<<<< +- * opengl_fbo=None, +- * flip_y=False, ++ * def shutdown(self): # <<<<<<<<<<<<<< ++ * self.isshutdown = True ++ * self.callback = None + */ + ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown = {"shutdown", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, METH_O, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown(PyObject *__pyx_self, PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("shutdown (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(__pyx_self, ((PyObject *)__pyx_v_self)); ++ + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_opengl_fbo, PyObject *__pyx_v_flip_y, PyObject *__pyx_v_depth, PyObject *__pyx_v_block_for_target_time, PyObject *__pyx_v_skip_rendering) { +- struct mpv_opengl_fbo __pyx_v_fbo; +- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_params = NULL; +- int __pyx_v_ret; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_t_5; +- int __pyx_t_6; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("render", 0); ++ __Pyx_RefNannySetupContext("shutdown", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1079 +- * mpv_opengl_fbo fbo +- * +- * params = _RenderParams() # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1142 + * +- * if opengl_fbo: ++ * def shutdown(self): ++ * self.isshutdown = True # <<<<<<<<<<<<<< ++ * self.callback = None ++ * self.lock.release() + */ +- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); +- __pyx_t_1 = 0; ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_True) < 0) __PYX_ERR(0, 1142, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1081 +- * params = _RenderParams() ++ /* "vidcutter/libs/pympv/mpv.pyx":1143 ++ * def shutdown(self): ++ * self.isshutdown = True ++ * self.callback = None # <<<<<<<<<<<<<< ++ * self.lock.release() + * +- * if opengl_fbo: # <<<<<<<<<<<<<< +- * memset(&fbo, 0, sizeof(fbo)) +- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 + */ +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_opengl_fbo); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1081, __pyx_L1_error) +- if (__pyx_t_2) { ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1143, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1082 ++ /* "vidcutter/libs/pympv/mpv.pyx":1144 ++ * self.isshutdown = True ++ * self.callback = None ++ * self.lock.release() # <<<<<<<<<<<<<< + * +- * if opengl_fbo: +- * memset(&fbo, 0, sizeof(fbo)) # <<<<<<<<<<<<<< +- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 +- * fbo.w = opengl_fbo["w"] +- */ +- (void)(memset((&__pyx_v_fbo), 0, (sizeof(__pyx_v_fbo)))); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1083 +- * if opengl_fbo: +- * memset(&fbo, 0, sizeof(fbo)) +- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< +- * fbo.w = opengl_fbo["w"] +- * fbo.h = opengl_fbo["h"] ++ * def call(self): + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1083, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1083, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1083, __pyx_L1_error) +- if (!__pyx_t_2) { +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- } else { +- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1083, __pyx_L1_error) +- __pyx_t_3 = __pyx_t_5; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- goto __pyx_L4_bool_binop_done; ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1144, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1144, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_2 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_2)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_2); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); + } +- __pyx_t_3 = 0; +- __pyx_L4_bool_binop_done:; +- __pyx_v_fbo.fbo = __pyx_t_3; +- +- /* "vidcutter/libs/pympv/mpv.pyx":1084 +- * memset(&fbo, 0, sizeof(fbo)) +- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 +- * fbo.w = opengl_fbo["w"] # <<<<<<<<<<<<<< +- * fbo.h = opengl_fbo["h"] +- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 +- */ +- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1084, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1084, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_v_fbo.w = __pyx_t_3; +- +- /* "vidcutter/libs/pympv/mpv.pyx":1085 +- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 +- * fbo.w = opengl_fbo["w"] +- * fbo.h = opengl_fbo["h"] # <<<<<<<<<<<<<< +- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) +- */ +- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1085, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1085, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_v_fbo.h = __pyx_t_3; ++ } ++ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1144, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1086 +- * fbo.w = opengl_fbo["w"] +- * fbo.h = opengl_fbo["h"] +- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) +- * if flip_y: ++ /* "vidcutter/libs/pympv/mpv.pyx":1141 ++ * self.isshutdown = False ++ * ++ * def shutdown(self): # <<<<<<<<<<<<<< ++ * self.isshutdown = True ++ * self.callback = None + */ +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1086, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error) +- if (!__pyx_t_2) { +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- } else { +- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1086, __pyx_L1_error) +- __pyx_t_3 = __pyx_t_5; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- goto __pyx_L6_bool_binop_done; +- } +- __pyx_t_3 = 0; +- __pyx_L6_bool_binop_done:; +- __pyx_v_fbo.internal_format = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":1087 +- * fbo.h = opengl_fbo["h"] +- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) # <<<<<<<<<<<<<< +- * if flip_y: +- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) +- */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_FBO, (&__pyx_v_fbo), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":1081 +- * params = _RenderParams() ++/* "vidcutter/libs/pympv/mpv.pyx":1146 ++ * self.lock.release() ++ * ++ * def call(self): # <<<<<<<<<<<<<< ++ * self.lock.release() + * +- * if opengl_fbo: # <<<<<<<<<<<<<< +- * memset(&fbo, 0, sizeof(fbo)) +- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 + */ +- } + +- /* "vidcutter/libs/pympv/mpv.pyx":1088 +- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) +- * if flip_y: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) +- * if depth is not None: +- */ +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_flip_y); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1088, __pyx_L1_error) +- if (__pyx_t_2) { ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call = {"call", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call, METH_O, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call(PyObject *__pyx_self, PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("call (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(__pyx_self, ((PyObject *)__pyx_v_self)); + +- /* "vidcutter/libs/pympv/mpv.pyx":1089 +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) +- * if flip_y: +- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) # <<<<<<<<<<<<<< +- * if depth is not None: +- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) +- */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_FLIP_Y, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":1088 +- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) +- * if flip_y: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) +- * if depth is not None: +- */ +- } ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("call", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1090 +- * if flip_y: +- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) +- * if depth is not None: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) +- * if not block_for_target_time: ++ /* "vidcutter/libs/pympv/mpv.pyx":1147 ++ * ++ * def call(self): ++ * self.lock.release() # <<<<<<<<<<<<<< ++ * ++ * def set(self, callback): + */ +- __pyx_t_2 = (__pyx_v_depth != Py_None); +- __pyx_t_6 = (__pyx_t_2 != 0); +- if (__pyx_t_6) { ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1147, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_2 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { ++ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); ++ if (likely(__pyx_t_2)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_2); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_3, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1091 +- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) +- * if depth is not None: +- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) # <<<<<<<<<<<<<< +- * if not block_for_target_time: +- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) ++ /* "vidcutter/libs/pympv/mpv.pyx":1146 ++ * self.lock.release() ++ * ++ * def call(self): # <<<<<<<<<<<<<< ++ * self.lock.release() ++ * + */ +- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_depth); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1091, __pyx_L1_error) +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_DEPTH, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1090 +- * if flip_y: +- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) +- * if depth is not None: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) +- * if not block_for_target_time: +- */ +- } ++ /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.call", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":1092 +- * if depth is not None: +- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) +- * if not block_for_target_time: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) +- * if skip_rendering: ++/* "vidcutter/libs/pympv/mpv.pyx":1149 ++ * self.lock.release() ++ * ++ * def set(self, callback): # <<<<<<<<<<<<<< ++ * self.callback = callback ++ * + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_block_for_target_time); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1092, __pyx_L1_error) +- __pyx_t_2 = ((!__pyx_t_6) != 0); +- if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1093 +- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) +- * if not block_for_target_time: +- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) # <<<<<<<<<<<<<< +- * if skip_rendering: +- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) +- */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":1092 +- * if depth is not None: +- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) +- * if not block_for_target_time: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) +- * if skip_rendering: +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1094 +- * if not block_for_target_time: +- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) +- * if skip_rendering: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) +- * +- */ +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skip_rendering); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error) +- if (__pyx_t_2) { +- +- /* "vidcutter/libs/pympv/mpv.pyx":1095 +- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) +- * if skip_rendering: +- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) # <<<<<<<<<<<<<< +- * +- * with nogil: +- */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_SKIP_RENDERING, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1095, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":1094 +- * if not block_for_target_time: +- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) +- * if skip_rendering: # <<<<<<<<<<<<<< +- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) +- * +- */ +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1097 +- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) +- * +- * with nogil: # <<<<<<<<<<<<<< +- * ret = mpv_render_context_render(self._ctx, params.params) +- * return ret +- */ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v_self = 0; ++ PyObject *__pyx_v_callback = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("set (wrapper)", 0); + { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":1098 +- * +- * with nogil: +- * ret = mpv_render_context_render(self._ctx, params.params) # <<<<<<<<<<<<<< +- * return ret +- * +- */ +- __pyx_v_ret = mpv_render_context_render(__pyx_v_self->_ctx, __pyx_v_params->params); ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_callback,0}; ++ PyObject* values[2] = {0,0}; ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; + } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1097 +- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) +- * +- * with nogil: # <<<<<<<<<<<<<< +- * ret = mpv_render_context_render(self._ctx, params.params) +- * return ret +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L14; ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1149, __pyx_L3_error) + } +- __pyx_L14:; + } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1149, __pyx_L3_error) ++ } ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { ++ goto __pyx_L5_argtuple_error; ++ } else { ++ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ } ++ __pyx_v_self = values[0]; ++ __pyx_v_callback = values[1]; + } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1149, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(__pyx_self, __pyx_v_self, __pyx_v_callback); + +- /* "vidcutter/libs/pympv/mpv.pyx":1099 +- * with nogil: +- * ret = mpv_render_context_render(self._ctx, params.params) +- * return ret # <<<<<<<<<<<<<< ++ /* function exit code */ ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("set", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1150 + * +- * def report_swap(self): ++ * def set(self, callback): ++ * self.callback = callback # <<<<<<<<<<<<<< ++ * ++ * def run(self): + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_r = __pyx_t_1; +- __pyx_t_1 = 0; +- goto __pyx_L0; ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 1150, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1069 ++ /* "vidcutter/libs/pympv/mpv.pyx":1149 ++ * self.lock.release() ++ * ++ * def set(self, callback): # <<<<<<<<<<<<<< ++ * self.callback = callback + * +- * @_errors +- * def render(self, # <<<<<<<<<<<<<< +- * opengl_fbo=None, +- * flip_y=False, + */ + + /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF((PyObject *)__pyx_v_params); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1101 +- * return ret ++/* "vidcutter/libs/pympv/mpv.pyx":1152 ++ * self.callback = callback + * +- * def report_swap(self): # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_render_context_report_swap(self._ctx) ++ * def run(self): # <<<<<<<<<<<<<< ++ * while not self.isshutdown: ++ * self.lock.acquire(True) + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run = {"run", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run, METH_O, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("report_swap (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("run (wrapper)", 0); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("report_swap", 0); ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_2; ++ int __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("run", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1102 +- * +- * def report_swap(self): +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_render_context_report_swap(self._ctx) ++ /* "vidcutter/libs/pympv/mpv.pyx":1153 + * ++ * def run(self): ++ * while not self.isshutdown: # <<<<<<<<<<<<<< ++ * self.lock.acquire(True) ++ * self.mpv_callback(self.callback) if self.callback else None + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ while (1) { ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1153, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_3 = ((!__pyx_t_2) != 0); ++ if (!__pyx_t_3) break; + +- /* "vidcutter/libs/pympv/mpv.pyx":1103 +- * def report_swap(self): +- * with nogil: +- * mpv_render_context_report_swap(self._ctx) # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1154 ++ * def run(self): ++ * while not self.isshutdown: ++ * self.lock.acquire(True) # <<<<<<<<<<<<<< ++ * self.mpv_callback(self.callback) if self.callback else None + * +- * def free(self): + */ +- mpv_render_context_report_swap(__pyx_v_self->_ctx); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1102 +- * +- * def report_swap(self): +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_render_context_report_swap(self._ctx) ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_acquire); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1154, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_5, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_5, Py_True); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1155 ++ * while not self.isshutdown: ++ * self.lock.acquire(True) ++ * self.mpv_callback(self.callback) if self.callback else None # <<<<<<<<<<<<<< + * ++ * def mpv_callback(self, callback): + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L5; ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ if (__pyx_t_3) { ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mpv_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_7 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { ++ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); ++ if (likely(__pyx_t_7)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); ++ __Pyx_INCREF(__pyx_t_7); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_4, function); + } +- __pyx_L5:; + } ++ __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_1 = __pyx_t_5; ++ __pyx_t_5 = 0; ++ } else { ++ __Pyx_INCREF(Py_None); ++ __pyx_t_1 = Py_None; ++ } ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1101 +- * return ret ++ /* "vidcutter/libs/pympv/mpv.pyx":1152 ++ * self.callback = callback + * +- * def report_swap(self): # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_render_context_report_swap(self._ctx) ++ * def run(self): # <<<<<<<<<<<<<< ++ * while not self.isshutdown: ++ * self.lock.acquire(True) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.run", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; ++ __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1105 +- * mpv_render_context_report_swap(self._ctx) ++/* "vidcutter/libs/pympv/mpv.pyx":1157 ++ * self.mpv_callback(self.callback) if self.callback else None + * +- * def free(self): # <<<<<<<<<<<<<< +- * if not self.inited: +- * return ++ * def mpv_callback(self, callback): # <<<<<<<<<<<<<< ++ * try: ++ * callback() + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback = {"mpv_callback", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ CYTHON_UNUSED PyObject *__pyx_v_self = 0; ++ PyObject *__pyx_v_callback = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("free (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("mpv_callback (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_callback,0}; ++ PyObject* values[2] = {0,0}; ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, 1); __PYX_ERR(0, 1157, __pyx_L3_error) ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mpv_callback") < 0)) __PYX_ERR(0, 1157, __pyx_L3_error) ++ } ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { ++ goto __pyx_L5_argtuple_error; ++ } else { ++ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ } ++ __pyx_v_self = values[0]; ++ __pyx_v_callback = values[1]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1157, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(__pyx_self, __pyx_v_self, __pyx_v_callback); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { ++ PyObject *__pyx_v_e = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- __Pyx_RefNannySetupContext("free", 0); ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ PyObject *__pyx_t_6 = NULL; ++ int __pyx_t_7; ++ PyObject *__pyx_t_8 = NULL; ++ PyObject *__pyx_t_9 = NULL; ++ PyObject *__pyx_t_10 = NULL; ++ PyObject *__pyx_t_11 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("mpv_callback", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1106 ++ /* "vidcutter/libs/pympv/mpv.pyx":1158 + * +- * def free(self): +- * if not self.inited: # <<<<<<<<<<<<<< +- * return +- * with nogil: ++ * def mpv_callback(self, callback): ++ * try: # <<<<<<<<<<<<<< ++ * callback() ++ * except Exception as e: + */ +- __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); +- if (__pyx_t_1) { ++ { ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); ++ __Pyx_XGOTREF(__pyx_t_1); ++ __Pyx_XGOTREF(__pyx_t_2); ++ __Pyx_XGOTREF(__pyx_t_3); ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1107 +- * def free(self): +- * if not self.inited: +- * return # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_render_context_free(self._ctx) ++ /* "vidcutter/libs/pympv/mpv.pyx":1159 ++ * def mpv_callback(self, callback): ++ * try: ++ * callback() # <<<<<<<<<<<<<< ++ * except Exception as e: ++ * sys.stderr.write("pympv error during callback: %s\n" % e) + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; ++ __Pyx_INCREF(__pyx_v_callback); ++ __pyx_t_5 = __pyx_v_callback; __pyx_t_6 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { ++ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); ++ if (likely(__pyx_t_6)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); ++ __Pyx_INCREF(__pyx_t_6); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_5, function); ++ } ++ } ++ __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5); ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1159, __pyx_L3_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1106 ++ /* "vidcutter/libs/pympv/mpv.pyx":1158 + * +- * def free(self): +- * if not self.inited: # <<<<<<<<<<<<<< +- * return +- * with nogil: ++ * def mpv_callback(self, callback): ++ * try: # <<<<<<<<<<<<<< ++ * callback() ++ * except Exception as e: + */ +- } ++ } ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ goto __pyx_L8_try_end; ++ __pyx_L3_error:; ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1108 +- * if not self.inited: +- * return +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_render_context_free(self._ctx) +- * self.inited = False +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":1109 +- * return +- * with nogil: +- * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< +- * self.inited = False ++ /* "vidcutter/libs/pympv/mpv.pyx":1160 ++ * try: ++ * callback() ++ * except Exception as e: # <<<<<<<<<<<<<< ++ * sys.stderr.write("pympv error during callback: %s\n" % e) + * + */ +- mpv_render_context_free(__pyx_v_self->_ctx); +- } ++ __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); ++ if (__pyx_t_7) { ++ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 1160, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_5); ++ __pyx_v_e = __pyx_t_5; + +- /* "vidcutter/libs/pympv/mpv.pyx":1108 +- * if not self.inited: +- * return +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_render_context_free(self._ctx) +- * self.inited = False ++ /* "vidcutter/libs/pympv/mpv.pyx":1161 ++ * callback() ++ * except Exception as e: ++ * sys.stderr.write("pympv error during callback: %s\n" % e) # <<<<<<<<<<<<<< ++ * ++ * cdef void _c_callback(void* d) with gil: + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L6; ++ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_9); ++ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_stderr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_10); ++ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; ++ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_write); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_9); ++ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; ++ __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_pympv_error_during_callback_s, __pyx_v_e); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_10); ++ __pyx_t_11 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { ++ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); ++ if (likely(__pyx_t_11)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); ++ __Pyx_INCREF(__pyx_t_11); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_9, function); + } +- __pyx_L6:; + } +- } ++ __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); ++ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; ++ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; ++ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ __Pyx_GOTREF(__pyx_t_8); ++ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; ++ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ goto __pyx_L4_exception_handled; ++ } ++ goto __pyx_L5_except_error; ++ __pyx_L5_except_error:; + +- /* "vidcutter/libs/pympv/mpv.pyx":1110 +- * with nogil: +- * mpv_render_context_free(self._ctx) +- * self.inited = False # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":1158 + * +- * def close(self): ++ * def mpv_callback(self, callback): ++ * try: # <<<<<<<<<<<<<< ++ * callback() ++ * except Exception as e: + */ +- __pyx_v_self->inited = 0; ++ __Pyx_XGIVEREF(__pyx_t_1); ++ __Pyx_XGIVEREF(__pyx_t_2); ++ __Pyx_XGIVEREF(__pyx_t_3); ++ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); ++ goto __pyx_L1_error; ++ __pyx_L4_exception_handled:; ++ __Pyx_XGIVEREF(__pyx_t_1); ++ __Pyx_XGIVEREF(__pyx_t_2); ++ __Pyx_XGIVEREF(__pyx_t_3); ++ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); ++ __pyx_L8_try_end:; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":1105 +- * mpv_render_context_report_swap(self._ctx) ++ /* "vidcutter/libs/pympv/mpv.pyx":1157 ++ * self.mpv_callback(self.callback) if self.callback else None + * +- * def free(self): # <<<<<<<<<<<<<< +- * if not self.inited: +- * return ++ * def mpv_callback(self, callback): # <<<<<<<<<<<<<< ++ * try: ++ * callback() + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_XDECREF(__pyx_t_9); ++ __Pyx_XDECREF(__pyx_t_10); ++ __Pyx_XDECREF(__pyx_t_11); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_e); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1112 +- * self.inited = False ++/* "vidcutter/libs/pympv/mpv.pyx":1163 ++ * sys.stderr.write("pympv error during callback: %s\n" % e) + * +- * def close(self): # <<<<<<<<<<<<<< +- * if not self.inited: +- * return ++ * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< ++ * cdef uint64_t name = d ++ * callback = _callbacks.get(name) + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("close (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { +- PyObject *__pyx_r = NULL; ++static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { ++ uint64_t __pyx_v_name; ++ PyObject *__pyx_v_callback = NULL; + __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- __Pyx_RefNannySetupContext("close", 0); ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ #ifdef WITH_THREAD ++ PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); ++ #endif ++ __Pyx_RefNannySetupContext("_c_callback", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1113 ++ /* "vidcutter/libs/pympv/mpv.pyx":1164 + * +- * def close(self): +- * if not self.inited: # <<<<<<<<<<<<<< +- * return +- * with nogil: ++ * cdef void _c_callback(void* d) with gil: ++ * cdef uint64_t name = d # <<<<<<<<<<<<<< ++ * callback = _callbacks.get(name) ++ * callback.call() + */ +- __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); +- if (__pyx_t_1) { ++ __pyx_v_name = ((uint64_t)__pyx_v_d); + +- /* "vidcutter/libs/pympv/mpv.pyx":1114 +- * def close(self): +- * if not self.inited: +- * return # <<<<<<<<<<<<<< +- * with nogil: +- * mpv_render_context_free(self._ctx) ++ /* "vidcutter/libs/pympv/mpv.pyx":1165 ++ * cdef void _c_callback(void* d) with gil: ++ * cdef uint64_t name = d ++ * callback = _callbacks.get(name) # <<<<<<<<<<<<<< ++ * callback.call() + */ +- __Pyx_XDECREF(__pyx_r); +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1165, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1165, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v_callback = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1113 +- * +- * def close(self): +- * if not self.inited: # <<<<<<<<<<<<<< +- * return +- * with nogil: ++ /* "vidcutter/libs/pympv/mpv.pyx":1166 ++ * cdef uint64_t name = d ++ * callback = _callbacks.get(name) ++ * callback.call() # <<<<<<<<<<<<<< + */ ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_callback, __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1166, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_3 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_3)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } + } ++ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1115 +- * if not self.inited: +- * return +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_render_context_free(self._ctx) +- * self.inited = False +- */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { +- +- /* "vidcutter/libs/pympv/mpv.pyx":1116 +- * return +- * with nogil: +- * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< +- * self.inited = False +- * +- */ +- mpv_render_context_free(__pyx_v_self->_ctx); +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1115 +- * if not self.inited: +- * return +- * with nogil: # <<<<<<<<<<<<<< +- * mpv_render_context_free(self._ctx) +- * self.inited = False +- */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L6; +- } +- __pyx_L6:; +- } +- } +- +- /* "vidcutter/libs/pympv/mpv.pyx":1117 +- * with nogil: +- * mpv_render_context_free(self._ctx) +- * self.inited = False # <<<<<<<<<<<<<< +- * +- * def __dealloc__(self): +- */ +- __pyx_v_self->inited = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":1112 +- * self.inited = False +- * +- * def close(self): # <<<<<<<<<<<<<< +- * if not self.inited: +- * return +- */ +- +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":1119 +- * self.inited = False +- * +- * def __dealloc__(self): # <<<<<<<<<<<<<< +- * self.close() +- * +- */ +- +-/* Python wrapper */ +-static void __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(PyObject *__pyx_v_self); /*proto*/ +-static void __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(PyObject *__pyx_v_self) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); +- __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +-} +- +-static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__dealloc__", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1120 +- * +- * def __dealloc__(self): +- * self.close() # <<<<<<<<<<<<<< +- * +- * cdef class OpenGLRenderContext(RenderContext): +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1120, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1120, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":1119 +- * self.inited = False +- * +- * def __dealloc__(self): # <<<<<<<<<<<<<< +- * self.close() +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":1163 ++ * sys.stderr.write("pympv error during callback: %s\n" % e) ++ * ++ * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< ++ * cdef uint64_t name = d ++ * callback = _callbacks.get(name) + */ + + /* function exit code */ +@@ -21415,774 +20550,1244 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv.RenderContext.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v_callback); + __Pyx_RefNannyFinishContext(); ++ #ifdef WITH_THREAD ++ __Pyx_PyGILState_Release(__pyx_gilstate_save); ++ #endif + } + + /* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): ++ * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached = {"__pyx_unpickle_EndOfFileReached", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v___pyx_type = 0; ++ long __pyx_v___pyx_checksum; ++ PyObject *__pyx_v___pyx_state = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_22__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; ++ PyObject* values[3] = {0,0,0}; ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_EndOfFileReached") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { ++ goto __pyx_L5_argtuple_error; ++ } else { ++ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ } ++ __pyx_v___pyx_type = values[0]; ++ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) ++ __pyx_v___pyx_state = values[2]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_v___pyx_PickleError = 0; ++ PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_1; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__reduce_cython__", 0); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached", 0); + +- /* "(tree fragment)":2 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0x56be9b6: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(1, 2, __pyx_L1_error) ++ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x56be9b6) != 0); ++ if (__pyx_t_1) { + +- /* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): ++ /* "(tree fragment)":5 ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0x56be9b6: ++ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) ++ * __pyx_result = EndOfFileReached.__new__(__pyx_type) + */ ++ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_n_s_PickleError); ++ __Pyx_GIVEREF(__pyx_n_s_PickleError); ++ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); ++ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_2); ++ __pyx_v___pyx_PickleError = __pyx_t_2; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "(tree fragment)":3 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ /* "(tree fragment)":6 ++ * if __pyx_checksum != 0x56be9b6: ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) # <<<<<<<<<<<<<< ++ * __pyx_result = EndOfFileReached.__new__(__pyx_type) ++ * if __pyx_state is not None: + */ ++ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x56, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_INCREF(__pyx_v___pyx_PickleError); ++ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_Raise(__pyx_t_3, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __PYX_ERR(1, 6, __pyx_L1_error) + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0x56be9b6: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) ++ */ ++ } + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} ++ /* "(tree fragment)":7 ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) ++ * __pyx_result = EndOfFileReached.__new__(__pyx_type) # <<<<<<<<<<<<<< ++ * if __pyx_state is not None: ++ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) ++ */ ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v___pyx_result = __pyx_t_3; ++ __pyx_t_3 = 0; + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__setstate_cython__", 0); ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) ++ * __pyx_result = EndOfFileReached.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ */ ++ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); ++ __pyx_t_6 = (__pyx_t_1 != 0); ++ if (__pyx_t_6) { + +- /* "(tree fragment)":4 +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< ++ /* "(tree fragment)":9 ++ * __pyx_result = EndOfFileReached.__new__(__pyx_type) ++ * if __pyx_state is not None: ++ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< ++ * return __pyx_result ++ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(1, 4, __pyx_L1_error) ++ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) ++ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +- /* "(tree fragment)":3 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) ++ * __pyx_result = EndOfFileReached.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ */ ++ } ++ ++ /* "(tree fragment)":10 ++ * if __pyx_state is not None: ++ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result # <<<<<<<<<<<<<< ++ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): ++ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v___pyx_result); ++ __pyx_r = __pyx_v___pyx_result; ++ goto __pyx_L0; ++ ++ /* "(tree fragment)":1 ++ * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v___pyx_PickleError); ++ __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1123 +- * +- * cdef class OpenGLRenderContext(RenderContext): +- * def __init__(self, mpv, # <<<<<<<<<<<<<< +- * get_proc_address, +- * *args, **kwargs): ++/* "(tree fragment)":11 ++ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): + */ + +-/* Python wrapper */ +-static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_mpv = 0; +- PyObject *__pyx_v_get_proc_address = 0; +- PyObject *__pyx_v_args = 0; +- PyObject *__pyx_v_kwargs = 0; ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_r = NULL; ++ __Pyx_RefNannyDeclarations ++ PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_2; ++ Py_ssize_t __pyx_t_3; ++ int __pyx_t_4; ++ int __pyx_t_5; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- int __pyx_r; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); +- __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1; +- __Pyx_GOTREF(__pyx_v_kwargs); +- if (PyTuple_GET_SIZE(__pyx_args) > 2) { +- __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args)); +- if (unlikely(!__pyx_v_args)) { +- __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; +- __Pyx_RefNannyFinishContext(); +- return -1; +- } +- __Pyx_GOTREF(__pyx_v_args); +- } else { +- __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached__set_state", 0); ++ ++ /* "(tree fragment)":12 ++ * return __pyx_result ++ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): ++ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] # <<<<<<<<<<<<<< ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[2]) ++ */ ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) + } +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_get_proc_address,0}; +- PyObject* values[2] = {0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- default: +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mpv)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_get_proc_address)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, 1); __PYX_ERR(0, 1123, __pyx_L3_error) +- } +- } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->error); ++ __Pyx_DECREF(__pyx_v___pyx_result->error); ++ __pyx_v___pyx_result->error = __pyx_t_1; ++ __pyx_t_1 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->reason); ++ __Pyx_DECREF(__pyx_v___pyx_result->reason); ++ __pyx_v___pyx_result->reason = __pyx_t_1; ++ __pyx_t_1 = 0; ++ ++ /* "(tree fragment)":13 ++ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): ++ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[2]) ++ */ ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); ++ __PYX_ERR(1, 13, __pyx_L1_error) ++ } ++ __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) ++ __pyx_t_4 = ((__pyx_t_3 > 2) != 0); ++ if (__pyx_t_4) { ++ } else { ++ __pyx_t_2 = __pyx_t_4; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) ++ __pyx_t_5 = (__pyx_t_4 != 0); ++ __pyx_t_2 = __pyx_t_5; ++ __pyx_L4_bool_binop_done:; ++ if (__pyx_t_2) { ++ ++ /* "(tree fragment)":14 ++ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< ++ */ ++ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 14, __pyx_L1_error) ++ } ++ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_8 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { ++ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); ++ if (likely(__pyx_t_8)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); ++ __Pyx_INCREF(__pyx_t_8); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_7, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "(tree fragment)":13 ++ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): ++ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[2]) ++ */ ++ } ++ ++ /* "(tree fragment)":11 ++ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): ++ */ ++ ++ /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; ++ __pyx_L0:; ++ __Pyx_XGIVEREF(__pyx_r); ++ __Pyx_RefNannyFinishContext(); ++ return __pyx_r; ++} ++ ++/* "(tree fragment)":1 ++ * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ */ ++ ++/* Python wrapper */ ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage = {"__pyx_unpickle_LogMessage", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v___pyx_type = 0; ++ long __pyx_v___pyx_checksum; ++ PyObject *__pyx_v___pyx_state = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ PyObject *__pyx_r = 0; ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; ++ PyObject* values[3] = {0,0,0}; ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ } + if (unlikely(kw_args > 0)) { +- const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2; +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 1123, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_LogMessage") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) + } +- } else if (PyTuple_GET_SIZE(__pyx_args) < 2) { ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } +- __pyx_v_mpv = values[0]; +- __pyx_v_get_proc_address = values[1]; ++ __pyx_v___pyx_type = values[0]; ++ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) ++ __pyx_v___pyx_state = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1123, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_L3_error:; +- __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; +- __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +- return -1; ++ return NULL; + __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_get_proc_address, __pyx_v_args, __pyx_v_kwargs); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_LogMessage(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ +- __Pyx_XDECREF(__pyx_v_args); +- __Pyx_XDECREF(__pyx_v_kwargs); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static int __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self, PyObject *__pyx_v_mpv, PyObject *__pyx_v_get_proc_address, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { +- PyObject *__pyx_v_init_params = NULL; +- int __pyx_r; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_LogMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_v___pyx_PickleError = 0; ++ PyObject *__pyx_v___pyx_result = 0; ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__init__", 0); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1127 +- * *args, **kwargs): +- * init_params = { +- * "get_proc_address": get_proc_address # <<<<<<<<<<<<<< +- * } +- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0x8774fae: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) + */ +- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1127, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_get_proc_address, __pyx_v_get_proc_address) < 0) __PYX_ERR(0, 1127, __pyx_L1_error) +- __pyx_v_init_params = ((PyObject*)__pyx_t_1); +- __pyx_t_1 = 0; ++ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x8774fae) != 0); ++ if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1129 +- * "get_proc_address": get_proc_address +- * } +- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< +- * init_params, *args, **kwargs) +- * ++ /* "(tree fragment)":5 ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0x8774fae: ++ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) ++ * __pyx_result = LogMessage.__new__(__pyx_type) + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_n_s_PickleError); ++ __Pyx_GIVEREF(__pyx_n_s_PickleError); ++ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); ++ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_2); ++ __pyx_v___pyx_PickleError = __pyx_t_2; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1130 +- * } +- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, +- * init_params, *args, **kwargs) # <<<<<<<<<<<<<< +- * +- * class CallbackThread(Thread): ++ /* "(tree fragment)":6 ++ * if __pyx_checksum != 0x8774fae: ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) # <<<<<<<<<<<<<< ++ * __pyx_result = LogMessage.__new__(__pyx_type) ++ * if __pyx_state is not None: + */ +- __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1129, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_INCREF(((PyObject *)__pyx_v_self)); +- __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); +- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self)); +- __Pyx_INCREF(__pyx_v_mpv); +- __Pyx_GIVEREF(__pyx_v_mpv); +- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_mpv); +- __Pyx_GIVEREF(__pyx_t_2); +- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); +- __Pyx_INCREF(__pyx_v_init_params); +- __Pyx_GIVEREF(__pyx_v_init_params); +- PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_init_params); +- __pyx_t_2 = 0; ++ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x87, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_INCREF(__pyx_v___pyx_PickleError); ++ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_Raise(__pyx_t_3, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __PYX_ERR(1, 6, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1129 +- * "get_proc_address": get_proc_address +- * } +- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< +- * init_params, *args, **kwargs) +- * ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0x8774fae: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) + */ +- __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":1130 +- * } +- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, +- * init_params, *args, **kwargs) # <<<<<<<<<<<<<< +- * +- * class CallbackThread(Thread): ++ /* "(tree fragment)":7 ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) ++ * __pyx_result = LogMessage.__new__(__pyx_type) # <<<<<<<<<<<<<< ++ * if __pyx_state is not None: ++ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) + */ +- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __pyx_v___pyx_result = __pyx_t_3; ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1123 +- * +- * cdef class OpenGLRenderContext(RenderContext): +- * def __init__(self, mpv, # <<<<<<<<<<<<<< +- * get_proc_address, +- * *args, **kwargs): ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) ++ * __pyx_result = LogMessage.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result + */ ++ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); ++ __pyx_t_6 = (__pyx_t_1 != 0); ++ if (__pyx_t_6) { + +- /* function exit code */ +- __pyx_r = 0; +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = -1; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_init_params); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): ++ /* "(tree fragment)":9 ++ * __pyx_result = LogMessage.__new__(__pyx_type) ++ * if __pyx_state is not None: ++ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< ++ * return __pyx_result ++ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): + */ ++ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) ++ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_2__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__reduce_cython__", 0); ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) ++ * __pyx_result = LogMessage.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ */ ++ } + +- /* "(tree fragment)":2 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ /* "(tree fragment)":10 ++ * if __pyx_state is not None: ++ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result # <<<<<<<<<<<<<< ++ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): ++ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(1, 2, __pyx_L1_error) ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v___pyx_result); ++ __pyx_r = __pyx_v___pyx_result; ++ goto __pyx_L0; + + /* "(tree fragment)":1 +- * def __reduce_cython__(self): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): ++ * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; ++ __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v___pyx_PickleError); ++ __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "(tree fragment)":3 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++/* "(tree fragment)":11 ++ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_2; ++ Py_ssize_t __pyx_t_3; ++ int __pyx_t_4; ++ int __pyx_t_5; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__setstate_cython__", 0); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage__set_state", 0); + +- /* "(tree fragment)":4 +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< ++ /* "(tree fragment)":12 ++ * return __pyx_result ++ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): ++ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] # <<<<<<<<<<<<<< ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[4]) + */ +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_Raise(__pyx_t_1, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(1, 4, __pyx_L1_error) +- +- /* "(tree fragment)":3 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- */ +- +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->level); ++ __Pyx_DECREF(__pyx_v___pyx_result->level); ++ __pyx_v___pyx_result->level = __pyx_t_1; ++ __pyx_t_1 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->log_level); ++ __Pyx_DECREF(__pyx_v___pyx_result->log_level); ++ __pyx_v___pyx_result->log_level = __pyx_t_1; ++ __pyx_t_1 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->prefix); ++ __Pyx_DECREF(__pyx_v___pyx_result->prefix); ++ __pyx_v___pyx_result->prefix = __pyx_t_1; ++ __pyx_t_1 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->text); ++ __Pyx_DECREF(__pyx_v___pyx_result->text); ++ __pyx_v___pyx_result->text = __pyx_t_1; ++ __pyx_t_1 = 0; ++ ++ /* "(tree fragment)":13 ++ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): ++ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[4]) ++ */ ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); ++ __PYX_ERR(1, 13, __pyx_L1_error) ++ } ++ __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) ++ __pyx_t_4 = ((__pyx_t_3 > 4) != 0); ++ if (__pyx_t_4) { ++ } else { ++ __pyx_t_2 = __pyx_t_4; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) ++ __pyx_t_5 = (__pyx_t_4 != 0); ++ __pyx_t_2 = __pyx_t_5; ++ __pyx_L4_bool_binop_done:; ++ if (__pyx_t_2) { ++ ++ /* "(tree fragment)":14 ++ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< ++ */ ++ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 14, __pyx_L1_error) ++ } ++ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_8 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { ++ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); ++ if (likely(__pyx_t_8)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); ++ __Pyx_INCREF(__pyx_t_8); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_7, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "(tree fragment)":13 ++ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): ++ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[4]) ++ */ ++ } ++ ++ /* "(tree fragment)":11 ++ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): ++ */ ++ ++ /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; ++ __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1133 +- * +- * class CallbackThread(Thread): +- * def __init__(self): # <<<<<<<<<<<<<< +- * Thread.__init__(self) +- * self.daemon = True ++/* "(tree fragment)":1 ++ * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, METH_O, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self) { ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property = {"__pyx_unpickle_Property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v___pyx_type = 0; ++ long __pyx_v___pyx_checksum; ++ PyObject *__pyx_v___pyx_state = 0; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(__pyx_self, ((PyObject *)__pyx_v_self)); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_Property (wrapper)", 0); ++ { ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; ++ PyObject* values[3] = {0,0,0}; ++ if (unlikely(__pyx_kwds)) { ++ Py_ssize_t kw_args; ++ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); ++ switch (pos_args) { ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; ++ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ CYTHON_FALLTHROUGH; ++ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ CYTHON_FALLTHROUGH; ++ case 0: break; ++ default: goto __pyx_L5_argtuple_error; ++ } ++ kw_args = PyDict_Size(__pyx_kwds); ++ switch (pos_args) { ++ case 0: ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; ++ else goto __pyx_L5_argtuple_error; ++ CYTHON_FALLTHROUGH; ++ case 1: ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ } ++ if (unlikely(kw_args > 0)) { ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Property") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { ++ goto __pyx_L5_argtuple_error; ++ } else { ++ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); ++ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ } ++ __pyx_v___pyx_type = values[0]; ++ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) ++ __pyx_v___pyx_state = values[2]; ++ } ++ goto __pyx_L4_argument_unpacking_done; ++ __pyx_L5_argtuple_error:; ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) ++ __pyx_L3_error:; ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_RefNannyFinishContext(); ++ return NULL; ++ __pyx_L4_argument_unpacking_done:; ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_Property(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_Property(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_v___pyx_PickleError = 0; ++ PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__init__", 0); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_Property", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1134 +- * class CallbackThread(Thread): +- * def __init__(self): +- * Thread.__init__(self) # <<<<<<<<<<<<<< +- * self.daemon = True +- * self.lock = Semaphore() ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0x0572d11: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1134, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_2)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_2); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } +- } +- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_self) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self); +- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x0572d11) != 0); ++ if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1135 +- * def __init__(self): +- * Thread.__init__(self) +- * self.daemon = True # <<<<<<<<<<<<<< +- * self.lock = Semaphore() +- * self.lock.acquire(True) +- */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) ++ /* "(tree fragment)":5 ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0x0572d11: ++ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) ++ * __pyx_result = Property.__new__(__pyx_type) ++ */ ++ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_n_s_PickleError); ++ __Pyx_GIVEREF(__pyx_n_s_PickleError); ++ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); ++ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_2); ++ __pyx_v___pyx_PickleError = __pyx_t_2; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1136 +- * Thread.__init__(self) +- * self.daemon = True +- * self.lock = Semaphore() # <<<<<<<<<<<<<< +- * self.lock.acquire(True) +- * self.callback = None ++ /* "(tree fragment)":6 ++ * if __pyx_checksum != 0x0572d11: ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) # <<<<<<<<<<<<<< ++ * __pyx_result = Property.__new__(__pyx_type) ++ * if __pyx_state is not None: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1136, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_2)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_2); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); ++ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_INCREF(__pyx_v___pyx_PickleError); ++ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } + } ++ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_Raise(__pyx_t_3, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __PYX_ERR(1, 6, __pyx_L1_error) ++ ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0x0572d11: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) ++ */ + } +- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1136, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lock, __pyx_t_1) < 0) __PYX_ERR(0, 1136, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1137 +- * self.daemon = True +- * self.lock = Semaphore() +- * self.lock.acquire(True) # <<<<<<<<<<<<<< +- * self.callback = None +- * self.isshutdown = False ++ /* "(tree fragment)":7 ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) ++ * __pyx_result = Property.__new__(__pyx_type) # <<<<<<<<<<<<<< ++ * if __pyx_state is not None: ++ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) + */ +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_3 = NULL; ++ __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); ++ __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_2, Py_True); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1137, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v___pyx_result = __pyx_t_3; ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1138 +- * self.lock = Semaphore() +- * self.lock.acquire(True) +- * self.callback = None # <<<<<<<<<<<<<< +- * self.isshutdown = False +- * ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) ++ * __pyx_result = Property.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1138, __pyx_L1_error) ++ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); ++ __pyx_t_6 = (__pyx_t_1 != 0); ++ if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1139 +- * self.lock.acquire(True) +- * self.callback = None +- * self.isshutdown = False # <<<<<<<<<<<<<< +- * +- * def shutdown(self): ++ /* "(tree fragment)":9 ++ * __pyx_result = Property.__new__(__pyx_type) ++ * if __pyx_state is not None: ++ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< ++ * return __pyx_result ++ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_False) < 0) __PYX_ERR(0, 1139, __pyx_L1_error) ++ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) ++ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1133 +- * +- * class CallbackThread(Thread): +- * def __init__(self): # <<<<<<<<<<<<<< +- * Thread.__init__(self) +- * self.daemon = True ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) ++ * __pyx_result = Property.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result + */ ++ } + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ /* "(tree fragment)":10 ++ * if __pyx_state is not None: ++ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result # <<<<<<<<<<<<<< ++ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v___pyx_result); ++ __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; ++ ++ /* "(tree fragment)":1 ++ * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ */ ++ ++ /* function exit code */ + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); +- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v___pyx_PickleError); ++ __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1141 +- * self.isshutdown = False +- * +- * def shutdown(self): # <<<<<<<<<<<<<< +- * self.isshutdown = True +- * self.callback = None ++/* "(tree fragment)":11 ++ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown = {"shutdown", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, METH_O, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown(PyObject *__pyx_self, PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("shutdown (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(__pyx_self, ((PyObject *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; ++ int __pyx_t_2; ++ Py_ssize_t __pyx_t_3; ++ int __pyx_t_4; ++ int __pyx_t_5; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("shutdown", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1142 +- * +- * def shutdown(self): +- * self.isshutdown = True # <<<<<<<<<<<<<< +- * self.callback = None +- * self.lock.release() +- */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_True) < 0) __PYX_ERR(0, 1142, __pyx_L1_error) ++ __Pyx_RefNannySetupContext("__pyx_unpickle_Property__set_state", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1143 +- * def shutdown(self): +- * self.isshutdown = True +- * self.callback = None # <<<<<<<<<<<<<< +- * self.lock.release() +- * ++ /* "(tree fragment)":12 ++ * return __pyx_result ++ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] # <<<<<<<<<<<<<< ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[2]) + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1143, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":1144 +- * self.isshutdown = True +- * self.callback = None +- * self.lock.release() # <<<<<<<<<<<<<< +- * +- * def call(self): +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1144, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1144, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_2)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_2); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) + } +- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1144, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->data); ++ __Pyx_DECREF(__pyx_v___pyx_result->data); ++ __pyx_v___pyx_result->data = __pyx_t_1; ++ __pyx_t_1 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->name); ++ __Pyx_DECREF(__pyx_v___pyx_result->name); ++ __pyx_v___pyx_result->name = __pyx_t_1; ++ __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1141 +- * self.isshutdown = False +- * +- * def shutdown(self): # <<<<<<<<<<<<<< +- * self.isshutdown = True +- * self.callback = None ++ /* "(tree fragment)":13 ++ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[2]) + */ ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); ++ __PYX_ERR(1, 13, __pyx_L1_error) ++ } ++ __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) ++ __pyx_t_4 = ((__pyx_t_3 > 2) != 0); ++ if (__pyx_t_4) { ++ } else { ++ __pyx_t_2 = __pyx_t_4; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) ++ __pyx_t_5 = (__pyx_t_4 != 0); ++ __pyx_t_2 = __pyx_t_5; ++ __pyx_L4_bool_binop_done:; ++ if (__pyx_t_2) { + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "vidcutter/libs/pympv/mpv.pyx":1146 +- * self.lock.release() +- * +- * def call(self): # <<<<<<<<<<<<<< +- * self.lock.release() +- * ++ /* "(tree fragment)":14 ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< + */ ++ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 14, __pyx_L1_error) ++ } ++ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_8 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { ++ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); ++ if (likely(__pyx_t_8)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); ++ __Pyx_INCREF(__pyx_t_8); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_7, function); ++ } ++ } ++ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call = {"call", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call, METH_O, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call(PyObject *__pyx_self, PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("call (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(__pyx_self, ((PyObject *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("call", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1147 +- * +- * def call(self): +- * self.lock.release() # <<<<<<<<<<<<<< +- * +- * def set(self, callback): ++ /* "(tree fragment)":13 ++ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[2]) + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1147, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { +- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); +- if (likely(__pyx_t_2)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); +- __Pyx_INCREF(__pyx_t_2); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_3, function); +- } + } +- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1146 +- * self.lock.release() +- * +- * def call(self): # <<<<<<<<<<<<<< +- * self.lock.release() +- * ++ /* "(tree fragment)":11 ++ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ +@@ -22190,43 +21795,45 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UN + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.call", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1149 +- * self.lock.release() +- * +- * def set(self, callback): # <<<<<<<<<<<<<< +- * self.callback = callback +- * ++/* "(tree fragment)":1 ++ * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v_self = 0; +- PyObject *__pyx_v_callback = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event = {"__pyx_unpickle_Event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v___pyx_type = 0; ++ long __pyx_v___pyx_checksum; ++ PyObject *__pyx_v___pyx_state = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("set (wrapper)", 0); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_Event (wrapper)", 0); + { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_callback,0}; +- PyObject* values[2] = {0,0}; ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; ++ PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +@@ -22237,207 +21844,378 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject * + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; + else { +- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1149, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1149, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Event") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) + } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } +- __pyx_v_self = values[0]; +- __pyx_v_callback = values[1]; ++ __pyx_v___pyx_type = values[0]; ++ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) ++ __pyx_v___pyx_state = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1149, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(__pyx_self, __pyx_v_self, __pyx_v_callback); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Event(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Event(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_v___pyx_PickleError = 0; ++ PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations ++ int __pyx_t_1; ++ PyObject *__pyx_t_2 = NULL; ++ PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; ++ int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("set", 0); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_Event", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1150 +- * +- * def set(self, callback): +- * self.callback = callback # <<<<<<<<<<<<<< +- * +- * def run(self): ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0xda38c25: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 1150, __pyx_L1_error) ++ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xda38c25) != 0); ++ if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1149 +- * self.lock.release() +- * +- * def set(self, callback): # <<<<<<<<<<<<<< +- * self.callback = callback +- * ++ /* "(tree fragment)":5 ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0xda38c25: ++ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) ++ * __pyx_result = Event.__new__(__pyx_type) + */ ++ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_n_s_PickleError); ++ __Pyx_GIVEREF(__pyx_n_s_PickleError); ++ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); ++ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_2); ++ __pyx_v___pyx_PickleError = __pyx_t_2; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); ++ /* "(tree fragment)":6 ++ * if __pyx_checksum != 0xda38c25: ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) # <<<<<<<<<<<<<< ++ * __pyx_result = Event.__new__(__pyx_type) ++ * if __pyx_state is not None: ++ */ ++ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xda, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_INCREF(__pyx_v___pyx_PickleError); ++ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_Raise(__pyx_t_3, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __PYX_ERR(1, 6, __pyx_L1_error) ++ ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0xda38c25: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) ++ */ ++ } ++ ++ /* "(tree fragment)":7 ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) ++ * __pyx_result = Event.__new__(__pyx_type) # <<<<<<<<<<<<<< ++ * if __pyx_state is not None: ++ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) ++ */ ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } ++ } ++ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v___pyx_result = __pyx_t_3; ++ __pyx_t_3 = 0; ++ ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) ++ * __pyx_result = Event.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ */ ++ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); ++ __pyx_t_6 = (__pyx_t_1 != 0); ++ if (__pyx_t_6) { ++ ++ /* "(tree fragment)":9 ++ * __pyx_result = Event.__new__(__pyx_type) ++ * if __pyx_state is not None: ++ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< ++ * return __pyx_result ++ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): ++ */ ++ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) ++ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) ++ * __pyx_result = Event.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ */ ++ } ++ ++ /* "(tree fragment)":10 ++ * if __pyx_state is not None: ++ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result # <<<<<<<<<<<<<< ++ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v___pyx_result); ++ __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; ++ ++ /* "(tree fragment)":1 ++ * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ */ ++ ++ /* function exit code */ + __pyx_L1_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; ++ __Pyx_XDECREF(__pyx_v___pyx_PickleError); ++ __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1152 +- * self.callback = callback +- * +- * def run(self): # <<<<<<<<<<<<<< +- * while not self.isshutdown: +- * self.lock.acquire(True) ++/* "(tree fragment)":11 ++ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): + */ + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run = {"run", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run, METH_O, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run(PyObject *__pyx_self, PyObject *__pyx_v_self) { +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("run (wrapper)", 0); +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(__pyx_self, ((PyObject *)__pyx_v_self)); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; ++ enum mpv_event_id __pyx_t_3; ++ int __pyx_t_4; ++ Py_ssize_t __pyx_t_5; ++ int __pyx_t_6; ++ int __pyx_t_7; ++ PyObject *__pyx_t_8 = NULL; ++ PyObject *__pyx_t_9 = NULL; ++ PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("run", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1153 +- * +- * def run(self): +- * while not self.isshutdown: # <<<<<<<<<<<<<< +- * self.lock.acquire(True) +- * self.mpv_callback(self.callback) if self.callback else None +- */ +- while (1) { +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1153, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_3 = ((!__pyx_t_2) != 0); +- if (!__pyx_t_3) break; ++ __Pyx_RefNannySetupContext("__pyx_unpickle_Event__set_state", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1154 +- * def run(self): +- * while not self.isshutdown: +- * self.lock.acquire(True) # <<<<<<<<<<<<<< +- * self.mpv_callback(self.callback) if self.callback else None +- * ++ /* "(tree fragment)":12 ++ * return __pyx_result ++ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] # <<<<<<<<<<<<<< ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[4]) + */ +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_acquire); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1154, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); +- __Pyx_INCREF(__pyx_t_4); ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->data); ++ __Pyx_DECREF(__pyx_v___pyx_result->data); ++ __pyx_v___pyx_result->data = __pyx_t_1; ++ __pyx_t_1 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v___pyx_result->error = __pyx_t_2; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_v___pyx_result->id = __pyx_t_3; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_1); ++ __Pyx_GOTREF(__pyx_v___pyx_result->reply_userdata); ++ __Pyx_DECREF(__pyx_v___pyx_result->reply_userdata); ++ __pyx_v___pyx_result->reply_userdata = __pyx_t_1; ++ __pyx_t_1 = 0; ++ ++ /* "(tree fragment)":13 ++ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[4]) ++ */ ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); ++ __PYX_ERR(1, 13, __pyx_L1_error) ++ } ++ __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) ++ __pyx_t_6 = ((__pyx_t_5 > 4) != 0); ++ if (__pyx_t_6) { ++ } else { ++ __pyx_t_4 = __pyx_t_6; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) ++ __pyx_t_7 = (__pyx_t_6 != 0); ++ __pyx_t_4 = __pyx_t_7; ++ __pyx_L4_bool_binop_done:; ++ if (__pyx_t_4) { ++ ++ /* "(tree fragment)":14 ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< ++ */ ++ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_8); ++ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_9); ++ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 14, __pyx_L1_error) ++ } ++ __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_8); ++ __pyx_t_10 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { ++ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); ++ if (likely(__pyx_t_10)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); ++ __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_5, function); ++ __Pyx_DECREF_SET(__pyx_t_9, function); + } + } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_5, Py_True); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error) ++ __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); ++ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; ++ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; ++ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1155 +- * while not self.isshutdown: +- * self.lock.acquire(True) +- * self.mpv_callback(self.callback) if self.callback else None # <<<<<<<<<<<<<< +- * +- * def mpv_callback(self, callback): ++ /* "(tree fragment)":13 ++ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[4]) + */ +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1155, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (__pyx_t_3) { +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mpv_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1155, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1155, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { +- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); +- if (likely(__pyx_t_7)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); +- __Pyx_INCREF(__pyx_t_7); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_4, function); +- } +- } +- __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_t_1 = __pyx_t_5; +- __pyx_t_5 = 0; +- } else { +- __Pyx_INCREF(Py_None); +- __pyx_t_1 = Py_None; +- } +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1152 +- * self.callback = callback +- * +- * def run(self): # <<<<<<<<<<<<<< +- * while not self.isshutdown: +- * self.lock.acquire(True) ++ /* "(tree fragment)":11 ++ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] ++ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ +@@ -22445,45 +22223,45 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.run", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_XDECREF(__pyx_t_9); ++ __Pyx_XDECREF(__pyx_t_10); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1157 +- * self.mpv_callback(self.callback) if self.callback else None +- * +- * def mpv_callback(self, callback): # <<<<<<<<<<<<<< +- * try: +- * callback() ++/* "(tree fragment)":1 ++ * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result + */ + + /* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback = {"mpv_callback", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- CYTHON_UNUSED PyObject *__pyx_v_self = 0; +- PyObject *__pyx_v_callback = 0; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ ++static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo = {"__pyx_unpickle_RenderFrameInfo", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo, METH_VARARGS|METH_KEYWORDS, 0}; ++static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { ++ PyObject *__pyx_v___pyx_type = 0; ++ long __pyx_v___pyx_checksum; ++ PyObject *__pyx_v___pyx_state = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("mpv_callback (wrapper)", 0); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo (wrapper)", 0); + { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_callback,0}; +- PyObject* values[2] = {0,0}; ++ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; ++ PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { ++ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); ++ CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +@@ -22494,6068 +22272,2370 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback( + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; ++ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; ++ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; + else { +- __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, 1); __PYX_ERR(0, 1157, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) ++ } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; ++ else { ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mpv_callback") < 0)) __PYX_ERR(0, 1157, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_RenderFrameInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) + } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { ++ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); ++ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } +- __pyx_v_self = values[0]; +- __pyx_v_callback = values[1]; ++ __pyx_v___pyx_type = values[0]; ++ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) ++ __pyx_v___pyx_state = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1157, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(__pyx_self, __pyx_v_self, __pyx_v_callback); ++ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_RenderFrameInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { +- PyObject *__pyx_v_e = NULL; ++static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_RenderFrameInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_v___pyx_PickleError = 0; ++ PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; ++ int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; +- PyObject *__pyx_t_6 = NULL; +- int __pyx_t_7; +- PyObject *__pyx_t_8 = NULL; +- PyObject *__pyx_t_9 = NULL; +- PyObject *__pyx_t_10 = NULL; +- PyObject *__pyx_t_11 = NULL; ++ int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("mpv_callback", 0); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1158 +- * +- * def mpv_callback(self, callback): +- * try: # <<<<<<<<<<<<<< +- * callback() +- * except Exception as e: ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) + */ +- { +- __Pyx_PyThreadState_declare +- __Pyx_PyThreadState_assign +- __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); +- __Pyx_XGOTREF(__pyx_t_1); +- __Pyx_XGOTREF(__pyx_t_2); +- __Pyx_XGOTREF(__pyx_t_3); +- /*try:*/ { ++ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd41d8cd) != 0); ++ if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1159 +- * def mpv_callback(self, callback): +- * try: +- * callback() # <<<<<<<<<<<<<< +- * except Exception as e: +- * sys.stderr.write("pympv error during callback: %s\n" % e) ++ /* "(tree fragment)":5 ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0xd41d8cd: ++ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) ++ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) + */ +- __Pyx_INCREF(__pyx_v_callback); +- __pyx_t_5 = __pyx_v_callback; __pyx_t_6 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { +- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); +- if (likely(__pyx_t_6)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); +- __Pyx_INCREF(__pyx_t_6); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_5, function); +- } +- } +- __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1159, __pyx_L3_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_n_s_PickleError); ++ __Pyx_GIVEREF(__pyx_n_s_PickleError); ++ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); ++ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_2); ++ __pyx_v___pyx_PickleError = __pyx_t_2; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1158 +- * +- * def mpv_callback(self, callback): +- * try: # <<<<<<<<<<<<<< +- * callback() +- * except Exception as e: ++ /* "(tree fragment)":6 ++ * if __pyx_checksum != 0xd41d8cd: ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) # <<<<<<<<<<<<<< ++ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) ++ * if __pyx_state is not None: + */ ++ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_INCREF(__pyx_v___pyx_PickleError); ++ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_5)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_5); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); ++ } + } +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- goto __pyx_L8_try_end; +- __pyx_L3_error:; +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_Raise(__pyx_t_3, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __PYX_ERR(1, 6, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1160 +- * try: +- * callback() +- * except Exception as e: # <<<<<<<<<<<<<< +- * sys.stderr.write("pympv error during callback: %s\n" % e) +- * ++ /* "(tree fragment)":4 ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) + */ +- __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); +- if (__pyx_t_7) { +- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); +- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 1160, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_5); +- __pyx_v_e = __pyx_t_5; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":1161 +- * callback() +- * except Exception as e: +- * sys.stderr.write("pympv error during callback: %s\n" % e) # <<<<<<<<<<<<<< +- * +- * cdef void _c_callback(void* d) with gil: ++ /* "(tree fragment)":7 ++ * from pickle import PickleError as __pyx_PickleError ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) ++ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) # <<<<<<<<<<<<<< ++ * if __pyx_state is not None: ++ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_9); +- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_stderr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_10); +- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_write); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_9); +- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; +- __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_pympv_error_during_callback_s, __pyx_v_e); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_10); +- __pyx_t_11 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { +- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); +- if (likely(__pyx_t_11)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); +- __Pyx_INCREF(__pyx_t_11); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_9, function); +- } +- } +- __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); +- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; +- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; +- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1161, __pyx_L5_except_error) +- __Pyx_GOTREF(__pyx_t_8); +- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- goto __pyx_L4_exception_handled; ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_4 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { ++ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); ++ if (likely(__pyx_t_4)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); ++ __Pyx_INCREF(__pyx_t_4); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_2, function); + } +- goto __pyx_L5_except_error; +- __pyx_L5_except_error:; ++ } ++ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); ++ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_v___pyx_result = __pyx_t_3; ++ __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1158 +- * +- * def mpv_callback(self, callback): +- * try: # <<<<<<<<<<<<<< +- * callback() +- * except Exception as e: ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) ++ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ */ ++ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); ++ __pyx_t_6 = (__pyx_t_1 != 0); ++ if (__pyx_t_6) { ++ ++ /* "(tree fragment)":9 ++ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) ++ * if __pyx_state is not None: ++ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< ++ * return __pyx_result ++ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): ++ */ ++ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) ++ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_3); ++ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ ++ /* "(tree fragment)":8 ++ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) ++ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) ++ * if __pyx_state is not None: # <<<<<<<<<<<<<< ++ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result + */ +- __Pyx_XGIVEREF(__pyx_t_1); +- __Pyx_XGIVEREF(__pyx_t_2); +- __Pyx_XGIVEREF(__pyx_t_3); +- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); +- goto __pyx_L1_error; +- __pyx_L4_exception_handled:; +- __Pyx_XGIVEREF(__pyx_t_1); +- __Pyx_XGIVEREF(__pyx_t_2); +- __Pyx_XGIVEREF(__pyx_t_3); +- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); +- __pyx_L8_try_end:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1157 +- * self.mpv_callback(self.callback) if self.callback else None +- * +- * def mpv_callback(self, callback): # <<<<<<<<<<<<<< +- * try: +- * callback() ++ /* "(tree fragment)":10 ++ * if __pyx_state is not None: ++ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result # <<<<<<<<<<<<<< ++ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): ++ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): ++ */ ++ __Pyx_XDECREF(__pyx_r); ++ __Pyx_INCREF(__pyx_v___pyx_result); ++ __pyx_r = __pyx_v___pyx_result; ++ goto __pyx_L0; ++ ++ /* "(tree fragment)":1 ++ * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result + */ + + /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; + __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_XDECREF(__pyx_t_9); +- __Pyx_XDECREF(__pyx_t_10); +- __Pyx_XDECREF(__pyx_t_11); +- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_e); ++ __Pyx_XDECREF(__pyx_v___pyx_PickleError); ++ __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1163 +- * sys.stderr.write("pympv error during callback: %s\n" % e) +- * +- * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< +- * cdef uint64_t name = d +- * callback = _callbacks.get(name) ++/* "(tree fragment)":11 ++ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[0]) + */ + +-static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { +- uint64_t __pyx_v_name; +- PyObject *__pyx_v_callback = NULL; ++static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { ++ PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; ++ int __pyx_t_1; ++ Py_ssize_t __pyx_t_2; ++ int __pyx_t_3; ++ int __pyx_t_4; ++ PyObject *__pyx_t_5 = NULL; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +- #ifdef WITH_THREAD +- PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); +- #endif +- __Pyx_RefNannySetupContext("_c_callback", 0); ++ __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo__set_state", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1164 +- * +- * cdef void _c_callback(void* d) with gil: +- * cdef uint64_t name = d # <<<<<<<<<<<<<< +- * callback = _callbacks.get(name) +- * callback.call() ++ /* "(tree fragment)":12 ++ * return __pyx_result ++ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): ++ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[0]) + */ +- __pyx_v_name = ((uint64_t)__pyx_v_d); ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); ++ __PYX_ERR(1, 12, __pyx_L1_error) ++ } ++ __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 12, __pyx_L1_error) ++ __pyx_t_3 = ((__pyx_t_2 > 0) != 0); ++ if (__pyx_t_3) { ++ } else { ++ __pyx_t_1 = __pyx_t_3; ++ goto __pyx_L4_bool_binop_done; ++ } ++ __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 12, __pyx_L1_error) ++ __pyx_t_4 = (__pyx_t_3 != 0); ++ __pyx_t_1 = __pyx_t_4; ++ __pyx_L4_bool_binop_done:; ++ if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1165 +- * cdef void _c_callback(void* d) with gil: +- * cdef uint64_t name = d +- * callback = _callbacks.get(name) # <<<<<<<<<<<<<< +- * callback.call() ++ /* "(tree fragment)":13 ++ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): ++ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[0]) # <<<<<<<<<<<<<< + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1165, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1165, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); ++ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 13, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(__pyx_v___pyx_state == Py_None)) { ++ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); ++ __PYX_ERR(1, 13, __pyx_L1_error) + } +- } +- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v_callback = __pyx_t_1; +- __pyx_t_1 = 0; ++ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_8 = NULL; ++ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { ++ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); ++ if (likely(__pyx_t_8)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); ++ __Pyx_INCREF(__pyx_t_8); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_7, function); ++ } ++ } ++ __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1166 +- * cdef uint64_t name = d +- * callback = _callbacks.get(name) +- * callback.call() # <<<<<<<<<<<<<< ++ /* "(tree fragment)":12 ++ * return __pyx_result ++ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): ++ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< ++ * __pyx_result.__dict__.update(__pyx_state[0]) + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_callback, __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1166, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_3)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_3); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } + } +- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1163 +- * sys.stderr.write("pympv error during callback: %s\n" % e) +- * +- * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< +- * cdef uint64_t name = d +- * callback = _callbacks.get(name) ++ /* "(tree fragment)":11 ++ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): ++ * __pyx_result.__dict__.update(__pyx_state[0]) + */ + + /* function exit code */ ++ __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); ++ __Pyx_XDECREF(__pyx_t_5); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ __Pyx_XDECREF(__pyx_t_8); ++ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ __pyx_r = 0; + __pyx_L0:; +- __Pyx_XDECREF(__pyx_v_callback); ++ __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); +- #ifdef WITH_THREAD +- __Pyx_PyGILState_Release(__pyx_gilstate_save); ++ return __pyx_r; ++} ++static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; ++ ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p; ++ PyObject *o; ++ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { ++ o = (*t->tp_alloc)(t, 0); ++ } else { ++ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); ++ } ++ if (unlikely(!o)) return 0; ++ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o); ++ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached; ++ p->reason = Py_None; Py_INCREF(Py_None); ++ p->error = Py_None; Py_INCREF(Py_None); ++ return o; ++} ++ ++static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; ++ #if CYTHON_USE_TP_FINALIZE ++ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { ++ if (PyObject_CallFinalizerFromDealloc(o)) return; ++ } + #endif ++ PyObject_GC_UnTrack(o); ++ Py_CLEAR(p->reason); ++ Py_CLEAR(p->error); ++ (*Py_TYPE(o)->tp_free)(o); + } + +-/* "(tree fragment)":1 +- * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ ++static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o, visitproc v, void *a) { ++ int e; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; ++ if (p->reason) { ++ e = (*v)(p->reason, a); if (e) return e; ++ } ++ if (p->error) { ++ e = (*v)(p->error, a); if (e) return e; ++ } ++ return 0; ++} + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached = {"__pyx_unpickle_EndOfFileReached", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v___pyx_type = 0; +- long __pyx_v___pyx_checksum; +- PyObject *__pyx_v___pyx_state = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; +- PyObject* values[3] = {0,0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_EndOfFileReached") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- } +- __pyx_v___pyx_type = values[0]; +- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_v___pyx_state = values[2]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static int __pyx_tp_clear_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o) { ++ PyObject* tmp; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; ++ tmp = ((PyObject*)p->reason); ++ p->reason = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->error); ++ p->error = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ return 0; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_v___pyx_PickleError = 0; +- PyObject *__pyx_v___pyx_result = 0; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached", 0); +- +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0x56be9b6: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) +- */ +- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x56be9b6) != 0); +- if (__pyx_t_1) { +- +- /* "(tree fragment)":5 +- * cdef object __pyx_result +- * if __pyx_checksum != 0x56be9b6: +- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) +- * __pyx_result = EndOfFileReached.__new__(__pyx_type) +- */ +- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_n_s_PickleError); +- __Pyx_GIVEREF(__pyx_n_s_PickleError); +- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); +- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_2); +- __pyx_v___pyx_PickleError = __pyx_t_2; +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- +- /* "(tree fragment)":6 +- * if __pyx_checksum != 0x56be9b6: +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) # <<<<<<<<<<<<<< +- * __pyx_result = EndOfFileReached.__new__(__pyx_type) +- * if __pyx_state is not None: +- */ +- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x56, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_INCREF(__pyx_v___pyx_PickleError); +- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_Raise(__pyx_t_3, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(1, 6, __pyx_L1_error) ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_1__get__(o); ++} + +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0x56be9b6: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) +- */ ++static int __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_3__set__(o, v); + } +- +- /* "(tree fragment)":7 +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) +- * __pyx_result = EndOfFileReached.__new__(__pyx_type) # <<<<<<<<<<<<<< +- * if __pyx_state is not None: +- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_5__del__(o); + } +- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v___pyx_result = __pyx_t_3; +- __pyx_t_3 = 0; +- +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) +- * __pyx_result = EndOfFileReached.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ +- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); +- __pyx_t_6 = (__pyx_t_1 != 0); +- if (__pyx_t_6) { ++} + +- /* "(tree fragment)":9 +- * __pyx_result = EndOfFileReached.__new__(__pyx_type) +- * if __pyx_state is not None: +- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< +- * return __pyx_result +- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): +- */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) +- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_1__get__(o); ++} + +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) +- * __pyx_result = EndOfFileReached.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ ++static int __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_3__set__(o, v); ++ } ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_5__del__(o); + } +- +- /* "(tree fragment)":10 +- * if __pyx_state is not None: +- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) +- * return __pyx_result # <<<<<<<<<<<<<< +- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): +- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v___pyx_result); +- __pyx_r = __pyx_v___pyx_result; +- goto __pyx_L0; +- +- /* "(tree fragment)":1 +- * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ +- +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v___pyx_PickleError); +- __Pyx_XDECREF(__pyx_v___pyx_result); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; + } + +-/* "(tree fragment)":11 +- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- */ ++static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_EndOfFileReached[] = { ++ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_1__reduce_cython__, METH_NOARGS, 0}, ++ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_3__setstate_cython__, METH_O, 0}, ++ {0, 0, 0, 0} ++}; + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- Py_ssize_t __pyx_t_3; +- int __pyx_t_4; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- PyObject *__pyx_t_8 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached__set_state", 0); ++static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_EndOfFileReached[] = { ++ {(char *)"reason", __pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason, __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason, (char *)0, 0}, ++ {(char *)"error", __pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error, __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error, (char *)0, 0}, ++ {0, 0, 0, 0, 0} ++}; + +- /* "(tree fragment)":12 +- * return __pyx_result +- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): +- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] # <<<<<<<<<<<<<< +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[2]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) +- } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->error); +- __Pyx_DECREF(__pyx_v___pyx_result->error); +- __pyx_v___pyx_result->error = __pyx_t_1; +- __pyx_t_1 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) +- } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->reason); +- __Pyx_DECREF(__pyx_v___pyx_result->reason); +- __pyx_v___pyx_result->reason = __pyx_t_1; +- __pyx_t_1 = 0; ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv.EndOfFileReached", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ ++ "Data field for MPV_EVENT_END_FILE events\n\n Wraps: mpv_event_end_file\n ", /*tp_doc*/ ++ __pyx_tp_traverse_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_traverse*/ ++ __pyx_tp_clear_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ __pyx_methods_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_methods*/ ++ 0, /*tp_members*/ ++ __pyx_getsets_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ 0, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; ++static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): +- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[2]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); +- __PYX_ERR(1, 13, __pyx_L1_error) +- } +- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_4 = ((__pyx_t_3 > 2) != 0); +- if (__pyx_t_4) { ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p; ++ PyObject *o; ++ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { ++ o = (*t->tp_alloc)(t, 0); + } else { +- __pyx_t_2 = __pyx_t_4; +- goto __pyx_L4_bool_binop_done; ++ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } +- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_5 = (__pyx_t_4 != 0); +- __pyx_t_2 = __pyx_t_5; +- __pyx_L4_bool_binop_done:; +- if (__pyx_t_2) { ++ if (unlikely(!o)) return 0; ++ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o); ++ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage; ++ p->prefix = Py_None; Py_INCREF(Py_None); ++ p->level = Py_None; Py_INCREF(Py_None); ++ p->text = Py_None; Py_INCREF(Py_None); ++ p->log_level = Py_None; Py_INCREF(Py_None); ++ return o; ++} + +- /* "(tree fragment)":14 +- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< +- */ +- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 14, __pyx_L1_error) +- } +- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_7, function); +- } +- } +- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_LogMessage(PyObject *o) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; ++ #if CYTHON_USE_TP_FINALIZE ++ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { ++ if (PyObject_CallFinalizerFromDealloc(o)) return; ++ } ++ #endif ++ PyObject_GC_UnTrack(o); ++ Py_CLEAR(p->prefix); ++ Py_CLEAR(p->level); ++ Py_CLEAR(p->text); ++ Py_CLEAR(p->log_level); ++ (*Py_TYPE(o)->tp_free)(o); ++} + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): +- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[2]) +- */ ++static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_LogMessage(PyObject *o, visitproc v, void *a) { ++ int e; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; ++ if (p->prefix) { ++ e = (*v)(p->prefix, a); if (e) return e; ++ } ++ if (p->level) { ++ e = (*v)(p->level, a); if (e) return e; ++ } ++ if (p->text) { ++ e = (*v)(p->text, a); if (e) return e; ++ } ++ if (p->log_level) { ++ e = (*v)(p->log_level, a); if (e) return e; + } ++ return 0; ++} + +- /* "(tree fragment)":11 +- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- */ ++static int __pyx_tp_clear_9vidcutter_4libs_3mpv_LogMessage(PyObject *o) { ++ PyObject* tmp; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; ++ tmp = ((PyObject*)p->prefix); ++ p->prefix = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->level); ++ p->level = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->text); ++ p->text = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->log_level); ++ p->log_level = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ return 0; ++} + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_prefix(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(o); + } + +-/* "(tree fragment)":1 +- * def __pyx_unpickle_InputDispatch(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ +- +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch = {"__pyx_unpickle_InputDispatch", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v___pyx_type = 0; +- long __pyx_v___pyx_checksum; +- PyObject *__pyx_v___pyx_state = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__pyx_unpickle_InputDispatch (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; +- PyObject* values[3] = {0,0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InputDispatch", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InputDispatch", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_InputDispatch") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- } +- __pyx_v___pyx_type = values[0]; +- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_v___pyx_state = values[2]; ++static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_prefix(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(o, v); ++ } ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(o); + } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InputDispatch", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_InputDispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_InputDispatch(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_InputDispatch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_v___pyx_PickleError = 0; +- PyObject *__pyx_v___pyx_result = 0; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_InputDispatch", 0); +- +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0xbf641a9: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) +- */ +- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xbf641a9) != 0); +- if (__pyx_t_1) { +- +- /* "(tree fragment)":5 +- * cdef object __pyx_result +- * if __pyx_checksum != 0xbf641a9: +- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) +- * __pyx_result = InputDispatch.__new__(__pyx_type) +- */ +- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_n_s_PickleError); +- __Pyx_GIVEREF(__pyx_n_s_PickleError); +- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); +- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_2); +- __pyx_v___pyx_PickleError = __pyx_t_2; +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- +- /* "(tree fragment)":6 +- * if __pyx_checksum != 0xbf641a9: +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) # <<<<<<<<<<<<<< +- * __pyx_result = InputDispatch.__new__(__pyx_type) +- * if __pyx_state is not None: +- */ +- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xbf, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_INCREF(__pyx_v___pyx_PickleError); +- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_Raise(__pyx_t_3, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(1, 6, __pyx_L1_error) ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_level(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(o); ++} + +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0xbf641a9: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) +- */ ++static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_level(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(o, v); + } +- +- /* "(tree fragment)":7 +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) +- * __pyx_result = InputDispatch.__new__(__pyx_type) # <<<<<<<<<<<<<< +- * if __pyx_state is not None: +- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_InputDispatch), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(o); + } +- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v___pyx_result = __pyx_t_3; +- __pyx_t_3 = 0; +- +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) +- * __pyx_result = InputDispatch.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ +- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); +- __pyx_t_6 = (__pyx_t_1 != 0); +- if (__pyx_t_6) { ++} + +- /* "(tree fragment)":9 +- * __pyx_result = InputDispatch.__new__(__pyx_type) +- * if __pyx_state is not None: +- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< +- * return __pyx_result +- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): +- */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) +- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_InputDispatch__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_text(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(o); ++} + +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) +- * __pyx_result = InputDispatch.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ ++static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_text(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(o, v); + } ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(o); ++ } ++} + +- /* "(tree fragment)":10 +- * if __pyx_state is not None: +- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) +- * return __pyx_result # <<<<<<<<<<<<<< +- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): +- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v___pyx_result); +- __pyx_r = __pyx_v___pyx_result; +- goto __pyx_L0; +- +- /* "(tree fragment)":1 +- * def __pyx_unpickle_InputDispatch(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_log_level(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(o); ++} + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_InputDispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v___pyx_PickleError); +- __Pyx_XDECREF(__pyx_v___pyx_result); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_log_level(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(o, v); ++ } ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(o); ++ } + } + +-/* "(tree fragment)":11 +- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- */ ++static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_LogMessage[] = { ++ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__, METH_NOARGS, 0}, ++ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__, METH_O, 0}, ++ {0, 0, 0, 0} ++}; + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_InputDispatch__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- Py_ssize_t __pyx_t_3; +- int __pyx_t_4; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- PyObject *__pyx_t_8 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_InputDispatch__set_state", 0); ++static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_LogMessage[] = { ++ {(char *)"prefix", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_prefix, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_prefix, (char *)0, 0}, ++ {(char *)"level", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_level, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_level, (char *)0, 0}, ++ {(char *)"text", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_text, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_text, (char *)0, 0}, ++ {(char *)"log_level", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_log_level, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_log_level, (char *)0, 0}, ++ {0, 0, 0, 0, 0} ++}; + +- /* "(tree fragment)":12 +- * return __pyx_result +- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): +- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] # <<<<<<<<<<<<<< +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[2]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_LogMessage = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv.LogMessage", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_LogMessage, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ ++ "Data field for MPV_EVENT_LOG_MESSAGE events.\n\n Wraps: mpv_event_log_message\n ", /*tp_doc*/ ++ __pyx_tp_traverse_9vidcutter_4libs_3mpv_LogMessage, /*tp_traverse*/ ++ __pyx_tp_clear_9vidcutter_4libs_3mpv_LogMessage, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ __pyx_methods_9vidcutter_4libs_3mpv_LogMessage, /*tp_methods*/ ++ 0, /*tp_members*/ ++ __pyx_getsets_9vidcutter_4libs_3mpv_LogMessage, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ 0, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; ++static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property __pyx_vtable_9vidcutter_4libs_3mpv_Property; ++ ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Property(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p; ++ PyObject *o; ++ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { ++ o = (*t->tp_alloc)(t, 0); ++ } else { ++ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->arg0); +- __Pyx_DECREF(__pyx_v___pyx_result->arg0); +- __pyx_v___pyx_result->arg0 = __pyx_t_1; +- __pyx_t_1 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) ++ if (unlikely(!o)) return 0; ++ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o); ++ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Property; ++ p->name = Py_None; Py_INCREF(Py_None); ++ p->data = Py_None; Py_INCREF(Py_None); ++ return o; ++} ++ ++static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Property(PyObject *o) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; ++ #if CYTHON_USE_TP_FINALIZE ++ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { ++ if (PyObject_CallFinalizerFromDealloc(o)) return; + } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->type); +- __Pyx_DECREF(__pyx_v___pyx_result->type); +- __pyx_v___pyx_result->type = __pyx_t_1; +- __pyx_t_1 = 0; ++ #endif ++ PyObject_GC_UnTrack(o); ++ Py_CLEAR(p->name); ++ Py_CLEAR(p->data); ++ (*Py_TYPE(o)->tp_free)(o); ++} + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): +- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[2]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); +- __PYX_ERR(1, 13, __pyx_L1_error) ++static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Property(PyObject *o, visitproc v, void *a) { ++ int e; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; ++ if (p->name) { ++ e = (*v)(p->name, a); if (e) return e; + } +- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_4 = ((__pyx_t_3 > 2) != 0); +- if (__pyx_t_4) { +- } else { +- __pyx_t_2 = __pyx_t_4; +- goto __pyx_L4_bool_binop_done; ++ if (p->data) { ++ e = (*v)(p->data, a); if (e) return e; + } +- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_5 = (__pyx_t_4 != 0); +- __pyx_t_2 = __pyx_t_5; +- __pyx_L4_bool_binop_done:; +- if (__pyx_t_2) { ++ return 0; ++} + +- /* "(tree fragment)":14 +- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< +- */ +- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 14, __pyx_L1_error) +- } +- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_7, function); +- } +- } +- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Property(PyObject *o) { ++ PyObject* tmp; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; ++ tmp = ((PyObject*)p->name); ++ p->name = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->data); ++ p->data = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ return 0; ++} + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): +- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[2]) +- */ ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_8Property_name(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(o); ++} ++ ++static int __pyx_setprop_9vidcutter_4libs_3mpv_8Property_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(o, v); ++ } ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(o); + } ++} + +- /* "(tree fragment)":11 +- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- */ ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_8Property_data(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(o); ++} + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_InputDispatch__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static int __pyx_setprop_9vidcutter_4libs_3mpv_8Property_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(o, v); ++ } ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(o); ++ } + } + +-/* "(tree fragment)":1 +- * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ ++static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Property[] = { ++ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__, METH_NOARGS, 0}, ++ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__, METH_O, 0}, ++ {0, 0, 0, 0} ++}; + +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage = {"__pyx_unpickle_LogMessage", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v___pyx_type = 0; +- long __pyx_v___pyx_checksum; +- PyObject *__pyx_v___pyx_state = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; +- PyObject* values[3] = {0,0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_LogMessage") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- } +- __pyx_v___pyx_type = values[0]; +- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_v___pyx_state = values[2]; ++static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Property[] = { ++ {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_8Property_name, __pyx_setprop_9vidcutter_4libs_3mpv_8Property_name, (char *)0, 0}, ++ {(char *)"data", __pyx_getprop_9vidcutter_4libs_3mpv_8Property_data, __pyx_setprop_9vidcutter_4libs_3mpv_8Property_data, (char *)0, 0}, ++ {0, 0, 0, 0, 0} ++}; ++ ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Property = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv.Property", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Property), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Property, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ ++ "Data field for MPV_EVENT_PROPERTY_CHANGE and MPV_EVENT_GET_PROPERTY_REPLY.\n\n Wraps: mpv_event_property\n ", /*tp_doc*/ ++ __pyx_tp_traverse_9vidcutter_4libs_3mpv_Property, /*tp_traverse*/ ++ __pyx_tp_clear_9vidcutter_4libs_3mpv_Property, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ __pyx_methods_9vidcutter_4libs_3mpv_Property, /*tp_methods*/ ++ 0, /*tp_members*/ ++ __pyx_getsets_9vidcutter_4libs_3mpv_Property, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ 0, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv_Property, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; ++static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event __pyx_vtable_9vidcutter_4libs_3mpv_Event; ++ ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Event(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p; ++ PyObject *o; ++ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { ++ o = (*t->tp_alloc)(t, 0); ++ } else { ++ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_LogMessage(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); ++ if (unlikely(!o)) return 0; ++ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o); ++ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Event; ++ p->data = Py_None; Py_INCREF(Py_None); ++ p->reply_userdata = Py_None; Py_INCREF(Py_None); ++ return o; ++} + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Event(PyObject *o) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; ++ #if CYTHON_USE_TP_FINALIZE ++ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { ++ if (PyObject_CallFinalizerFromDealloc(o)) return; ++ } ++ #endif ++ PyObject_GC_UnTrack(o); ++ Py_CLEAR(p->data); ++ Py_CLEAR(p->reply_userdata); ++ (*Py_TYPE(o)->tp_free)(o); + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_LogMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_v___pyx_PickleError = 0; +- PyObject *__pyx_v___pyx_result = 0; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage", 0); ++static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Event(PyObject *o, visitproc v, void *a) { ++ int e; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; ++ if (p->data) { ++ e = (*v)(p->data, a); if (e) return e; ++ } ++ if (p->reply_userdata) { ++ e = (*v)(p->reply_userdata, a); if (e) return e; ++ } ++ return 0; ++} + +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0x8774fae: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) +- */ +- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x8774fae) != 0); +- if (__pyx_t_1) { ++static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Event(PyObject *o) { ++ PyObject* tmp; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; ++ tmp = ((PyObject*)p->data); ++ p->data = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->reply_userdata); ++ p->reply_userdata = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ return 0; ++} + +- /* "(tree fragment)":5 +- * cdef object __pyx_result +- * if __pyx_checksum != 0x8774fae: +- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) +- * __pyx_result = LogMessage.__new__(__pyx_type) +- */ +- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_n_s_PickleError); +- __Pyx_GIVEREF(__pyx_n_s_PickleError); +- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); +- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_2); +- __pyx_v___pyx_PickleError = __pyx_t_2; +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_error_str(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(o); ++} + +- /* "(tree fragment)":6 +- * if __pyx_checksum != 0x8774fae: +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) # <<<<<<<<<<<<<< +- * __pyx_result = LogMessage.__new__(__pyx_type) +- * if __pyx_state is not None: +- */ +- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x87, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_INCREF(__pyx_v___pyx_PickleError); +- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_Raise(__pyx_t_3, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(1, 6, __pyx_L1_error) ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_name(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(o); ++} + +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0x8774fae: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) +- */ +- } ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_id(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(o); ++} + +- /* "(tree fragment)":7 +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) +- * __pyx_result = LogMessage.__new__(__pyx_type) # <<<<<<<<<<<<<< +- * if __pyx_state is not None: +- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } ++static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(o, v); + } +- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v___pyx_result = __pyx_t_3; +- __pyx_t_3 = 0; +- +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) +- * __pyx_result = LogMessage.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ +- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); +- __pyx_t_6 = (__pyx_t_1 != 0); +- if (__pyx_t_6) { +- +- /* "(tree fragment)":9 +- * __pyx_result = LogMessage.__new__(__pyx_type) +- * if __pyx_state is not None: +- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< +- * return __pyx_result +- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): +- */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) +- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) +- * __pyx_result = LogMessage.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ ++ else { ++ PyErr_SetString(PyExc_NotImplementedError, "__del__"); ++ return -1; + } +- +- /* "(tree fragment)":10 +- * if __pyx_state is not None: +- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) +- * return __pyx_result # <<<<<<<<<<<<<< +- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): +- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v___pyx_result); +- __pyx_r = __pyx_v___pyx_result; +- goto __pyx_L0; +- +- /* "(tree fragment)":1 +- * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ +- +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v___pyx_PickleError); +- __Pyx_XDECREF(__pyx_v___pyx_result); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; + } + +-/* "(tree fragment)":11 +- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): +- */ +- +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- Py_ssize_t __pyx_t_3; +- int __pyx_t_4; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- PyObject *__pyx_t_8 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage__set_state", 0); ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_error(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(o); ++} + +- /* "(tree fragment)":12 +- * return __pyx_result +- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): +- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] # <<<<<<<<<<<<<< +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[4]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) ++static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_error(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(o, v); + } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->level); +- __Pyx_DECREF(__pyx_v___pyx_result->level); +- __pyx_v___pyx_result->level = __pyx_t_1; +- __pyx_t_1 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) ++ else { ++ PyErr_SetString(PyExc_NotImplementedError, "__del__"); ++ return -1; + } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->log_level); +- __Pyx_DECREF(__pyx_v___pyx_result->log_level); +- __pyx_v___pyx_result->log_level = __pyx_t_1; +- __pyx_t_1 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) ++} ++ ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_data(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(o); ++} ++ ++static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(o, v); + } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->prefix); +- __Pyx_DECREF(__pyx_v___pyx_result->prefix); +- __pyx_v___pyx_result->prefix = __pyx_t_1; +- __pyx_t_1 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(o); + } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->text); +- __Pyx_DECREF(__pyx_v___pyx_result->text); +- __pyx_v___pyx_result->text = __pyx_t_1; +- __pyx_t_1 = 0; ++} + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): +- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[4]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); +- __PYX_ERR(1, 13, __pyx_L1_error) ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_reply_userdata(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(o); ++} ++ ++static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_reply_userdata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { ++ if (v) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(o, v); + } +- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_4 = ((__pyx_t_3 > 4) != 0); +- if (__pyx_t_4) { +- } else { +- __pyx_t_2 = __pyx_t_4; +- goto __pyx_L4_bool_binop_done; ++ else { ++ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(o); + } +- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_5 = (__pyx_t_4 != 0); +- __pyx_t_2 = __pyx_t_5; +- __pyx_L4_bool_binop_done:; +- if (__pyx_t_2) { ++} + +- /* "(tree fragment)":14 +- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< +- */ +- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 14, __pyx_L1_error) +- } +- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_7, function); +- } +- } +- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Event[] = { ++ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__, METH_NOARGS, 0}, ++ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__, METH_O, 0}, ++ {0, 0, 0, 0} ++}; + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): +- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[4]) +- */ +- } ++static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Event[] = { ++ {(char *)"error_str", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_error_str, 0, (char *)"mpv_error_string of the error proeprty", 0}, ++ {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_name, 0, (char *)"mpv_event_name of the event id", 0}, ++ {(char *)"id", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_id, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_id, (char *)0, 0}, ++ {(char *)"error", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_error, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_error, (char *)0, 0}, ++ {(char *)"data", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_data, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_data, (char *)0, 0}, ++ {(char *)"reply_userdata", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_reply_userdata, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_reply_userdata, (char *)0, 0}, ++ {0, 0, 0, 0, 0} ++}; + +- /* "(tree fragment)":11 +- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): +- */ ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Event = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv.Event", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Event), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Event, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ ++ "Wraps: mpv_event", /*tp_doc*/ ++ __pyx_tp_traverse_9vidcutter_4libs_3mpv_Event, /*tp_traverse*/ ++ __pyx_tp_clear_9vidcutter_4libs_3mpv_Event, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ __pyx_methods_9vidcutter_4libs_3mpv_Event, /*tp_methods*/ ++ 0, /*tp_members*/ ++ __pyx_getsets_9vidcutter_4libs_3mpv_Event, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ 0, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv_Event, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; ++static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context __pyx_vtable_9vidcutter_4libs_3mpv_Context; + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Context(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p; ++ PyObject *o; ++ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { ++ o = (*t->tp_alloc)(t, 0); ++ } else { ++ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); ++ } ++ if (unlikely(!o)) return 0; ++ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o); ++ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Context; ++ p->callback = Py_None; Py_INCREF(Py_None); ++ p->callbackthread = Py_None; Py_INCREF(Py_None); ++ p->reply_userdata = Py_None; Py_INCREF(Py_None); ++ if (unlikely(__pyx_pw_9vidcutter_4libs_3mpv_7Context_33__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; ++ return o; ++ bad: ++ Py_DECREF(o); o = 0; ++ return NULL; + } + +-/* "(tree fragment)":1 +- * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ +- +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property = {"__pyx_unpickle_Property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v___pyx_type = 0; +- long __pyx_v___pyx_checksum; +- PyObject *__pyx_v___pyx_state = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__pyx_unpickle_Property (wrapper)", 0); ++static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Context(PyObject *o) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; ++ #if CYTHON_USE_TP_FINALIZE ++ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { ++ if (PyObject_CallFinalizerFromDealloc(o)) return; ++ } ++ #endif ++ PyObject_GC_UnTrack(o); + { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; +- PyObject* values[3] = {0,0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Property") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- } +- __pyx_v___pyx_type = values[0]; +- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_v___pyx_state = values[2]; ++ PyObject *etype, *eval, *etb; ++ PyErr_Fetch(&etype, &eval, &etb); ++ __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); ++ __pyx_pw_9vidcutter_4libs_3mpv_7Context_41__dealloc__(o); ++ __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); ++ PyErr_Restore(etype, eval, etb); + } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Property(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); ++ Py_CLEAR(p->callback); ++ Py_CLEAR(p->callbackthread); ++ Py_CLEAR(p->reply_userdata); ++ (*Py_TYPE(o)->tp_free)(o); ++} + +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Context(PyObject *o, visitproc v, void *a) { ++ int e; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; ++ if (p->callback) { ++ e = (*v)(p->callback, a); if (e) return e; ++ } ++ if (p->callbackthread) { ++ e = (*v)(p->callbackthread, a); if (e) return e; ++ } ++ if (p->reply_userdata) { ++ e = (*v)(p->reply_userdata, a); if (e) return e; ++ } ++ return 0; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Property(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_v___pyx_PickleError = 0; +- PyObject *__pyx_v___pyx_result = 0; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_Property", 0); +- +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0x0572d11: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) +- */ +- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x0572d11) != 0); +- if (__pyx_t_1) { ++static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Context(PyObject *o) { ++ PyObject* tmp; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; ++ tmp = ((PyObject*)p->callback); ++ p->callback = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->callbackthread); ++ p->callbackthread = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->reply_userdata); ++ p->reply_userdata = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ return 0; ++} + +- /* "(tree fragment)":5 +- * cdef object __pyx_result +- * if __pyx_checksum != 0x0572d11: +- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) +- * __pyx_result = Property.__new__(__pyx_type) +- */ +- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_n_s_PickleError); +- __Pyx_GIVEREF(__pyx_n_s_PickleError); +- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); +- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_2); +- __pyx_v___pyx_PickleError = __pyx_t_2; +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_api_version(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(o); ++} + +- /* "(tree fragment)":6 +- * if __pyx_checksum != 0x0572d11: +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) # <<<<<<<<<<<<<< +- * __pyx_result = Property.__new__(__pyx_type) +- * if __pyx_state is not None: +- */ +- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_INCREF(__pyx_v___pyx_PickleError); +- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_Raise(__pyx_t_3, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(1, 6, __pyx_L1_error) ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_name(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(o); ++} + +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0x0572d11: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) +- */ +- } ++static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_time(PyObject *o, CYTHON_UNUSED void *x) { ++ return __pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(o); ++} + +- /* "(tree fragment)":7 +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) +- * __pyx_result = Property.__new__(__pyx_type) # <<<<<<<<<<<<<< +- * if __pyx_state is not None: +- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v___pyx_result = __pyx_t_3; +- __pyx_t_3 = 0; ++static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Context[] = { ++ {"request_event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_request_event}, ++ {"set_log_level", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_3set_log_level, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_2set_log_level}, ++ {"load_config", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_5load_config, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_4load_config}, ++ {"_format_for", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_7_format_for, METH_O, 0}, ++ {"command", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_8command}, ++ {"get_property_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_10get_property_async}, ++ {"try_get_property_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_async, METH_VARARGS|METH_KEYWORDS, 0}, ++ {"try_get_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property, METH_VARARGS|METH_KEYWORDS, 0}, ++ {"get_property", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_17get_property, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_16get_property}, ++ {"set_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_18set_property}, ++ {"set_option", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_20set_option}, ++ {"initialize", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_23initialize, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_22initialize}, ++ {"wait_event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_24wait_event}, ++ {"wakeup", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_27wakeup, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_26wakeup}, ++ {"set_wakeup_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_29set_wakeup_callback, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback}, ++ {"get_wakeup_pipe", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_31get_wakeup_pipe, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe}, ++ {"observe_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_34observe_property}, ++ {"unobserve_property", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_37unobserve_property, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_36unobserve_property}, ++ {"shutdown", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_39shutdown, METH_NOARGS, 0}, ++ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_43__reduce_cython__, METH_NOARGS, 0}, ++ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_45__setstate_cython__, METH_O, 0}, ++ {0, 0, 0, 0} ++}; + +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) +- * __pyx_result = Property.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ +- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); +- __pyx_t_6 = (__pyx_t_1 != 0); +- if (__pyx_t_6) { ++static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Context[] = { ++ {(char *)"api_version", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_api_version, 0, (char *)0, 0}, ++ {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_name, 0, (char *)"Unique name for every context created.\n\n Wraps: mpv_client_name\n ", 0}, ++ {(char *)"time", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_time, 0, (char *)"Internal mpv client time.\n\n Has an arbitrary start offset, but will never wrap or go backwards.\n\n Wraps: mpv_get_time_us\n ", 0}, ++ {0, 0, 0, 0, 0} ++}; + +- /* "(tree fragment)":9 +- * __pyx_result = Property.__new__(__pyx_type) +- * if __pyx_state is not None: +- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< +- * return __pyx_result +- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): +- */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) +- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Context = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv.Context", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Context), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Context, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ ++ "Base class wrapping a context to interact with mpv.\n\n Assume all calls can raise MPVError.\n\n Wraps: mpv_create, mpv_destroy and all mpv_handle related calls\n ", /*tp_doc*/ ++ __pyx_tp_traverse_9vidcutter_4libs_3mpv_Context, /*tp_traverse*/ ++ __pyx_tp_clear_9vidcutter_4libs_3mpv_Context, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ __pyx_methods_9vidcutter_4libs_3mpv_Context, /*tp_methods*/ ++ 0, /*tp_members*/ ++ __pyx_getsets_9vidcutter_4libs_3mpv_Context, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ 0, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv_Context, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; ++static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; + +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) +- * __pyx_result = Property.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p; ++ PyObject *o; ++ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { ++ o = (*t->tp_alloc)(t, 0); ++ } else { ++ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } ++ if (unlikely(!o)) return 0; ++ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o); ++ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams; ++ p->owned = Py_None; Py_INCREF(Py_None); ++ return o; ++} + +- /* "(tree fragment)":10 +- * if __pyx_state is not None: +- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) +- * return __pyx_result # <<<<<<<<<<<<<< +- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): +- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v___pyx_result); +- __pyx_r = __pyx_v___pyx_result; +- goto __pyx_L0; ++static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv__RenderParams(PyObject *o) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; ++ #if CYTHON_USE_TP_FINALIZE ++ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { ++ if (PyObject_CallFinalizerFromDealloc(o)) return; ++ } ++ #endif ++ PyObject_GC_UnTrack(o); ++ { ++ PyObject *etype, *eval, *etb; ++ PyErr_Fetch(&etype, &eval, &etb); ++ __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); ++ __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(o); ++ __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); ++ PyErr_Restore(etype, eval, etb); ++ } ++ Py_CLEAR(p->owned); ++ (*Py_TYPE(o)->tp_free)(o); ++} + +- /* "(tree fragment)":1 +- * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ ++static int __pyx_tp_traverse_9vidcutter_4libs_3mpv__RenderParams(PyObject *o, visitproc v, void *a) { ++ int e; ++ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; ++ if (p->owned) { ++ e = (*v)(p->owned, a); if (e) return e; ++ } ++ return 0; ++} + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v___pyx_PickleError); +- __Pyx_XDECREF(__pyx_v___pyx_result); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static int __pyx_tp_clear_9vidcutter_4libs_3mpv__RenderParams(PyObject *o) { ++ PyObject* tmp; ++ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; ++ tmp = ((PyObject*)p->owned); ++ p->owned = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ return 0; + } + +-/* "(tree fragment)":11 +- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- */ ++static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv__RenderParams[] = { ++ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__, METH_NOARGS, 0}, ++ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__, METH_O, 0}, ++ {0, 0, 0, 0} ++}; + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- Py_ssize_t __pyx_t_3; +- int __pyx_t_4; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- PyObject *__pyx_t_8 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_Property__set_state", 0); ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv__RenderParams = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv._RenderParams", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv__RenderParams, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ ++ 0, /*tp_doc*/ ++ __pyx_tp_traverse_9vidcutter_4libs_3mpv__RenderParams, /*tp_traverse*/ ++ __pyx_tp_clear_9vidcutter_4libs_3mpv__RenderParams, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ __pyx_methods_9vidcutter_4libs_3mpv__RenderParams, /*tp_methods*/ ++ 0, /*tp_members*/ ++ 0, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; ++static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; + +- /* "(tree fragment)":12 +- * return __pyx_result +- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): +- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] # <<<<<<<<<<<<<< +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[2]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) +- } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->data); +- __Pyx_DECREF(__pyx_v___pyx_result->data); +- __pyx_v___pyx_result->data = __pyx_t_1; +- __pyx_t_1 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *p; ++ PyObject *o; ++ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { ++ o = (*t->tp_alloc)(t, 0); ++ } else { ++ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->name); +- __Pyx_DECREF(__pyx_v___pyx_result->name); +- __pyx_v___pyx_result->name = __pyx_t_1; +- __pyx_t_1 = 0; ++ if (unlikely(!o)) return 0; ++ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)o); ++ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo; ++ return o; ++} + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): +- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[2]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); +- __PYX_ERR(1, 13, __pyx_L1_error) +- } +- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_4 = ((__pyx_t_3 > 2) != 0); +- if (__pyx_t_4) { +- } else { +- __pyx_t_2 = __pyx_t_4; +- goto __pyx_L4_bool_binop_done; ++static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderFrameInfo(PyObject *o) { ++ #if CYTHON_USE_TP_FINALIZE ++ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { ++ if (PyObject_CallFinalizerFromDealloc(o)) return; + } +- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_5 = (__pyx_t_4 != 0); +- __pyx_t_2 = __pyx_t_5; +- __pyx_L4_bool_binop_done:; +- if (__pyx_t_2) { ++ #endif ++ (*Py_TYPE(o)->tp_free)(o); ++} + +- /* "(tree fragment)":14 +- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< +- */ +- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 14, __pyx_L1_error) +- } +- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_7, function); +- } +- } +- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_RenderFrameInfo[] = { ++ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__, METH_NOARGS, 0}, ++ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__, METH_O, 0}, ++ {0, 0, 0, 0} ++}; + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): +- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[2]) +- */ +- } +- +- /* "(tree fragment)":11 +- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): +- */ ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv.RenderFrameInfo", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ ++ 0, /*tp_doc*/ ++ 0, /*tp_traverse*/ ++ 0, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ __pyx_methods_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_methods*/ ++ 0, /*tp_members*/ ++ 0, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ 0, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; + +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p; ++ PyObject *o; ++ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { ++ o = (*t->tp_alloc)(t, 0); ++ } else { ++ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); ++ } ++ if (unlikely(!o)) return 0; ++ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o); ++ p->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)Py_None); Py_INCREF(Py_None); ++ p->update_cb = Py_None; Py_INCREF(Py_None); ++ p->_x11_display = Py_None; Py_INCREF(Py_None); ++ p->_wl_display = Py_None; Py_INCREF(Py_None); ++ p->_get_proc_address = Py_None; Py_INCREF(Py_None); ++ return o; + } + +-/* "(tree fragment)":1 +- * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ +- +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event = {"__pyx_unpickle_Event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v___pyx_type = 0; +- long __pyx_v___pyx_checksum; +- PyObject *__pyx_v___pyx_state = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__pyx_unpickle_Event (wrapper)", 0); ++static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext(PyObject *o) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; ++ #if CYTHON_USE_TP_FINALIZE ++ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { ++ if (PyObject_CallFinalizerFromDealloc(o)) return; ++ } ++ #endif ++ PyObject_GC_UnTrack(o); + { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; +- PyObject* values[3] = {0,0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Event") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- } +- __pyx_v___pyx_type = values[0]; +- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_v___pyx_state = values[2]; ++ PyObject *etype, *eval, *etb; ++ PyErr_Fetch(&etype, &eval, &etb); ++ __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); ++ __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(o); ++ __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); ++ PyErr_Restore(etype, eval, etb); + } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_Event(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++ Py_CLEAR(p->_mpv); ++ Py_CLEAR(p->update_cb); ++ Py_CLEAR(p->_x11_display); ++ Py_CLEAR(p->_wl_display); ++ Py_CLEAR(p->_get_proc_address); ++ (*Py_TYPE(o)->tp_free)(o); + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_Event(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_v___pyx_PickleError = 0; +- PyObject *__pyx_v___pyx_result = 0; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_Event", 0); +- +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0xda38c25: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) +- */ +- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xda38c25) != 0); +- if (__pyx_t_1) { ++static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext(PyObject *o, visitproc v, void *a) { ++ int e; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; ++ if (p->_mpv) { ++ e = (*v)(((PyObject *)p->_mpv), a); if (e) return e; ++ } ++ if (p->update_cb) { ++ e = (*v)(p->update_cb, a); if (e) return e; ++ } ++ if (p->_x11_display) { ++ e = (*v)(p->_x11_display, a); if (e) return e; ++ } ++ if (p->_wl_display) { ++ e = (*v)(p->_wl_display, a); if (e) return e; ++ } ++ if (p->_get_proc_address) { ++ e = (*v)(p->_get_proc_address, a); if (e) return e; ++ } ++ return 0; ++} + +- /* "(tree fragment)":5 +- * cdef object __pyx_result +- * if __pyx_checksum != 0xda38c25: +- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) +- * __pyx_result = Event.__new__(__pyx_type) +- */ +- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_n_s_PickleError); +- __Pyx_GIVEREF(__pyx_n_s_PickleError); +- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); +- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_2); +- __pyx_v___pyx_PickleError = __pyx_t_2; +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- +- /* "(tree fragment)":6 +- * if __pyx_checksum != 0xda38c25: +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) # <<<<<<<<<<<<<< +- * __pyx_result = Event.__new__(__pyx_type) +- * if __pyx_state is not None: +- */ +- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xda, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_INCREF(__pyx_v___pyx_PickleError); +- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_Raise(__pyx_t_3, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(1, 6, __pyx_L1_error) +- +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0xda38c25: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) +- */ +- } +- +- /* "(tree fragment)":7 +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) +- * __pyx_result = Event.__new__(__pyx_type) # <<<<<<<<<<<<<< +- * if __pyx_state is not None: +- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v___pyx_result = __pyx_t_3; +- __pyx_t_3 = 0; +- +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) +- * __pyx_result = Event.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ +- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); +- __pyx_t_6 = (__pyx_t_1 != 0); +- if (__pyx_t_6) { +- +- /* "(tree fragment)":9 +- * __pyx_result = Event.__new__(__pyx_type) +- * if __pyx_state is not None: +- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< +- * return __pyx_result +- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): +- */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) +- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) +- * __pyx_result = Event.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ +- } ++static int __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext(PyObject *o) { ++ PyObject* tmp; ++ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; ++ tmp = ((PyObject*)p->_mpv); ++ p->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)Py_None); Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->update_cb); ++ p->update_cb = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->_x11_display); ++ p->_x11_display = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->_wl_display); ++ p->_wl_display = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ tmp = ((PyObject*)p->_get_proc_address); ++ p->_get_proc_address = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ return 0; ++} + +- /* "(tree fragment)":10 +- * if __pyx_state is not None: +- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) +- * return __pyx_result # <<<<<<<<<<<<<< +- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): +- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v___pyx_result); +- __pyx_r = __pyx_v___pyx_result; +- goto __pyx_L0; ++static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_RenderContext[] = { ++ {"set_icc_profile", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile, METH_O, 0}, ++ {"set_ambient_light", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light, METH_O, 0}, ++ {"get_next_frame_info", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info, METH_NOARGS, 0}, ++ {"set_update_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback, METH_O, 0}, ++ {"update", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update, METH_NOARGS, 0}, ++ {"render", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render, METH_VARARGS|METH_KEYWORDS, 0}, ++ {"report_swap", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap, METH_NOARGS, 0}, ++ {"free", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free, METH_NOARGS, 0}, ++ {"close", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close, METH_NOARGS, 0}, ++ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__, METH_NOARGS, 0}, ++ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__, METH_O, 0}, ++ {0, 0, 0, 0} ++}; + +- /* "(tree fragment)":1 +- * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_RenderContext = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv.RenderContext", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ ++ 0, /*tp_doc*/ ++ __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext, /*tp_traverse*/ ++ __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ __pyx_methods_9vidcutter_4libs_3mpv_RenderContext, /*tp_methods*/ ++ 0, /*tp_members*/ ++ 0, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; + +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v___pyx_PickleError); +- __Pyx_XDECREF(__pyx_v___pyx_result); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext(PyTypeObject *t, PyObject *a, PyObject *k) { ++ PyObject *o = __pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(t, a, k); ++ if (unlikely(!o)) return 0; ++ return o; + } + +-/* "(tree fragment)":11 +- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): +- */ ++static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_OpenGLRenderContext[] = { ++ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__, METH_NOARGS, 0}, ++ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__, METH_O, 0}, ++ {0, 0, 0, 0} ++}; + +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- PyObject *__pyx_t_1 = NULL; +- int __pyx_t_2; +- enum mpv_event_id __pyx_t_3; +- int __pyx_t_4; +- Py_ssize_t __pyx_t_5; +- int __pyx_t_6; +- int __pyx_t_7; +- PyObject *__pyx_t_8 = NULL; +- PyObject *__pyx_t_9 = NULL; +- PyObject *__pyx_t_10 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_Event__set_state", 0); ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv.OpenGLRenderContext", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ ++ 0, /*tp_doc*/ ++ __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext, /*tp_traverse*/ ++ __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ __pyx_methods_9vidcutter_4libs_3mpv_OpenGLRenderContext, /*tp_methods*/ ++ 0, /*tp_members*/ ++ 0, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; + +- /* "(tree fragment)":12 +- * return __pyx_result +- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): +- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] # <<<<<<<<<<<<<< +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[4]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) +- } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->data); +- __Pyx_DECREF(__pyx_v___pyx_result->data); +- __pyx_v___pyx_result->data = __pyx_t_1; +- __pyx_t_1 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) +- } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v___pyx_result->error = __pyx_t_2; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) +- } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_v___pyx_result->id = __pyx_t_3; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 12, __pyx_L1_error) +- } +- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_1); +- __Pyx_GOTREF(__pyx_v___pyx_result->reply_userdata); +- __Pyx_DECREF(__pyx_v___pyx_result->reply_userdata); +- __pyx_v___pyx_result->reply_userdata = __pyx_t_1; +- __pyx_t_1 = 0; ++static struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[8]; ++static int __pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = 0; + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): +- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[4]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); +- __PYX_ERR(1, 13, __pyx_L1_error) +- } +- __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_6 = ((__pyx_t_5 > 4) != 0); +- if (__pyx_t_6) { ++static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { ++ PyObject *o; ++ if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)))) { ++ o = (PyObject*)__pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[--__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors]; ++ memset(o, 0, sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)); ++ (void) PyObject_INIT(o, t); ++ PyObject_GC_Track(o); + } else { +- __pyx_t_4 = __pyx_t_6; +- goto __pyx_L4_bool_binop_done; ++ o = (*t->tp_alloc)(t, 0); ++ if (unlikely(!o)) return 0; + } +- __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) +- __pyx_t_7 = (__pyx_t_6 != 0); +- __pyx_t_4 = __pyx_t_7; +- __pyx_L4_bool_binop_done:; +- if (__pyx_t_4) { +- +- /* "(tree fragment)":14 +- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< +- */ +- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_8); +- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_9); +- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 14, __pyx_L1_error) +- } +- __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_8); +- __pyx_t_10 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { +- __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); +- if (likely(__pyx_t_10)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); +- __Pyx_INCREF(__pyx_t_10); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_9, function); +- } +- } +- __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); +- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; +- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ return o; ++} + +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): +- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[4]) +- */ ++static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o) { ++ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; ++ PyObject_GC_UnTrack(o); ++ Py_CLEAR(p->__pyx_v_fn); ++ if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)))) { ++ __pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors++] = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o); ++ } else { ++ (*Py_TYPE(o)->tp_free)(o); + } ++} + +- /* "(tree fragment)":11 +- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): +- */ +- +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_XDECREF(__pyx_t_9); +- __Pyx_XDECREF(__pyx_t_10); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static int __pyx_tp_traverse_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o, visitproc v, void *a) { ++ int e; ++ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; ++ if (p->__pyx_v_fn) { ++ e = (*v)(p->__pyx_v_fn, a); if (e) return e; ++ } ++ return 0; + } + +-/* "(tree fragment)":1 +- * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ +- +-/* Python wrapper */ +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +-static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo = {"__pyx_unpickle_RenderFrameInfo", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo, METH_VARARGS|METH_KEYWORDS, 0}; +-static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +- PyObject *__pyx_v___pyx_type = 0; +- long __pyx_v___pyx_checksum; +- PyObject *__pyx_v___pyx_state = 0; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- PyObject *__pyx_r = 0; +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo (wrapper)", 0); +- { +- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; +- PyObject* values[3] = {0,0,0}; +- if (unlikely(__pyx_kwds)) { +- Py_ssize_t kw_args; +- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); +- switch (pos_args) { +- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- CYTHON_FALLTHROUGH; +- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- CYTHON_FALLTHROUGH; +- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- CYTHON_FALLTHROUGH; +- case 0: break; +- default: goto __pyx_L5_argtuple_error; +- } +- kw_args = PyDict_Size(__pyx_kwds); +- switch (pos_args) { +- case 0: +- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; +- else goto __pyx_L5_argtuple_error; +- CYTHON_FALLTHROUGH; +- case 1: +- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; +- else { +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } +- if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_RenderFrameInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) +- } +- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { +- goto __pyx_L5_argtuple_error; +- } else { +- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); +- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); +- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); +- } +- __pyx_v___pyx_type = values[0]; +- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_v___pyx_state = values[2]; +- } +- goto __pyx_L4_argument_unpacking_done; +- __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) +- __pyx_L3_error:; +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __Pyx_RefNannyFinishContext(); +- return NULL; +- __pyx_L4_argument_unpacking_done:; +- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_16__pyx_unpickle_RenderFrameInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); +- +- /* function exit code */ +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; ++static int __pyx_tp_clear_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o) { ++ PyObject* tmp; ++ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; ++ tmp = ((PyObject*)p->__pyx_v_fn); ++ p->__pyx_v_fn = Py_None; Py_INCREF(Py_None); ++ Py_XDECREF(tmp); ++ return 0; + } + +-static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16__pyx_unpickle_RenderFrameInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_v___pyx_PickleError = 0; +- PyObject *__pyx_v___pyx_result = 0; +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- PyObject *__pyx_t_2 = NULL; +- PyObject *__pyx_t_3 = NULL; +- PyObject *__pyx_t_4 = NULL; +- PyObject *__pyx_t_5 = NULL; +- int __pyx_t_6; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo", 0); +- +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) +- */ +- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd41d8cd) != 0); +- if (__pyx_t_1) { +- +- /* "(tree fragment)":5 +- * cdef object __pyx_result +- * if __pyx_checksum != 0xd41d8cd: +- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) +- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) +- */ +- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_n_s_PickleError); +- __Pyx_GIVEREF(__pyx_n_s_PickleError); +- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); +- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_2); +- __pyx_v___pyx_PickleError = __pyx_t_2; +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "vidcutter.libs.mpv.__pyx_scope_struct___errors", /*tp_name*/ ++ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors), /*tp_basicsize*/ ++ 0, /*tp_itemsize*/ ++ __pyx_tp_dealloc_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_dealloc*/ ++ #if PY_VERSION_HEX < 0x030800b4 ++ 0, /*tp_print*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 ++ 0, /*tp_vectorcall_offset*/ ++ #endif ++ 0, /*tp_getattr*/ ++ 0, /*tp_setattr*/ ++ #if PY_MAJOR_VERSION < 3 ++ 0, /*tp_compare*/ ++ #endif ++ #if PY_MAJOR_VERSION >= 3 ++ 0, /*tp_as_async*/ ++ #endif ++ 0, /*tp_repr*/ ++ 0, /*tp_as_number*/ ++ 0, /*tp_as_sequence*/ ++ 0, /*tp_as_mapping*/ ++ 0, /*tp_hash*/ ++ 0, /*tp_call*/ ++ 0, /*tp_str*/ ++ 0, /*tp_getattro*/ ++ 0, /*tp_setattro*/ ++ 0, /*tp_as_buffer*/ ++ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ ++ 0, /*tp_doc*/ ++ __pyx_tp_traverse_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_traverse*/ ++ __pyx_tp_clear_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_clear*/ ++ 0, /*tp_richcompare*/ ++ 0, /*tp_weaklistoffset*/ ++ 0, /*tp_iter*/ ++ 0, /*tp_iternext*/ ++ 0, /*tp_methods*/ ++ 0, /*tp_members*/ ++ 0, /*tp_getset*/ ++ 0, /*tp_base*/ ++ 0, /*tp_dict*/ ++ 0, /*tp_descr_get*/ ++ 0, /*tp_descr_set*/ ++ 0, /*tp_dictoffset*/ ++ 0, /*tp_init*/ ++ 0, /*tp_alloc*/ ++ __pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_new*/ ++ 0, /*tp_free*/ ++ 0, /*tp_is_gc*/ ++ 0, /*tp_bases*/ ++ 0, /*tp_mro*/ ++ 0, /*tp_cache*/ ++ 0, /*tp_subclasses*/ ++ 0, /*tp_weaklist*/ ++ 0, /*tp_del*/ ++ 0, /*tp_version_tag*/ ++ #if PY_VERSION_HEX >= 0x030400a1 ++ 0, /*tp_finalize*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, /*tp_vectorcall*/ ++ #endif ++ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, /*tp_print*/ ++ #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif ++}; + +- /* "(tree fragment)":6 +- * if __pyx_checksum != 0xd41d8cd: +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) # <<<<<<<<<<<<<< +- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) +- * if __pyx_state is not None: +- */ +- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_INCREF(__pyx_v___pyx_PickleError); +- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_5)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_5); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_Raise(__pyx_t_3, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(1, 6, __pyx_L1_error) ++static PyMethodDef __pyx_methods[] = { ++ {0, 0, 0, 0} ++}; + +- /* "(tree fragment)":4 +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) +- */ +- } ++#if PY_MAJOR_VERSION >= 3 ++#if CYTHON_PEP489_MULTI_PHASE_INIT ++static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ ++static int __pyx_pymod_exec_mpv(PyObject* module); /*proto*/ ++static PyModuleDef_Slot __pyx_moduledef_slots[] = { ++ {Py_mod_create, (void*)__pyx_pymod_create}, ++ {Py_mod_exec, (void*)__pyx_pymod_exec_mpv}, ++ {0, NULL} ++}; ++#endif + +- /* "(tree fragment)":7 +- * from pickle import PickleError as __pyx_PickleError +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) +- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) # <<<<<<<<<<<<<< +- * if __pyx_state is not None: +- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) +- */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); +- if (likely(__pyx_t_4)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); +- __Pyx_INCREF(__pyx_t_4); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_2, function); +- } +- } +- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); +- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_v___pyx_result = __pyx_t_3; +- __pyx_t_3 = 0; +- +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) +- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ +- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); +- __pyx_t_6 = (__pyx_t_1 != 0); +- if (__pyx_t_6) { +- +- /* "(tree fragment)":9 +- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) +- * if __pyx_state is not None: +- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< +- * return __pyx_result +- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): +- */ +- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) +- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_3); +- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- +- /* "(tree fragment)":8 +- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) +- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) +- * if __pyx_state is not None: # <<<<<<<<<<<<<< +- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- */ +- } +- +- /* "(tree fragment)":10 +- * if __pyx_state is not None: +- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) +- * return __pyx_result # <<<<<<<<<<<<<< +- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): +- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): +- */ +- __Pyx_XDECREF(__pyx_r); +- __Pyx_INCREF(__pyx_v___pyx_result); +- __pyx_r = __pyx_v___pyx_result; +- goto __pyx_L0; +- +- /* "(tree fragment)":1 +- * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ +- +- /* function exit code */ +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_3); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = NULL; +- __pyx_L0:; +- __Pyx_XDECREF(__pyx_v___pyx_PickleError); +- __Pyx_XDECREF(__pyx_v___pyx_result); +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +- +-/* "(tree fragment)":11 +- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[0]) +- */ +- +-static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +- PyObject *__pyx_r = NULL; +- __Pyx_RefNannyDeclarations +- int __pyx_t_1; +- Py_ssize_t __pyx_t_2; +- int __pyx_t_3; +- int __pyx_t_4; +- PyObject *__pyx_t_5 = NULL; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- PyObject *__pyx_t_8 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo__set_state", 0); +- +- /* "(tree fragment)":12 +- * return __pyx_result +- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): +- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[0]) +- */ +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); +- __PYX_ERR(1, 12, __pyx_L1_error) +- } +- __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 12, __pyx_L1_error) +- __pyx_t_3 = ((__pyx_t_2 > 0) != 0); +- if (__pyx_t_3) { +- } else { +- __pyx_t_1 = __pyx_t_3; +- goto __pyx_L4_bool_binop_done; +- } +- __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 12, __pyx_L1_error) +- __pyx_t_4 = (__pyx_t_3 != 0); +- __pyx_t_1 = __pyx_t_4; +- __pyx_L4_bool_binop_done:; +- if (__pyx_t_1) { +- +- /* "(tree fragment)":13 +- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): +- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[0]) # <<<<<<<<<<<<<< +- */ +- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(__pyx_v___pyx_state == Py_None)) { +- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +- __PYX_ERR(1, 13, __pyx_L1_error) +- } +- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_8 = NULL; +- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { +- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); +- if (likely(__pyx_t_8)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); +- __Pyx_INCREF(__pyx_t_8); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_7, function); +- } +- } +- __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); +- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_5); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +- +- /* "(tree fragment)":12 +- * return __pyx_result +- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): +- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< +- * __pyx_result.__dict__.update(__pyx_state[0]) +- */ +- } +- +- /* "(tree fragment)":11 +- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): +- * __pyx_result.__dict__.update(__pyx_state[0]) +- */ +- +- /* function exit code */ +- __pyx_r = Py_None; __Pyx_INCREF(Py_None); +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_5); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- __Pyx_XDECREF(__pyx_t_8); +- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); +- __pyx_r = 0; +- __pyx_L0:; +- __Pyx_XGIVEREF(__pyx_r); +- __Pyx_RefNannyFinishContext(); +- return __pyx_r; +-} +-static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o); +- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached; +- p->reason = Py_None; Py_INCREF(Py_None); +- p->error = Py_None; Py_INCREF(Py_None); +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } ++static struct PyModuleDef __pyx_moduledef = { ++ PyModuleDef_HEAD_INIT, ++ "mpv", ++ __pyx_k_pympv_Python_wrapper_for_libmpv, /* m_doc */ ++ #if CYTHON_PEP489_MULTI_PHASE_INIT ++ 0, /* m_size */ ++ #else ++ -1, /* m_size */ + #endif +- PyObject_GC_UnTrack(o); +- Py_CLEAR(p->reason); +- Py_CLEAR(p->error); +- (*Py_TYPE(o)->tp_free)(o); +-} ++ __pyx_methods /* m_methods */, ++ #if CYTHON_PEP489_MULTI_PHASE_INIT ++ __pyx_moduledef_slots, /* m_slots */ ++ #else ++ NULL, /* m_reload */ ++ #endif ++ NULL, /* m_traverse */ ++ NULL, /* m_clear */ ++ NULL /* m_free */ ++}; ++#endif ++#ifndef CYTHON_SMALL_CODE ++#if defined(__clang__) ++ #define CYTHON_SMALL_CODE ++#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) ++ #define CYTHON_SMALL_CODE __attribute__((cold)) ++#else ++ #define CYTHON_SMALL_CODE ++#endif ++#endif + +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; +- if (p->reason) { +- e = (*v)(p->reason, a); if (e) return e; +- } +- if (p->error) { +- e = (*v)(p->error, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; +- tmp = ((PyObject*)p->reason); +- p->reason = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->error); +- p->error = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_5__del__(o); +- } +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_5__del__(o); +- } +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_EndOfFileReached[] = { +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_1__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_3__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_EndOfFileReached[] = { +- {(char *)"reason", __pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason, __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason, (char *)0, 0}, +- {(char *)"error", __pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error, __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error, (char *)0, 0}, +- {0, 0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.EndOfFileReached", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- "Data field for MPV_EVENT_END_FILE events\n\n Wraps: mpv_event_end_file\n ", /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_methods*/ +- 0, /*tp_members*/ +- __pyx_getsets_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- 0, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +-static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch __pyx_vtable_9vidcutter_4libs_3mpv_InputDispatch; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_InputDispatch(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)o); +- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_InputDispatch; +- p->arg0 = Py_None; Py_INCREF(Py_None); +- p->type = Py_None; Py_INCREF(Py_None); +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_InputDispatch(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)o; +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } +- #endif +- PyObject_GC_UnTrack(o); +- Py_CLEAR(p->arg0); +- Py_CLEAR(p->type); +- (*Py_TYPE(o)->tp_free)(o); +-} +- +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_InputDispatch(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)o; +- if (p->arg0) { +- e = (*v)(p->arg0, a); if (e) return e; +- } +- if (p->type) { +- e = (*v)(p->type, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv_InputDispatch(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)o; +- tmp = ((PyObject*)p->arg0); +- p->arg0 = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->type); +- p->type = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_13InputDispatch_arg0(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_13InputDispatch_arg0(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_5__del__(o); +- } +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_13InputDispatch_type(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_13InputDispatch_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_5__del__(o); +- } +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_InputDispatch[] = { +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_1__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_3__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_InputDispatch[] = { +- {(char *)"arg0", __pyx_getprop_9vidcutter_4libs_3mpv_13InputDispatch_arg0, __pyx_setprop_9vidcutter_4libs_3mpv_13InputDispatch_arg0, (char *)0, 0}, +- {(char *)"type", __pyx_getprop_9vidcutter_4libs_3mpv_13InputDispatch_type, __pyx_setprop_9vidcutter_4libs_3mpv_13InputDispatch_type, (char *)0, 0}, +- {0, 0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_InputDispatch = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.InputDispatch", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_InputDispatch, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- "Data field for MPV_EVENT_SCRIPT_INPUT_DISPATCH events.\n\n Wraps: mpv_event_script_input_dispatch\n ", /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv_InputDispatch, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv_InputDispatch, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_InputDispatch, /*tp_methods*/ +- 0, /*tp_members*/ +- __pyx_getsets_9vidcutter_4libs_3mpv_InputDispatch, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- 0, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_InputDispatch, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +-static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o); +- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage; +- p->prefix = Py_None; Py_INCREF(Py_None); +- p->level = Py_None; Py_INCREF(Py_None); +- p->text = Py_None; Py_INCREF(Py_None); +- p->log_level = Py_None; Py_INCREF(Py_None); +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_LogMessage(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } +- #endif +- PyObject_GC_UnTrack(o); +- Py_CLEAR(p->prefix); +- Py_CLEAR(p->level); +- Py_CLEAR(p->text); +- Py_CLEAR(p->log_level); +- (*Py_TYPE(o)->tp_free)(o); +-} +- +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_LogMessage(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; +- if (p->prefix) { +- e = (*v)(p->prefix, a); if (e) return e; +- } +- if (p->level) { +- e = (*v)(p->level, a); if (e) return e; +- } +- if (p->text) { +- e = (*v)(p->text, a); if (e) return e; +- } +- if (p->log_level) { +- e = (*v)(p->log_level, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv_LogMessage(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; +- tmp = ((PyObject*)p->prefix); +- p->prefix = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->level); +- p->level = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->text); +- p->text = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->log_level); +- p->log_level = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_prefix(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_prefix(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(o); +- } +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_level(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_level(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(o); +- } +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_text(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_text(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(o); +- } +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_log_level(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_log_level(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(o); +- } +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_LogMessage[] = { +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_LogMessage[] = { +- {(char *)"prefix", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_prefix, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_prefix, (char *)0, 0}, +- {(char *)"level", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_level, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_level, (char *)0, 0}, +- {(char *)"text", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_text, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_text, (char *)0, 0}, +- {(char *)"log_level", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_log_level, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_log_level, (char *)0, 0}, +- {0, 0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_LogMessage = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.LogMessage", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_LogMessage, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- "Data field for MPV_EVENT_LOG_MESSAGE events.\n\n Wraps: mpv_event_log_message\n ", /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv_LogMessage, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv_LogMessage, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_LogMessage, /*tp_methods*/ +- 0, /*tp_members*/ +- __pyx_getsets_9vidcutter_4libs_3mpv_LogMessage, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- 0, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +-static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property __pyx_vtable_9vidcutter_4libs_3mpv_Property; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Property(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o); +- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Property; +- p->name = Py_None; Py_INCREF(Py_None); +- p->data = Py_None; Py_INCREF(Py_None); +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Property(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } +- #endif +- PyObject_GC_UnTrack(o); +- Py_CLEAR(p->name); +- Py_CLEAR(p->data); +- (*Py_TYPE(o)->tp_free)(o); +-} +- +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Property(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; +- if (p->name) { +- e = (*v)(p->name, a); if (e) return e; +- } +- if (p->data) { +- e = (*v)(p->data, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Property(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; +- tmp = ((PyObject*)p->name); +- p->name = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->data); +- p->data = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_8Property_name(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_8Property_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(o); +- } +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_8Property_data(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_8Property_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(o); +- } +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Property[] = { +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Property[] = { +- {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_8Property_name, __pyx_setprop_9vidcutter_4libs_3mpv_8Property_name, (char *)0, 0}, +- {(char *)"data", __pyx_getprop_9vidcutter_4libs_3mpv_8Property_data, __pyx_setprop_9vidcutter_4libs_3mpv_8Property_data, (char *)0, 0}, +- {0, 0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Property = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.Property", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Property), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Property, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- "Data field for MPV_EVENT_PROPERTY_CHANGE and MPV_EVENT_GET_PROPERTY_REPLY.\n\n Wraps: mpv_event_property\n ", /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv_Property, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv_Property, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_Property, /*tp_methods*/ +- 0, /*tp_members*/ +- __pyx_getsets_9vidcutter_4libs_3mpv_Property, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- 0, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_Property, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +-static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event __pyx_vtable_9vidcutter_4libs_3mpv_Event; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Event(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o); +- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Event; +- p->data = Py_None; Py_INCREF(Py_None); +- p->reply_userdata = Py_None; Py_INCREF(Py_None); +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Event(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } +- #endif +- PyObject_GC_UnTrack(o); +- Py_CLEAR(p->data); +- Py_CLEAR(p->reply_userdata); +- (*Py_TYPE(o)->tp_free)(o); +-} +- +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Event(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; +- if (p->data) { +- e = (*v)(p->data, a); if (e) return e; +- } +- if (p->reply_userdata) { +- e = (*v)(p->reply_userdata, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Event(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; +- tmp = ((PyObject*)p->data); +- p->data = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->reply_userdata); +- p->reply_userdata = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_error_str(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(o); +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_name(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(o); +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_id(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(o, v); +- } +- else { +- PyErr_SetString(PyExc_NotImplementedError, "__del__"); +- return -1; +- } +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_error(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_error(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(o, v); +- } +- else { +- PyErr_SetString(PyExc_NotImplementedError, "__del__"); +- return -1; +- } +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_data(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(o); +- } +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_reply_userdata(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(o); +-} +- +-static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_reply_userdata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +- if (v) { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(o, v); +- } +- else { +- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(o); +- } +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Event[] = { +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Event[] = { +- {(char *)"error_str", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_error_str, 0, (char *)"mpv_error_string of the error proeprty", 0}, +- {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_name, 0, (char *)"mpv_event_name of the event id", 0}, +- {(char *)"id", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_id, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_id, (char *)0, 0}, +- {(char *)"error", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_error, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_error, (char *)0, 0}, +- {(char *)"data", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_data, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_data, (char *)0, 0}, +- {(char *)"reply_userdata", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_reply_userdata, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_reply_userdata, (char *)0, 0}, +- {0, 0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Event = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.Event", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Event), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Event, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- "Wraps: mpv_event", /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv_Event, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv_Event, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_Event, /*tp_methods*/ +- 0, /*tp_members*/ +- __pyx_getsets_9vidcutter_4libs_3mpv_Event, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- 0, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_Event, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +-static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context __pyx_vtable_9vidcutter_4libs_3mpv_Context; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Context(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o); +- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Context; +- p->callback = Py_None; Py_INCREF(Py_None); +- p->callbackthread = Py_None; Py_INCREF(Py_None); +- p->reply_userdata = Py_None; Py_INCREF(Py_None); +- if (unlikely(__pyx_pw_9vidcutter_4libs_3mpv_7Context_37__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; +- return o; +- bad: +- Py_DECREF(o); o = 0; +- return NULL; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Context(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } +- #endif +- PyObject_GC_UnTrack(o); +- { +- PyObject *etype, *eval, *etb; +- PyErr_Fetch(&etype, &eval, &etb); +- __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); +- __pyx_pw_9vidcutter_4libs_3mpv_7Context_47__dealloc__(o); +- __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); +- PyErr_Restore(etype, eval, etb); +- } +- Py_CLEAR(p->callback); +- Py_CLEAR(p->callbackthread); +- Py_CLEAR(p->reply_userdata); +- (*Py_TYPE(o)->tp_free)(o); +-} +- +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Context(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; +- if (p->callback) { +- e = (*v)(p->callback, a); if (e) return e; +- } +- if (p->callbackthread) { +- e = (*v)(p->callbackthread, a); if (e) return e; +- } +- if (p->reply_userdata) { +- e = (*v)(p->reply_userdata, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Context(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; +- tmp = ((PyObject*)p->callback); +- p->callback = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->callbackthread); +- p->callbackthread = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->reply_userdata); +- p->reply_userdata = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_api_version(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(o); +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_name(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(o); +-} +- +-static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_time(PyObject *o, CYTHON_UNUSED void *x) { +- return __pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(o); +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Context[] = { +- {"suspend", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_1suspend, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_suspend}, +- {"resume", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_3resume, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_2resume}, +- {"request_event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_5request_event, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_4request_event}, +- {"set_log_level", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_7set_log_level, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_6set_log_level}, +- {"load_config", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_9load_config, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_8load_config}, +- {"_format_for", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_11_format_for, METH_O, 0}, +- {"command", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_13command, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_12command}, +- {"get_property_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_14get_property_async}, +- {"try_get_property_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_17try_get_property_async, METH_VARARGS|METH_KEYWORDS, 0}, +- {"try_get_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property, METH_VARARGS|METH_KEYWORDS, 0}, +- {"get_property", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_21get_property, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_20get_property}, +- {"set_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_23set_property, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_22set_property}, +- {"set_option", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_25set_option, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_24set_option}, +- {"initialize", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_27initialize, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_26initialize}, +- {"wait_event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_29wait_event, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_28wait_event}, +- {"wakeup", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_31wakeup, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_30wakeup}, +- {"set_wakeup_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_33set_wakeup_callback, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback}, +- {"get_wakeup_pipe", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_35get_wakeup_pipe, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe}, +- {"observe_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_39observe_property, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_38observe_property}, +- {"unobserve_property", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_41unobserve_property, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_40unobserve_property}, +- {"shutdown", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_43shutdown, METH_NOARGS, 0}, +- {"opengl_cb_api", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_45opengl_cb_api, METH_NOARGS, 0}, +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_49__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_51__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Context[] = { +- {(char *)"api_version", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_api_version, 0, (char *)0, 0}, +- {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_name, 0, (char *)"Unique name for every context created.\n\n Wraps: mpv_client_name\n ", 0}, +- {(char *)"time", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_time, 0, (char *)"Internal mpv client time.\n\n Has an arbitrary start offset, but will never wrap or go backwards.\n\n Wraps: mpv_get_time_us\n ", 0}, +- {0, 0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Context = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.Context", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Context), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Context, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- "Base class wrapping a context to interact with mpv.\n\n Assume all calls can raise MPVError.\n\n Wraps: mpv_create, mpv_destroy and all mpv_handle related calls\n ", /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv_Context, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv_Context, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_Context, /*tp_methods*/ +- 0, /*tp_members*/ +- __pyx_getsets_9vidcutter_4libs_3mpv_Context, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- 0, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_Context, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)o); +- p->update_cb = Py_None; Py_INCREF(Py_None); +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_OpenGLContext(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)o; +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } +- #endif +- PyObject_GC_UnTrack(o); +- { +- PyObject *etype, *eval, *etb; +- PyErr_Fetch(&etype, &eval, &etb); +- __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); +- __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_13__dealloc__(o); +- __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); +- PyErr_Restore(etype, eval, etb); +- } +- Py_CLEAR(p->update_cb); +- (*Py_TYPE(o)->tp_free)(o); +-} +- +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_OpenGLContext(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)o; +- if (p->update_cb) { +- e = (*v)(p->update_cb, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv_OpenGLContext(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)o; +- tmp = ((PyObject*)p->update_cb); +- p->update_cb = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_OpenGLContext[] = { +- {"init_gl", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_3init_gl, METH_VARARGS|METH_KEYWORDS, 0}, +- {"set_update_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_5set_update_callback, METH_O, 0}, +- {"draw", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_7draw, METH_VARARGS|METH_KEYWORDS, 0}, +- {"report_flip", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_9report_flip, METH_O, 0}, +- {"uninit_gl", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_11uninit_gl, METH_NOARGS, 0}, +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_15__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_17__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_OpenGLContext = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.OpenGLContext", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- 0, /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_methods*/ +- 0, /*tp_members*/ +- 0, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_1__init__, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +-static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o); +- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams; +- p->owned = Py_None; Py_INCREF(Py_None); +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv__RenderParams(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } +- #endif +- PyObject_GC_UnTrack(o); +- { +- PyObject *etype, *eval, *etb; +- PyErr_Fetch(&etype, &eval, &etb); +- __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); +- __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(o); +- __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); +- PyErr_Restore(etype, eval, etb); +- } +- Py_CLEAR(p->owned); +- (*Py_TYPE(o)->tp_free)(o); +-} +- +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv__RenderParams(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; +- if (p->owned) { +- e = (*v)(p->owned, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv__RenderParams(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; +- tmp = ((PyObject*)p->owned); +- p->owned = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv__RenderParams[] = { +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv__RenderParams = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv._RenderParams", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv__RenderParams, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- 0, /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv__RenderParams, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv__RenderParams, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv__RenderParams, /*tp_methods*/ +- 0, /*tp_members*/ +- 0, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +-static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)o); +- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo; +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderFrameInfo(PyObject *o) { +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } +- #endif +- (*Py_TYPE(o)->tp_free)(o); +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_RenderFrameInfo[] = { +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.RenderFrameInfo", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ +- 0, /*tp_doc*/ +- 0, /*tp_traverse*/ +- 0, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_methods*/ +- 0, /*tp_members*/ +- 0, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- 0, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p; +- PyObject *o; +- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { +- o = (*t->tp_alloc)(t, 0); +- } else { +- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); +- } +- if (unlikely(!o)) return 0; +- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o); +- p->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)Py_None); Py_INCREF(Py_None); +- p->update_cb = Py_None; Py_INCREF(Py_None); +- p->_x11_display = Py_None; Py_INCREF(Py_None); +- p->_wl_display = Py_None; Py_INCREF(Py_None); +- p->_get_proc_address = Py_None; Py_INCREF(Py_None); +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; +- #if CYTHON_USE_TP_FINALIZE +- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { +- if (PyObject_CallFinalizerFromDealloc(o)) return; +- } +- #endif +- PyObject_GC_UnTrack(o); +- { +- PyObject *etype, *eval, *etb; +- PyErr_Fetch(&etype, &eval, &etb); +- __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); +- __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(o); +- __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); +- PyErr_Restore(etype, eval, etb); +- } +- Py_CLEAR(p->_mpv); +- Py_CLEAR(p->update_cb); +- Py_CLEAR(p->_x11_display); +- Py_CLEAR(p->_wl_display); +- Py_CLEAR(p->_get_proc_address); +- (*Py_TYPE(o)->tp_free)(o); +-} +- +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; +- if (p->_mpv) { +- e = (*v)(((PyObject *)p->_mpv), a); if (e) return e; +- } +- if (p->update_cb) { +- e = (*v)(p->update_cb, a); if (e) return e; +- } +- if (p->_x11_display) { +- e = (*v)(p->_x11_display, a); if (e) return e; +- } +- if (p->_wl_display) { +- e = (*v)(p->_wl_display, a); if (e) return e; +- } +- if (p->_get_proc_address) { +- e = (*v)(p->_get_proc_address, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; +- tmp = ((PyObject*)p->_mpv); +- p->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)Py_None); Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->update_cb); +- p->update_cb = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->_x11_display); +- p->_x11_display = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->_wl_display); +- p->_wl_display = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- tmp = ((PyObject*)p->_get_proc_address); +- p->_get_proc_address = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_RenderContext[] = { +- {"set_icc_profile", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile, METH_O, 0}, +- {"set_ambient_light", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light, METH_O, 0}, +- {"get_next_frame_info", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info, METH_NOARGS, 0}, +- {"set_update_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback, METH_O, 0}, +- {"update", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update, METH_NOARGS, 0}, +- {"render", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render, METH_VARARGS|METH_KEYWORDS, 0}, +- {"report_swap", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap, METH_NOARGS, 0}, +- {"free", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free, METH_NOARGS, 0}, +- {"close", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close, METH_NOARGS, 0}, +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_RenderContext = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.RenderContext", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- 0, /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_RenderContext, /*tp_methods*/ +- 0, /*tp_members*/ +- 0, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext(PyTypeObject *t, PyObject *a, PyObject *k) { +- PyObject *o = __pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(t, a, k); +- if (unlikely(!o)) return 0; +- return o; +-} +- +-static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_OpenGLRenderContext[] = { +- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__, METH_NOARGS, 0}, +- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__, METH_O, 0}, +- {0, 0, 0, 0} +-}; +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.OpenGLRenderContext", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- 0, /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- __pyx_methods_9vidcutter_4libs_3mpv_OpenGLRenderContext, /*tp_methods*/ +- 0, /*tp_members*/ +- 0, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +- +-static struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[8]; +-static int __pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = 0; +- +-static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +- PyObject *o; +- if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)))) { +- o = (PyObject*)__pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[--__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors]; +- memset(o, 0, sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)); +- (void) PyObject_INIT(o, t); +- PyObject_GC_Track(o); +- } else { +- o = (*t->tp_alloc)(t, 0); +- if (unlikely(!o)) return 0; +- } +- return o; +-} +- +-static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o) { +- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; +- PyObject_GC_UnTrack(o); +- Py_CLEAR(p->__pyx_v_fn); +- if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)))) { +- __pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors++] = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o); +- } else { +- (*Py_TYPE(o)->tp_free)(o); +- } +-} +- +-static int __pyx_tp_traverse_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o, visitproc v, void *a) { +- int e; +- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; +- if (p->__pyx_v_fn) { +- e = (*v)(p->__pyx_v_fn, a); if (e) return e; +- } +- return 0; +-} +- +-static int __pyx_tp_clear_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o) { +- PyObject* tmp; +- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; +- tmp = ((PyObject*)p->__pyx_v_fn); +- p->__pyx_v_fn = Py_None; Py_INCREF(Py_None); +- Py_XDECREF(tmp); +- return 0; +-} +- +-static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = { +- PyVarObject_HEAD_INIT(0, 0) +- "vidcutter.libs.mpv.__pyx_scope_struct___errors", /*tp_name*/ +- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors), /*tp_basicsize*/ +- 0, /*tp_itemsize*/ +- __pyx_tp_dealloc_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_dealloc*/ +- #if PY_VERSION_HEX < 0x030800b4 +- 0, /*tp_print*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 +- 0, /*tp_vectorcall_offset*/ +- #endif +- 0, /*tp_getattr*/ +- 0, /*tp_setattr*/ +- #if PY_MAJOR_VERSION < 3 +- 0, /*tp_compare*/ +- #endif +- #if PY_MAJOR_VERSION >= 3 +- 0, /*tp_as_async*/ +- #endif +- 0, /*tp_repr*/ +- 0, /*tp_as_number*/ +- 0, /*tp_as_sequence*/ +- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ +- 0, /*tp_call*/ +- 0, /*tp_str*/ +- 0, /*tp_getattro*/ +- 0, /*tp_setattro*/ +- 0, /*tp_as_buffer*/ +- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +- 0, /*tp_doc*/ +- __pyx_tp_traverse_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_traverse*/ +- __pyx_tp_clear_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_clear*/ +- 0, /*tp_richcompare*/ +- 0, /*tp_weaklistoffset*/ +- 0, /*tp_iter*/ +- 0, /*tp_iternext*/ +- 0, /*tp_methods*/ +- 0, /*tp_members*/ +- 0, /*tp_getset*/ +- 0, /*tp_base*/ +- 0, /*tp_dict*/ +- 0, /*tp_descr_get*/ +- 0, /*tp_descr_set*/ +- 0, /*tp_dictoffset*/ +- 0, /*tp_init*/ +- 0, /*tp_alloc*/ +- __pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_new*/ +- 0, /*tp_free*/ +- 0, /*tp_is_gc*/ +- 0, /*tp_bases*/ +- 0, /*tp_mro*/ +- 0, /*tp_cache*/ +- 0, /*tp_subclasses*/ +- 0, /*tp_weaklist*/ +- 0, /*tp_del*/ +- 0, /*tp_version_tag*/ +- #if PY_VERSION_HEX >= 0x030400a1 +- 0, /*tp_finalize*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b1 +- 0, /*tp_vectorcall*/ +- #endif +- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, /*tp_print*/ +- #endif +-}; +- +-static PyMethodDef __pyx_methods[] = { +- {0, 0, 0, 0} +-}; +- +-#if PY_MAJOR_VERSION >= 3 +-#if CYTHON_PEP489_MULTI_PHASE_INIT +-static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +-static int __pyx_pymod_exec_mpv(PyObject* module); /*proto*/ +-static PyModuleDef_Slot __pyx_moduledef_slots[] = { +- {Py_mod_create, (void*)__pyx_pymod_create}, +- {Py_mod_exec, (void*)__pyx_pymod_exec_mpv}, +- {0, NULL} +-}; +-#endif +- +-static struct PyModuleDef __pyx_moduledef = { +- PyModuleDef_HEAD_INIT, +- "mpv", +- __pyx_k_pympv_Python_wrapper_for_libmpv, /* m_doc */ +- #if CYTHON_PEP489_MULTI_PHASE_INIT +- 0, /* m_size */ +- #else +- -1, /* m_size */ +- #endif +- __pyx_methods /* m_methods */, +- #if CYTHON_PEP489_MULTI_PHASE_INIT +- __pyx_moduledef_slots, /* m_slots */ +- #else +- NULL, /* m_reload */ +- #endif +- NULL, /* m_traverse */ +- NULL, /* m_clear */ +- NULL /* m_free */ +-}; +-#endif +-#ifndef CYTHON_SMALL_CODE +-#if defined(__clang__) +- #define CYTHON_SMALL_CODE +-#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +- #define CYTHON_SMALL_CODE __attribute__((cold)) +-#else +- #define CYTHON_SMALL_CODE +-#endif +-#endif +- +-static __Pyx_StringTabEntry __pyx_string_tab[] = { +- {&__pyx_kp_s_0_3_0, __pyx_k_0_3_0, sizeof(__pyx_k_0_3_0), 0, 0, 1, 0}, +- {&__pyx_n_s_API_OPENGL, __pyx_k_API_OPENGL, sizeof(__pyx_k_API_OPENGL), 0, 0, 1, 1}, +- {&__pyx_kp_s_Andre_D, __pyx_k_Andre_D, sizeof(__pyx_k_Andre_D), 0, 0, 1, 0}, +- {&__pyx_n_s_CAPI_MAJOR, __pyx_k_CAPI_MAJOR, sizeof(__pyx_k_CAPI_MAJOR), 0, 0, 1, 1}, +- {&__pyx_n_s_CAPI_MINOR, __pyx_k_CAPI_MINOR, sizeof(__pyx_k_CAPI_MINOR), 0, 0, 1, 1}, +- {&__pyx_n_s_CallbackThread, __pyx_k_CallbackThread, sizeof(__pyx_k_CallbackThread), 0, 0, 1, 1}, +- {&__pyx_n_s_CallbackThread___init, __pyx_k_CallbackThread___init, sizeof(__pyx_k_CallbackThread___init), 0, 0, 1, 1}, +- {&__pyx_n_s_CallbackThread_call, __pyx_k_CallbackThread_call, sizeof(__pyx_k_CallbackThread_call), 0, 0, 1, 1}, +- {&__pyx_n_s_CallbackThread_mpv_callback, __pyx_k_CallbackThread_mpv_callback, sizeof(__pyx_k_CallbackThread_mpv_callback), 0, 0, 1, 1}, +- {&__pyx_n_s_CallbackThread_run, __pyx_k_CallbackThread_run, sizeof(__pyx_k_CallbackThread_run), 0, 0, 1, 1}, +- {&__pyx_n_s_CallbackThread_set, __pyx_k_CallbackThread_set, sizeof(__pyx_k_CallbackThread_set), 0, 0, 1, 1}, +- {&__pyx_n_s_CallbackThread_shutdown, __pyx_k_CallbackThread_shutdown, sizeof(__pyx_k_CallbackThread_shutdown), 0, 0, 1, 1}, +- {&__pyx_n_s_Context, __pyx_k_Context, sizeof(__pyx_k_Context), 0, 0, 1, 1}, +- {&__pyx_kp_s_Context_creation_error, __pyx_k_Context_creation_error, sizeof(__pyx_k_Context_creation_error), 0, 0, 1, 0}, +- {&__pyx_n_s_DeprecationWarning, __pyx_k_DeprecationWarning, sizeof(__pyx_k_DeprecationWarning), 0, 0, 1, 1}, +- {&__pyx_n_s_EOFReasons, __pyx_k_EOFReasons, sizeof(__pyx_k_EOFReasons), 0, 0, 1, 1}, +- {&__pyx_n_s_EndOfFileReached, __pyx_k_EndOfFileReached, sizeof(__pyx_k_EndOfFileReached), 0, 0, 1, 1}, +- {&__pyx_n_s_Errors, __pyx_k_Errors, sizeof(__pyx_k_Errors), 0, 0, 1, 1}, +- {&__pyx_n_s_Event, __pyx_k_Event, sizeof(__pyx_k_Event), 0, 0, 1, 1}, +- {&__pyx_n_s_Events, __pyx_k_Events, sizeof(__pyx_k_Events), 0, 0, 1, 1}, +- {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, +- {&__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_k_Incompatible_checksums_s_vs_0x05, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x05), 0, 0, 1, 0}, +- {&__pyx_kp_s_Incompatible_checksums_s_vs_0x56, __pyx_k_Incompatible_checksums_s_vs_0x56, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x56), 0, 0, 1, 0}, +- {&__pyx_kp_s_Incompatible_checksums_s_vs_0x87, __pyx_k_Incompatible_checksums_s_vs_0x87, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x87), 0, 0, 1, 0}, +- {&__pyx_kp_s_Incompatible_checksums_s_vs_0xbf, __pyx_k_Incompatible_checksums_s_vs_0xbf, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xbf), 0, 0, 1, 0}, +- {&__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_k_Incompatible_checksums_s_vs_0xd4, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xd4), 0, 0, 1, 0}, +- {&__pyx_kp_s_Incompatible_checksums_s_vs_0xda, __pyx_k_Incompatible_checksums_s_vs_0xda, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xda), 0, 0, 1, 0}, +- {&__pyx_n_s_InputDispatch, __pyx_k_InputDispatch, sizeof(__pyx_k_InputDispatch), 0, 0, 1, 1}, +- {&__pyx_kp_s_Known_possible_values_for_EndOfF, __pyx_k_Known_possible_values_for_EndOfF, sizeof(__pyx_k_Known_possible_values_for_EndOfF), 0, 0, 1, 0}, +- {&__pyx_n_s_LogLevels, __pyx_k_LogLevels, sizeof(__pyx_k_LogLevels), 0, 0, 1, 1}, +- {&__pyx_n_s_LogMessage, __pyx_k_LogMessage, sizeof(__pyx_k_LogMessage), 0, 0, 1, 1}, +- {&__pyx_n_s_MIN_CAPI_MINOR, __pyx_k_MIN_CAPI_MINOR, sizeof(__pyx_k_MIN_CAPI_MINOR), 0, 0, 1, 1}, +- {&__pyx_n_s_MPVError, __pyx_k_MPVError, sizeof(__pyx_k_MPVError), 0, 0, 1, 1}, +- {&__pyx_n_s_MPVError___init, __pyx_k_MPVError___init, sizeof(__pyx_k_MPVError___init), 0, 0, 1, 1}, +- {&__pyx_n_s_OpenGLContext, __pyx_k_OpenGLContext, sizeof(__pyx_k_OpenGLContext), 0, 0, 1, 1}, +- {&__pyx_kp_s_OpenGLContext_is_deprecated_plea, __pyx_k_OpenGLContext_is_deprecated_plea, sizeof(__pyx_k_OpenGLContext_is_deprecated_plea), 0, 0, 1, 0}, +- {&__pyx_n_s_OpenGLRenderContext, __pyx_k_OpenGLRenderContext, sizeof(__pyx_k_OpenGLRenderContext), 0, 0, 1, 1}, +- {&__pyx_kp_s_OpenGL_API_not_available, __pyx_k_OpenGL_API_not_available, sizeof(__pyx_k_OpenGL_API_not_available), 0, 0, 1, 0}, +- {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, +- {&__pyx_n_s_Property, __pyx_k_Property, sizeof(__pyx_k_Property), 0, 0, 1, 1}, +- {&__pyx_n_s_PyMPVError, __pyx_k_PyMPVError, sizeof(__pyx_k_PyMPVError), 0, 0, 1, 1}, +- {&__pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_k_REQUIRED_CAPI_MAJOR, sizeof(__pyx_k_REQUIRED_CAPI_MAJOR), 0, 0, 1, 1}, +- {&__pyx_n_s_RenderContext, __pyx_k_RenderContext, sizeof(__pyx_k_RenderContext), 0, 0, 1, 1}, +- {&__pyx_n_s_RenderParams, __pyx_k_RenderParams, sizeof(__pyx_k_RenderParams), 0, 0, 1, 1}, +- {&__pyx_kp_s_RenderParams_overflow, __pyx_k_RenderParams_overflow, sizeof(__pyx_k_RenderParams_overflow), 0, 0, 1, 0}, +- {&__pyx_n_s_ReplyUserData, __pyx_k_ReplyUserData, sizeof(__pyx_k_ReplyUserData), 0, 0, 1, 1}, +- {&__pyx_n_s_ReplyUserData___init, __pyx_k_ReplyUserData___init, sizeof(__pyx_k_ReplyUserData___init), 0, 0, 1, 1}, +- {&__pyx_n_s_ReplyUserData_add, __pyx_k_ReplyUserData_add, sizeof(__pyx_k_ReplyUserData_add), 0, 0, 1, 1}, +- {&__pyx_n_s_ReplyUserData_remove, __pyx_k_ReplyUserData_remove, sizeof(__pyx_k_ReplyUserData_remove), 0, 0, 1, 1}, +- {&__pyx_n_s_Semaphore, __pyx_k_Semaphore, sizeof(__pyx_k_Semaphore), 0, 0, 1, 1}, +- {&__pyx_kp_s_Set_of_known_error_codes_from_Mp, __pyx_k_Set_of_known_error_codes_from_Mp, sizeof(__pyx_k_Set_of_known_error_codes_from_Mp), 0, 0, 1, 0}, +- {&__pyx_kp_s_Set_of_known_values_for_Event_id, __pyx_k_Set_of_known_values_for_Event_id, sizeof(__pyx_k_Set_of_known_values_for_Event_id), 0, 0, 1, 0}, +- {&__pyx_n_s_Thread, __pyx_k_Thread, sizeof(__pyx_k_Thread), 0, 0, 1, 1}, +- {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, +- {&__pyx_n_s_UPDATE_FRAME, __pyx_k_UPDATE_FRAME, sizeof(__pyx_k_UPDATE_FRAME), 0, 0, 1, 1}, +- {&__pyx_n_s_UnicodeDecodeError, __pyx_k_UnicodeDecodeError, sizeof(__pyx_k_UnicodeDecodeError), 0, 0, 1, 1}, +- {&__pyx_n_s_UnicodeEncodeError, __pyx_k_UnicodeEncodeError, sizeof(__pyx_k_UnicodeEncodeError), 0, 0, 1, 1}, +- {&__pyx_kp_s_Unknown_api_type_r, __pyx_k_Unknown_api_type_r, sizeof(__pyx_k_Unknown_api_type_r), 0, 0, 1, 0}, +- {&__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_k_Unknown_or_invalid_pointer_objec, sizeof(__pyx_k_Unknown_or_invalid_pointer_objec), 0, 0, 1, 0}, +- {&__pyx_n_s_aborted, __pyx_k_aborted, sizeof(__pyx_k_aborted), 0, 0, 1, 1}, +- {&__pyx_n_s_acquire, __pyx_k_acquire, sizeof(__pyx_k_acquire), 0, 0, 1, 1}, +- {&__pyx_n_s_add, __pyx_k_add, sizeof(__pyx_k_add), 0, 0, 1, 1}, +- {&__pyx_n_s_advanced_control, __pyx_k_advanced_control, sizeof(__pyx_k_advanced_control), 0, 0, 1, 1}, +- {&__pyx_n_s_ao_init_failed, __pyx_k_ao_init_failed, sizeof(__pyx_k_ao_init_failed), 0, 0, 1, 1}, +- {&__pyx_n_s_api_type, __pyx_k_api_type, sizeof(__pyx_k_api_type), 0, 0, 1, 1}, +- {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, +- {&__pyx_n_s_asynchronous, __pyx_k_asynchronous, sizeof(__pyx_k_asynchronous), 0, 0, 1, 1}, +- {&__pyx_n_s_atomic_request_ptr, __pyx_k_atomic_request_ptr, sizeof(__pyx_k_atomic_request_ptr), 0, 0, 1, 1}, +- {&__pyx_n_s_audio_reconfig, __pyx_k_audio_reconfig, sizeof(__pyx_k_audio_reconfig), 0, 0, 1, 1}, +- {&__pyx_n_s_author, __pyx_k_author, sizeof(__pyx_k_author), 0, 0, 1, 1}, +- {&__pyx_n_s_block_for_target_time, __pyx_k_block_for_target_time, sizeof(__pyx_k_block_for_target_time), 0, 0, 1, 1}, +- {&__pyx_n_s_block_vsync, __pyx_k_block_vsync, sizeof(__pyx_k_block_vsync), 0, 0, 1, 1}, +- {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1}, +- {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, +- {&__pyx_n_s_chapter_change, __pyx_k_chapter_change, sizeof(__pyx_k_chapter_change), 0, 0, 1, 1}, +- {&__pyx_n_s_client_message, __pyx_k_client_message, sizeof(__pyx_k_client_message), 0, 0, 1, 1}, +- {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, +- {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, +- {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1}, +- {&__pyx_n_s_command_error, __pyx_k_command_error, sizeof(__pyx_k_command_error), 0, 0, 1, 1}, +- {&__pyx_n_s_command_reply, __pyx_k_command_reply, sizeof(__pyx_k_command_reply), 0, 0, 1, 1}, +- {&__pyx_n_s_connector_id, __pyx_k_connector_id, sizeof(__pyx_k_connector_id), 0, 0, 1, 1}, +- {&__pyx_n_s_counter, __pyx_k_counter, sizeof(__pyx_k_counter), 0, 0, 1, 1}, +- {&__pyx_n_s_crtc_id, __pyx_k_crtc_id, sizeof(__pyx_k_crtc_id), 0, 0, 1, 1}, +- {&__pyx_n_s_daemon, __pyx_k_daemon, sizeof(__pyx_k_daemon), 0, 0, 1, 1}, +- {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, +- {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, +- {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, +- {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1}, +- {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1}, +- {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, +- {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, +- {&__pyx_kp_s_drmModeAtomicReq, __pyx_k_drmModeAtomicReq, sizeof(__pyx_k_drmModeAtomicReq), 0, 0, 1, 0}, +- {&__pyx_n_s_drm_display, __pyx_k_drm_display, sizeof(__pyx_k_drm_display), 0, 0, 1, 1}, +- {&__pyx_n_s_drm_osd_size, __pyx_k_drm_osd_size, sizeof(__pyx_k_drm_osd_size), 0, 0, 1, 1}, +- {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, +- {&__pyx_n_s_e_i, __pyx_k_e_i, sizeof(__pyx_k_e_i), 0, 0, 1, 1}, +- {&__pyx_n_s_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 0, 1, 1}, +- {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, +- {&__pyx_n_s_end_file, __pyx_k_end_file, sizeof(__pyx_k_end_file), 0, 0, 1, 1}, +- {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, +- {&__pyx_n_s_eof, __pyx_k_eof, sizeof(__pyx_k_eof), 0, 0, 1, 1}, +- {&__pyx_n_s_err_c, __pyx_k_err_c, sizeof(__pyx_k_err_c), 0, 0, 1, 1}, +- {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, +- {&__pyx_n_s_errors, __pyx_k_errors, sizeof(__pyx_k_errors), 0, 0, 1, 1}, +- {&__pyx_n_s_errors_locals_wrapped, __pyx_k_errors_locals_wrapped, sizeof(__pyx_k_errors_locals_wrapped), 0, 0, 1, 1}, +- {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, +- {&__pyx_n_s_exts, __pyx_k_exts, sizeof(__pyx_k_exts), 0, 0, 1, 1}, +- {&__pyx_n_s_fatal, __pyx_k_fatal, sizeof(__pyx_k_fatal), 0, 0, 1, 1}, +- {&__pyx_n_s_fbo, __pyx_k_fbo, sizeof(__pyx_k_fbo), 0, 0, 1, 1}, +- {&__pyx_n_s_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 0, 0, 1, 1}, +- {&__pyx_n_s_file_loaded, __pyx_k_file_loaded, sizeof(__pyx_k_file_loaded), 0, 0, 1, 1}, +- {&__pyx_n_s_flip_y, __pyx_k_flip_y, sizeof(__pyx_k_flip_y), 0, 0, 1, 1}, +- {&__pyx_n_s_fn, __pyx_k_fn, sizeof(__pyx_k_fn), 0, 0, 1, 1}, +- {&__pyx_n_s_format_for, __pyx_k_format_for, sizeof(__pyx_k_format_for), 0, 0, 1, 1}, +- {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, +- {&__pyx_n_s_get_proc_address, __pyx_k_get_proc_address, sizeof(__pyx_k_get_proc_address), 0, 0, 1, 1}, +- {&__pyx_n_s_get_property, __pyx_k_get_property, sizeof(__pyx_k_get_property), 0, 0, 1, 1}, +- {&__pyx_n_s_get_property_async, __pyx_k_get_property_async, sizeof(__pyx_k_get_property_async), 0, 0, 1, 1}, +- {&__pyx_n_s_get_property_reply, __pyx_k_get_property_reply, sizeof(__pyx_k_get_property_reply), 0, 0, 1, 1}, +- {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, +- {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, +- {&__pyx_kp_s_icc_blob_should_be_a_bytes_insta, __pyx_k_icc_blob_should_be_a_bytes_insta, sizeof(__pyx_k_icc_blob_should_be_a_bytes_insta), 0, 0, 1, 0}, +- {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, +- {&__pyx_n_s_idle, __pyx_k_idle, sizeof(__pyx_k_idle), 0, 0, 1, 1}, +- {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, +- {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1}, +- {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, +- {&__pyx_n_s_initialize, __pyx_k_initialize, sizeof(__pyx_k_initialize), 0, 0, 1, 1}, +- {&__pyx_n_s_internal_format, __pyx_k_internal_format, sizeof(__pyx_k_internal_format), 0, 0, 1, 1}, +- {&__pyx_n_s_invalid_parameter, __pyx_k_invalid_parameter, sizeof(__pyx_k_invalid_parameter), 0, 0, 1, 1}, +- {&__pyx_n_s_is_py3, __pyx_k_is_py3, sizeof(__pyx_k_is_py3), 0, 0, 1, 1}, +- {&__pyx_n_s_isshutdown, __pyx_k_isshutdown, sizeof(__pyx_k_isshutdown), 0, 0, 1, 1}, +- {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1}, +- {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1}, +- {&__pyx_n_s_kw, __pyx_k_kw, sizeof(__pyx_k_kw), 0, 0, 1, 1}, +- {&__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_k_libmpv_version_is_incorrect_Requ, sizeof(__pyx_k_libmpv_version_is_incorrect_Requ), 0, 0, 1, 0}, +- {&__pyx_n_s_load_config, __pyx_k_load_config, sizeof(__pyx_k_load_config), 0, 0, 1, 1}, +- {&__pyx_n_s_loading_failed, __pyx_k_loading_failed, sizeof(__pyx_k_loading_failed), 0, 0, 1, 1}, +- {&__pyx_n_s_lock, __pyx_k_lock, sizeof(__pyx_k_lock), 0, 0, 1, 1}, +- {&__pyx_n_s_log_message, __pyx_k_log_message, sizeof(__pyx_k_log_message), 0, 0, 1, 1}, +- {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, +- {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, +- {&__pyx_n_s_metadata_update, __pyx_k_metadata_update, sizeof(__pyx_k_metadata_update), 0, 0, 1, 1}, +- {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, +- {&__pyx_n_s_mpv, __pyx_k_mpv, sizeof(__pyx_k_mpv), 0, 0, 1, 1}, +- {&__pyx_n_s_mpv_callback, __pyx_k_mpv_callback, sizeof(__pyx_k_mpv_callback), 0, 0, 1, 1}, +- {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, +- {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, +- {&__pyx_n_s_no, __pyx_k_no, sizeof(__pyx_k_no), 0, 0, 1, 1}, +- {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, +- {&__pyx_n_s_nomem, __pyx_k_nomem, sizeof(__pyx_k_nomem), 0, 0, 1, 1}, +- {&__pyx_n_s_none, __pyx_k_none, sizeof(__pyx_k_none), 0, 0, 1, 1}, +- {&__pyx_n_s_not_found, __pyx_k_not_found, sizeof(__pyx_k_not_found), 0, 0, 1, 1}, +- {&__pyx_n_s_not_implemented, __pyx_k_not_implemented, sizeof(__pyx_k_not_implemented), 0, 0, 1, 1}, +- {&__pyx_n_s_nothing_to_play, __pyx_k_nothing_to_play, sizeof(__pyx_k_nothing_to_play), 0, 0, 1, 1}, +- {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1}, +- {&__pyx_n_s_observe_property, __pyx_k_observe_property, sizeof(__pyx_k_observe_property), 0, 0, 1, 1}, +- {&__pyx_n_s_observed, __pyx_k_observed, sizeof(__pyx_k_observed), 0, 0, 1, 1}, +- {&__pyx_n_s_opengl, __pyx_k_opengl, sizeof(__pyx_k_opengl), 0, 0, 1, 1}, +- {&__pyx_n_s_opengl_fbo, __pyx_k_opengl_fbo, sizeof(__pyx_k_opengl_fbo), 0, 0, 1, 1}, +- {&__pyx_n_s_opengl_init_params, __pyx_k_opengl_init_params, sizeof(__pyx_k_opengl_init_params), 0, 0, 1, 1}, +- {&__pyx_n_s_option_error, __pyx_k_option_error, sizeof(__pyx_k_option_error), 0, 0, 1, 1}, +- {&__pyx_n_s_option_format, __pyx_k_option_format, sizeof(__pyx_k_option_format), 0, 0, 1, 1}, +- {&__pyx_n_s_pause, __pyx_k_pause, sizeof(__pyx_k_pause), 0, 0, 1, 1}, +- {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, +- {&__pyx_n_s_playback_restart, __pyx_k_playback_restart, sizeof(__pyx_k_playback_restart), 0, 0, 1, 1}, +- {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, +- {&__pyx_n_s_present, __pyx_k_present, sizeof(__pyx_k_present), 0, 0, 1, 1}, +- {&__pyx_n_s_prop, __pyx_k_prop, sizeof(__pyx_k_prop), 0, 0, 1, 1}, +- {&__pyx_n_s_property_change, __pyx_k_property_change, sizeof(__pyx_k_property_change), 0, 0, 1, 1}, +- {&__pyx_n_s_property_error, __pyx_k_property_error, sizeof(__pyx_k_property_error), 0, 0, 1, 1}, +- {&__pyx_n_s_property_format, __pyx_k_property_format, sizeof(__pyx_k_property_format), 0, 0, 1, 1}, +- {&__pyx_n_s_property_unavailable, __pyx_k_property_unavailable, sizeof(__pyx_k_property_unavailable), 0, 0, 1, 1}, +- {&__pyx_kp_s_pympv_error_during_callback_s, __pyx_k_pympv_error_during_callback_s, sizeof(__pyx_k_pympv_error_during_callback_s), 0, 0, 1, 0}, +- {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_unpickle_EndOfFileReached, __pyx_k_pyx_unpickle_EndOfFileReached, sizeof(__pyx_k_pyx_unpickle_EndOfFileReached), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_unpickle_Event, __pyx_k_pyx_unpickle_Event, sizeof(__pyx_k_pyx_unpickle_Event), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_unpickle_InputDispatch, __pyx_k_pyx_unpickle_InputDispatch, sizeof(__pyx_k_pyx_unpickle_InputDispatch), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_unpickle_LogMessage, __pyx_k_pyx_unpickle_LogMessage, sizeof(__pyx_k_pyx_unpickle_LogMessage), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_unpickle_Property, __pyx_k_pyx_unpickle_Property, sizeof(__pyx_k_pyx_unpickle_Property), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_unpickle_RenderFrameInfo, __pyx_k_pyx_unpickle_RenderFrameInfo, sizeof(__pyx_k_pyx_unpickle_RenderFrameInfo), 0, 0, 1, 1}, +- {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, +- {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, +- {&__pyx_n_s_queue_full, __pyx_k_queue_full, sizeof(__pyx_k_queue_full), 0, 0, 1, 1}, +- {&__pyx_n_s_quit, __pyx_k_quit, sizeof(__pyx_k_quit), 0, 0, 1, 1}, +- {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, +- {&__pyx_n_s_redraw, __pyx_k_redraw, sizeof(__pyx_k_redraw), 0, 0, 1, 1}, +- {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, +- {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, +- {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, +- {&__pyx_n_s_release, __pyx_k_release, sizeof(__pyx_k_release), 0, 0, 1, 1}, +- {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1}, +- {&__pyx_n_s_render, __pyx_k_render, sizeof(__pyx_k_render), 0, 0, 1, 1}, +- {&__pyx_n_s_render_fd, __pyx_k_render_fd, sizeof(__pyx_k_render_fd), 0, 0, 1, 1}, +- {&__pyx_n_s_repeat, __pyx_k_repeat, sizeof(__pyx_k_repeat), 0, 0, 1, 1}, +- {&__pyx_n_s_request_event, __pyx_k_request_event, sizeof(__pyx_k_request_event), 0, 0, 1, 1}, +- {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1}, +- {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1}, +- {&__pyx_n_s_script_input_dispatch, __pyx_k_script_input_dispatch, sizeof(__pyx_k_script_input_dispatch), 0, 0, 1, 1}, +- {&__pyx_n_s_seek, __pyx_k_seek, sizeof(__pyx_k_seek), 0, 0, 1, 1}, +- {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, +- {&__pyx_kp_s_self__ctx_cannot_be_converted_to, __pyx_k_self__ctx_cannot_be_converted_to, sizeof(__pyx_k_self__ctx_cannot_be_converted_to), 0, 0, 1, 0}, +- {&__pyx_kp_s_self_params_cannot_be_converted, __pyx_k_self_params_cannot_be_converted, sizeof(__pyx_k_self_params_cannot_be_converted), 0, 0, 1, 0}, +- {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1}, +- {&__pyx_n_s_set_ambient_light, __pyx_k_set_ambient_light, sizeof(__pyx_k_set_ambient_light), 0, 0, 1, 1}, +- {&__pyx_n_s_set_icc_profile, __pyx_k_set_icc_profile, sizeof(__pyx_k_set_icc_profile), 0, 0, 1, 1}, +- {&__pyx_n_s_set_log_level, __pyx_k_set_log_level, sizeof(__pyx_k_set_log_level), 0, 0, 1, 1}, +- {&__pyx_n_s_set_option, __pyx_k_set_option, sizeof(__pyx_k_set_option), 0, 0, 1, 1}, +- {&__pyx_n_s_set_property, __pyx_k_set_property, sizeof(__pyx_k_set_property), 0, 0, 1, 1}, +- {&__pyx_n_s_set_property_reply, __pyx_k_set_property_reply, sizeof(__pyx_k_set_property_reply), 0, 0, 1, 1}, +- {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, +- {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, +- {&__pyx_n_s_shutdown, __pyx_k_shutdown, sizeof(__pyx_k_shutdown), 0, 0, 1, 1}, +- {&__pyx_n_s_skip_rendering, __pyx_k_skip_rendering, sizeof(__pyx_k_skip_rendering), 0, 0, 1, 1}, +- {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, +- {&__pyx_n_s_start_file, __pyx_k_start_file, sizeof(__pyx_k_start_file), 0, 0, 1, 1}, +- {&__pyx_n_s_stderr, __pyx_k_stderr, sizeof(__pyx_k_stderr), 0, 0, 1, 1}, +- {&__pyx_n_s_strdec, __pyx_k_strdec, sizeof(__pyx_k_strdec), 0, 0, 1, 1}, +- {&__pyx_n_s_strdec_err, __pyx_k_strdec_err, sizeof(__pyx_k_strdec_err), 0, 0, 1, 1}, +- {&__pyx_n_s_strenc, __pyx_k_strenc, sizeof(__pyx_k_strenc), 0, 0, 1, 1}, +- {&__pyx_n_s_strict, __pyx_k_strict, sizeof(__pyx_k_strict), 0, 0, 1, 1}, +- {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, +- {&__pyx_n_s_success, __pyx_k_success, sizeof(__pyx_k_success), 0, 0, 1, 1}, +- {&__pyx_n_s_surrogateescape, __pyx_k_surrogateescape, sizeof(__pyx_k_surrogateescape), 0, 0, 1, 1}, +- {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, +- {&__pyx_n_s_target_time, __pyx_k_target_time, sizeof(__pyx_k_target_time), 0, 0, 1, 1}, +- {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, +- {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1}, +- {&__pyx_n_s_tick, __pyx_k_tick, sizeof(__pyx_k_tick), 0, 0, 1, 1}, +- {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, +- {&__pyx_n_s_trace, __pyx_k_trace, sizeof(__pyx_k_trace), 0, 0, 1, 1}, +- {&__pyx_n_s_tracks_changed, __pyx_k_tracks_changed, sizeof(__pyx_k_tracks_changed), 0, 0, 1, 1}, +- {&__pyx_n_s_tracks_switched, __pyx_k_tracks_switched, sizeof(__pyx_k_tracks_switched), 0, 0, 1, 1}, +- {&__pyx_n_s_uninit_gl, __pyx_k_uninit_gl, sizeof(__pyx_k_uninit_gl), 0, 0, 1, 1}, +- {&__pyx_n_s_uninitialized, __pyx_k_uninitialized, sizeof(__pyx_k_uninitialized), 0, 0, 1, 1}, +- {&__pyx_n_s_unknown_format, __pyx_k_unknown_format, sizeof(__pyx_k_unknown_format), 0, 0, 1, 1}, +- {&__pyx_n_s_unobserve_property, __pyx_k_unobserve_property, sizeof(__pyx_k_unobserve_property), 0, 0, 1, 1}, +- {&__pyx_n_s_unpause, __pyx_k_unpause, sizeof(__pyx_k_unpause), 0, 0, 1, 1}, +- {&__pyx_n_s_unsupported, __pyx_k_unsupported, sizeof(__pyx_k_unsupported), 0, 0, 1, 1}, +- {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, +- {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0}, +- {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1}, +- {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, +- {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1}, +- {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1}, +- {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1}, +- {&__pyx_n_s_vidcutter_libs_mpv, __pyx_k_vidcutter_libs_mpv, sizeof(__pyx_k_vidcutter_libs_mpv), 0, 0, 1, 1}, +- {&__pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_k_vidcutter_libs_pympv_mpv_pyx, sizeof(__pyx_k_vidcutter_libs_pympv_mpv_pyx), 0, 0, 1, 0}, +- {&__pyx_n_s_video_reconfig, __pyx_k_video_reconfig, sizeof(__pyx_k_video_reconfig), 0, 0, 1, 1}, +- {&__pyx_n_s_vo_init_failed, __pyx_k_vo_init_failed, sizeof(__pyx_k_vo_init_failed), 0, 0, 1, 1}, +- {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1}, +- {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1}, +- {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1}, +- {&__pyx_n_s_wl_display, __pyx_k_wl_display, sizeof(__pyx_k_wl_display), 0, 0, 1, 1}, +- {&__pyx_n_s_wrapped, __pyx_k_wrapped, sizeof(__pyx_k_wrapped), 0, 0, 1, 1}, +- {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1}, +- {&__pyx_n_s_x11_display, __pyx_k_x11_display, sizeof(__pyx_k_x11_display), 0, 0, 1, 1}, +- {0, 0, 0, 0, 0, 0, 0} +-}; +-static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { +- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 44, __pyx_L1_error) +- __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 346, __pyx_L1_error) +- __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(0, 58, __pyx_L1_error) +- __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(0, 66, __pyx_L1_error) +- __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 222, __pyx_L1_error) +- __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 303, __pyx_L1_error) +- __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 475, __pyx_L1_error) +- __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) +- __pyx_builtin_DeprecationWarning = __Pyx_GetBuiltinName(__pyx_n_s_DeprecationWarning); if (!__pyx_builtin_DeprecationWarning) __PYX_ERR(0, 830, __pyx_L1_error) +- return 0; +- __pyx_L1_error:; +- return -1; +-} +- +-static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); +- +- /* "vidcutter/libs/pympv/mpv.pyx":319 +- * +- * def _errors(fn): +- * def wrapped(*k, **kw): # <<<<<<<<<<<<<< +- * v = fn(*k, **kw) +- * if v < 0: +- */ +- __pyx_tuple_ = PyTuple_Pack(3, __pyx_n_s_k, __pyx_n_s_kw, __pyx_n_s_v); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 319, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple_); +- __Pyx_GIVEREF(__pyx_tuple_); +- __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_wrapped, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 319, __pyx_L1_error) +- +- /* "(tree fragment)":2 +- * def __reduce_cython__(self): +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") +- */ +- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 2, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__3); +- __Pyx_GIVEREF(__pyx_tuple__3); +- +- /* "(tree fragment)":4 +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< +- */ +- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 4, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__4); +- __Pyx_GIVEREF(__pyx_tuple__4); +- +- /* "vidcutter/libs/pympv/mpv.pyx":830 +- * def __init__(self): +- * self.inited = False +- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) # <<<<<<<<<<<<<< +- * +- * def init_gl(self, exts, get_proc_address): +- */ +- __pyx_tuple__5 = PyTuple_Pack(2, __pyx_kp_s_OpenGLContext_is_deprecated_plea, __pyx_builtin_DeprecationWarning); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 830, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__5); +- __Pyx_GIVEREF(__pyx_tuple__5); +- +- /* "(tree fragment)":2 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- */ +- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 2, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__6); +- __Pyx_GIVEREF(__pyx_tuple__6); +- +- /* "(tree fragment)":4 +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- */ +- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 4, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__7); +- __Pyx_GIVEREF(__pyx_tuple__7); +- +- /* "(tree fragment)":2 +- * def __reduce_cython__(self): +- * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self.params cannot be converted to a Python object for pickling") +- */ +- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_self_params_cannot_be_converted); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 2, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__8); +- __Pyx_GIVEREF(__pyx_tuple__8); +- +- /* "(tree fragment)":4 +- * raise TypeError("self.params cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- */ +- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_self_params_cannot_be_converted); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__9); +- __Pyx_GIVEREF(__pyx_tuple__9); +- +- /* "vidcutter/libs/pympv/mpv.pyx":992 +- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) +- * if drm_display: +- * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) +- * drm_params.connector_id = drm_display.get("connector_id", -1) +- */ +- __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 992, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__10); +- __Pyx_GIVEREF(__pyx_tuple__10); +- +- /* "vidcutter/libs/pympv/mpv.pyx":993 +- * if drm_display: +- * drm_params.fd = drm_display.get("fd", -1) +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< +- * drm_params.connector_id = drm_display.get("connector_id", -1) +- * arp = drm_display.get("atomic_request_ptr", None) +- */ +- __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_crtc_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 993, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__11); +- __Pyx_GIVEREF(__pyx_tuple__11); +- +- /* "vidcutter/libs/pympv/mpv.pyx":994 +- * drm_params.fd = drm_display.get("fd", -1) +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) +- * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< +- * arp = drm_display.get("atomic_request_ptr", None) +- * if arp is not None: +- */ +- __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_connector_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 994, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__12); +- __Pyx_GIVEREF(__pyx_tuple__12); +- +- /* "vidcutter/libs/pympv/mpv.pyx":995 +- * drm_params.crtc_id = drm_display.get("crtc_id", -1) +- * drm_params.connector_id = drm_display.get("connector_id", -1) +- * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< +- * if arp is not None: +- * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") +- */ +- __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_atomic_request_ptr, Py_None); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 995, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__13); +- __Pyx_GIVEREF(__pyx_tuple__13); +- +- /* "vidcutter/libs/pympv/mpv.pyx":998 +- * if arp is not None: +- * 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: +- */ +- __pyx_tuple__14 = PyTuple_Pack(2, __pyx_n_s_render_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 998, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__14); +- __Pyx_GIVEREF(__pyx_tuple__14); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1083 +- * if opengl_fbo: +- * memset(&fbo, 0, sizeof(fbo)) +- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< +- * fbo.w = opengl_fbo["w"] +- * fbo.h = opengl_fbo["h"] +- */ +- __pyx_tuple__15 = PyTuple_Pack(2, __pyx_n_s_fbo, __pyx_int_0); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 1083, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__15); +- __Pyx_GIVEREF(__pyx_tuple__15); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1086 +- * fbo.w = opengl_fbo["w"] +- * fbo.h = opengl_fbo["h"] +- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< +- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) +- * if flip_y: +- */ +- __pyx_tuple__16 = PyTuple_Pack(2, __pyx_n_s_internal_format, __pyx_int_0); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 1086, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__16); +- __Pyx_GIVEREF(__pyx_tuple__16); +- +- /* "(tree fragment)":2 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- */ +- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 2, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__17); +- __Pyx_GIVEREF(__pyx_tuple__17); +- +- /* "(tree fragment)":4 +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- */ +- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 4, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__18); +- __Pyx_GIVEREF(__pyx_tuple__18); +- +- /* "(tree fragment)":2 +- * def __reduce_cython__(self): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- */ +- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 2, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__19); +- __Pyx_GIVEREF(__pyx_tuple__19); +- +- /* "(tree fragment)":4 +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") +- * def __setstate_cython__(self, __pyx_state): +- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< +- */ +- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 4, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__20); +- __Pyx_GIVEREF(__pyx_tuple__20); +- +- /* "vidcutter/libs/pympv/mpv.pyx":52 +- * void PyEval_InitThreads() +- * +- * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< +- * _strdec_err = "surrogateescape" if _is_py3 else "strict" +- * # mpv -> Python +- */ +- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 52, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__21); +- __Pyx_GIVEREF(__pyx_tuple__21); +- +- /* "vidcutter/libs/pympv/mpv.pyx":55 +- * _strdec_err = "surrogateescape" if _is_py3 else "strict" +- * # mpv -> Python +- * def _strdec(s): # <<<<<<<<<<<<<< +- * try: +- * return s.decode("utf-8", _strdec_err) +- */ +- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 55, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__22); +- __Pyx_GIVEREF(__pyx_tuple__22); +- __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strdec, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 55, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":63 +- * +- * # Python -> mpv +- * def _strenc(s): # <<<<<<<<<<<<<< +- * try: +- * return s.encode("utf-8", _strdec_err) +- */ +- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 63, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__24); +- __Pyx_GIVEREF(__pyx_tuple__24); +- __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strenc, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 63, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":318 +- * +- * +- * def _errors(fn): # <<<<<<<<<<<<<< +- * def wrapped(*k, **kw): +- * v = fn(*k, **kw) +- */ +- __pyx_tuple__26 = PyTuple_Pack(3, __pyx_n_s_fn, __pyx_n_s_wrapped, __pyx_n_s_wrapped); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 318, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__26); +- __Pyx_GIVEREF(__pyx_tuple__26); +- __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_errors, 318, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 318, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":329 +- * code = None +- * +- * def __init__(self, e): # <<<<<<<<<<<<<< +- * self.code = e +- * cdef const char* err_c +- */ +- __pyx_tuple__28 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_e, __pyx_n_s_err_c, __pyx_n_s_e_i); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 329, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__28); +- __Pyx_GIVEREF(__pyx_tuple__28); +- __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 329, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":346 +- * cdef _reply_userdatas = dict() +- * +- * class _ReplyUserData(object): # <<<<<<<<<<<<<< +- * def __init__(self, data): +- * self.counter = 0 +- */ +- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 346, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__30); +- __Pyx_GIVEREF(__pyx_tuple__30); +- +- /* "vidcutter/libs/pympv/mpv.pyx":347 +- * +- * class _ReplyUserData(object): +- * def __init__(self, data): # <<<<<<<<<<<<<< +- * self.counter = 0 +- * self.data = data +- */ +- __pyx_tuple__31 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 347, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__31); +- __Pyx_GIVEREF(__pyx_tuple__31); +- __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 347, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":352 +- * self.observed = False +- * +- * def add(self): # <<<<<<<<<<<<<< +- * self.counter += 1 +- * +- */ +- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 352, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__33); +- __Pyx_GIVEREF(__pyx_tuple__33); +- __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_add, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 352, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":355 +- * self.counter += 1 +- * +- * def remove(self): # <<<<<<<<<<<<<< +- * self.counter -= 1 +- * +- */ +- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 355, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__35); +- __Pyx_GIVEREF(__pyx_tuple__35); +- __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_remove, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 355, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":1133 +- * +- * class CallbackThread(Thread): +- * def __init__(self): # <<<<<<<<<<<<<< +- * Thread.__init__(self) +- * self.daemon = True +- */ +- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 1133, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__37); +- __Pyx_GIVEREF(__pyx_tuple__37); +- __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 1133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 1133, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":1141 +- * self.isshutdown = False +- * +- * def shutdown(self): # <<<<<<<<<<<<<< +- * self.isshutdown = True +- * self.callback = None +- */ +- __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 1141, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__39); +- __Pyx_GIVEREF(__pyx_tuple__39); +- __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_shutdown, 1141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 1141, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":1146 +- * self.lock.release() +- * +- * def call(self): # <<<<<<<<<<<<<< +- * self.lock.release() +- * +- */ +- __pyx_tuple__41 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 1146, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__41); +- __Pyx_GIVEREF(__pyx_tuple__41); +- __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_call, 1146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 1146, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":1149 +- * self.lock.release() +- * +- * def set(self, callback): # <<<<<<<<<<<<<< +- * self.callback = callback +- * +- */ +- __pyx_tuple__43 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 1149, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__43); +- __Pyx_GIVEREF(__pyx_tuple__43); +- __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_set, 1149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 1149, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":1152 +- * self.callback = callback +- * +- * def run(self): # <<<<<<<<<<<<<< +- * while not self.isshutdown: +- * self.lock.acquire(True) +- */ +- __pyx_tuple__45 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 1152, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__45); +- __Pyx_GIVEREF(__pyx_tuple__45); +- __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_run, 1152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 1152, __pyx_L1_error) +- +- /* "vidcutter/libs/pympv/mpv.pyx":1157 +- * self.mpv_callback(self.callback) if self.callback else None +- * +- * def mpv_callback(self, callback): # <<<<<<<<<<<<<< +- * try: +- * callback() +- */ +- __pyx_tuple__47 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_callback, __pyx_n_s_e); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 1157, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__47); +- __Pyx_GIVEREF(__pyx_tuple__47); +- __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_mpv_callback, 1157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 1157, __pyx_L1_error) +- +- /* "(tree fragment)":1 +- * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result +- */ +- __pyx_tuple__49 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__49); +- __Pyx_GIVEREF(__pyx_tuple__49); +- __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_EndOfFileReached, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(1, 1, __pyx_L1_error) +- __pyx_tuple__51 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__51); +- __Pyx_GIVEREF(__pyx_tuple__51); +- __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_InputDispatch, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(1, 1, __pyx_L1_error) +- __pyx_tuple__53 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__53); +- __Pyx_GIVEREF(__pyx_tuple__53); +- __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_LogMessage, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(1, 1, __pyx_L1_error) +- __pyx_tuple__55 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__55); +- __Pyx_GIVEREF(__pyx_tuple__55); +- __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Property, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(1, 1, __pyx_L1_error) +- __pyx_tuple__57 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__57); +- __Pyx_GIVEREF(__pyx_tuple__57); +- __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Event, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(1, 1, __pyx_L1_error) +- __pyx_tuple__59 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_tuple__59); +- __Pyx_GIVEREF(__pyx_tuple__59); +- __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_RenderFrameInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_RefNannyFinishContext(); +- return 0; +- __pyx_L1_error:; +- __Pyx_RefNannyFinishContext(); +- return -1; +-} +- +-static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { +- if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); +- __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_32 = PyInt_FromLong(32); if (unlikely(!__pyx_int_32)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_5713169 = PyInt_FromLong(5713169L); if (unlikely(!__pyx_int_5713169)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_90958262 = PyInt_FromLong(90958262L); if (unlikely(!__pyx_int_90958262)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_142036910 = PyInt_FromLong(142036910L); if (unlikely(!__pyx_int_142036910)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_200688041 = PyInt_FromLong(200688041L); if (unlikely(!__pyx_int_200688041)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_222419149 = PyInt_FromLong(222419149L); if (unlikely(!__pyx_int_222419149)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_228822053 = PyInt_FromLong(228822053L); if (unlikely(!__pyx_int_228822053)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) +- return 0; +- __pyx_L1_error:; +- return -1; +-} +- +-static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +-static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +-static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +-static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +-static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +-static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +-static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ +- +-static int __Pyx_modinit_global_init_code(void) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); +- /*--- Global init code ---*/ +- __pyx_v_9vidcutter_4libs_3mpv__callbacks = Py_None; Py_INCREF(Py_None); +- __pyx_v_9vidcutter_4libs_3mpv__reply_userdatas = Py_None; Py_INCREF(Py_None); +- __Pyx_RefNannyFinishContext(); +- return 0; +-} +- +-static int __Pyx_modinit_variable_export_code(void) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); +- /*--- Variable export code ---*/ +- __Pyx_RefNannyFinishContext(); +- return 0; +-} +- +-static int __Pyx_modinit_function_export_code(void) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); +- /*--- Function export code ---*/ +- __Pyx_RefNannyFinishContext(); +- return 0; +-} +- +-static int __Pyx_modinit_type_init_code(void) { +- __Pyx_RefNannyDeclarations +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); +- /*--- Type init code ---*/ +- __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; +- __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *, struct mpv_event_end_file *))__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_EndOfFileReached, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached; +- __pyx_vtabptr_9vidcutter_4libs_3mpv_InputDispatch = &__pyx_vtable_9vidcutter_4libs_3mpv_InputDispatch; +- __pyx_vtable_9vidcutter_4libs_3mpv_InputDispatch._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *, struct mpv_event_script_input_dispatch *))__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_InputDispatch) < 0) __PYX_ERR(0, 169, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_InputDispatch) < 0) __PYX_ERR(0, 169, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_InputDispatch, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_InputDispatch) < 0) __PYX_ERR(0, 169, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_InputDispatch) < 0) __PYX_ERR(0, 169, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_InputDispatch = &__pyx_type_9vidcutter_4libs_3mpv_InputDispatch; +- __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage = &__pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; +- __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *, struct mpv_event_log_message *))__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LogMessage, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_LogMessage = &__pyx_type_9vidcutter_4libs_3mpv_LogMessage; +- __pyx_vtabptr_9vidcutter_4libs_3mpv_Property = &__pyx_vtable_9vidcutter_4libs_3mpv_Property; +- __pyx_vtable_9vidcutter_4libs_3mpv_Property._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *, struct mpv_event_property *))__pyx_f_9vidcutter_4libs_3mpv_8Property__init; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_Property.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Property, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_Property = &__pyx_type_9vidcutter_4libs_3mpv_Property; +- __pyx_vtabptr_9vidcutter_4libs_3mpv_Event = &__pyx_vtable_9vidcutter_4libs_3mpv_Event; +- __pyx_vtable_9vidcutter_4libs_3mpv_Event._data = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *))__pyx_f_9vidcutter_4libs_3mpv_5Event__data; +- __pyx_vtable_9vidcutter_4libs_3mpv_Event._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_5Event__init; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_Event.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Event, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_Event = &__pyx_type_9vidcutter_4libs_3mpv_Event; +- __pyx_vtabptr_9vidcutter_4libs_3mpv_Context = &__pyx_vtable_9vidcutter_4libs_3mpv_Context; +- __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_list = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list; +- __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_map = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map; +- __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_native_value = (struct mpv_node (*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value; +- __pyx_vtable_9vidcutter_4libs_3mpv_Context._free_native_value = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, struct mpv_node))__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_Context.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Context, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_Context = &__pyx_type_9vidcutter_4libs_3mpv_Context; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext) < 0) __PYX_ERR(0, 822, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_OpenGLContext.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_OpenGLContext.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_OpenGLContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext) < 0) __PYX_ERR(0, 822, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext) < 0) __PYX_ERR(0, 822, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_OpenGLContext = &__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext; +- __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams = &__pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; +- __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_voidp = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, void *, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp; +- __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_int = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, int))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int; +- __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_string = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, char *))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderParams, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv__RenderParams = &__pyx_type_9vidcutter_4libs_3mpv__RenderParams; +- __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; +- __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo._from_struct = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *, struct mpv_render_frame_info *))__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext = &__pyx_type_9vidcutter_4libs_3mpv_RenderContext; +- __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_base = __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; +- } +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLRenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) +- __pyx_ptype_9vidcutter_4libs_3mpv_OpenGLRenderContext = &__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors) < 0) __PYX_ERR(0, 318, __pyx_L1_error) +- #if PY_VERSION_HEX < 0x030800B1 +- __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_print = 0; +- #endif +- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_getattro == PyObject_GenericGetAttr)) { +- __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; +- } +- __pyx_ptype_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = &__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors; +- __Pyx_RefNannyFinishContext(); +- return 0; +- __pyx_L1_error:; +- __Pyx_RefNannyFinishContext(); +- return -1; +-} +- +-static int __Pyx_modinit_type_import_code(void) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); +- /*--- Type import code ---*/ +- __Pyx_RefNannyFinishContext(); +- return 0; +-} +- +-static int __Pyx_modinit_variable_import_code(void) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); +- /*--- Variable import code ---*/ +- __Pyx_RefNannyFinishContext(); +- return 0; +-} +- +-static int __Pyx_modinit_function_import_code(void) { +- __Pyx_RefNannyDeclarations +- __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); +- /*--- Function import code ---*/ +- __Pyx_RefNannyFinishContext(); +- return 0; +-} +- +- +-#ifndef CYTHON_NO_PYINIT_EXPORT +-#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +-#elif PY_MAJOR_VERSION < 3 +-#ifdef __cplusplus +-#define __Pyx_PyMODINIT_FUNC extern "C" void +-#else +-#define __Pyx_PyMODINIT_FUNC void +-#endif +-#else +-#ifdef __cplusplus +-#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +-#else +-#define __Pyx_PyMODINIT_FUNC PyObject * +-#endif +-#endif +- +- +-#if PY_MAJOR_VERSION < 3 +-__Pyx_PyMODINIT_FUNC initmpv(void) CYTHON_SMALL_CODE; /*proto*/ +-__Pyx_PyMODINIT_FUNC initmpv(void) +-#else +-__Pyx_PyMODINIT_FUNC PyInit_mpv(void) CYTHON_SMALL_CODE; /*proto*/ +-__Pyx_PyMODINIT_FUNC PyInit_mpv(void) +-#if CYTHON_PEP489_MULTI_PHASE_INIT +-{ +- return PyModuleDef_Init(&__pyx_moduledef); +-} +-static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { +- #if PY_VERSION_HEX >= 0x030700A1 +- static PY_INT64_T main_interpreter_id = -1; +- PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); +- if (main_interpreter_id == -1) { +- main_interpreter_id = current_id; +- return (unlikely(current_id == -1)) ? -1 : 0; +- } else if (unlikely(main_interpreter_id != current_id)) +- #else +- static PyInterpreterState *main_interpreter = NULL; +- PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; +- if (!main_interpreter) { +- main_interpreter = current_interpreter; +- } else if (unlikely(main_interpreter != current_interpreter)) +- #endif +- { +- PyErr_SetString( +- PyExc_ImportError, +- "Interpreter change detected - this module can only be loaded into one interpreter per process."); +- return -1; +- } +- return 0; +-} +-static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { +- PyObject *value = PyObject_GetAttrString(spec, from_name); +- int result = 0; +- if (likely(value)) { +- if (allow_none || value != Py_None) { +- result = PyDict_SetItemString(moddict, to_name, value); +- } +- Py_DECREF(value); +- } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { +- PyErr_Clear(); +- } else { +- result = -1; +- } +- return result; +-} +-static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { +- PyObject *module = NULL, *moddict, *modname; +- if (__Pyx_check_single_interpreter()) +- return NULL; +- if (__pyx_m) +- return __Pyx_NewRef(__pyx_m); +- modname = PyObject_GetAttrString(spec, "name"); +- if (unlikely(!modname)) goto bad; +- module = PyModule_NewObject(modname); +- Py_DECREF(modname); +- if (unlikely(!module)) goto bad; +- moddict = PyModule_GetDict(module); +- if (unlikely(!moddict)) goto bad; +- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; +- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; +- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; +- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; +- return module; +-bad: +- Py_XDECREF(module); +- return NULL; +-} +- +- +-static CYTHON_SMALL_CODE int __pyx_pymod_exec_mpv(PyObject *__pyx_pyinit_module) +-#endif +-#endif +-{ +- PyObject *__pyx_t_1 = NULL; +- PyObject *__pyx_t_2 = NULL; +- int __pyx_t_3; +- PyObject *__pyx_t_4 = NULL; +- int __pyx_t_5; +- PyObject *__pyx_t_6 = NULL; +- PyObject *__pyx_t_7 = NULL; +- int __pyx_lineno = 0; +- const char *__pyx_filename = NULL; +- int __pyx_clineno = 0; +- __Pyx_RefNannyDeclarations +- #if CYTHON_PEP489_MULTI_PHASE_INIT +- if (__pyx_m) { +- if (__pyx_m == __pyx_pyinit_module) return 0; +- PyErr_SetString(PyExc_RuntimeError, "Module 'mpv' has already been imported. Re-initialisation is not supported."); +- return -1; +- } +- #elif PY_MAJOR_VERSION >= 3 +- if (__pyx_m) return __Pyx_NewRef(__pyx_m); +- #endif +- #if CYTHON_REFNANNY +-__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +-if (!__Pyx_RefNanny) { +- PyErr_Clear(); +- __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); +- if (!__Pyx_RefNanny) +- Py_FatalError("failed to import 'refnanny' module"); +-} +-#endif +- __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_mpv(void)", 0); +- if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #ifdef __Pxy_PyFrame_Initialize_Offsets +- __Pxy_PyFrame_Initialize_Offsets(); +- #endif +- __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) +- #ifdef __Pyx_CyFunction_USED +- if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #endif +- #ifdef __Pyx_FusedFunction_USED +- if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #endif +- #ifdef __Pyx_Coroutine_USED +- if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #endif +- #ifdef __Pyx_Generator_USED +- if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #endif +- #ifdef __Pyx_AsyncGen_USED +- if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #endif +- #ifdef __Pyx_StopAsyncIteration_USED +- if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #endif +- /*--- Library function declarations ---*/ +- /*--- Threads initialization code ---*/ +- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS +- #ifdef WITH_THREAD /* Python build with threading support? */ +- PyEval_InitThreads(); +- #endif +- #endif +- /*--- Module creation code ---*/ +- #if CYTHON_PEP489_MULTI_PHASE_INIT +- __pyx_m = __pyx_pyinit_module; +- Py_INCREF(__pyx_m); +- #else +- #if PY_MAJOR_VERSION < 3 +- __pyx_m = Py_InitModule4("mpv", __pyx_methods, __pyx_k_pympv_Python_wrapper_for_libmpv, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); +- #else +- __pyx_m = PyModule_Create(&__pyx_moduledef); +- #endif +- if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) +- #endif +- __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) +- Py_INCREF(__pyx_d); +- __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) +- Py_INCREF(__pyx_b); +- __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) +- Py_INCREF(__pyx_cython_runtime); +- if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); +- /*--- Initialize various global constants etc. ---*/ +- if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) +- if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #endif +- if (__pyx_module_is_main_vidcutter__libs__mpv) { +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- } +- #if PY_MAJOR_VERSION >= 3 +- { +- PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) +- if (!PyDict_GetItemString(modules, "vidcutter.libs.mpv")) { +- if (unlikely(PyDict_SetItemString(modules, "vidcutter.libs.mpv", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) +- } +- } +- #endif +- /*--- Builtin init code ---*/ +- if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- /*--- Constants init code ---*/ +- if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- /*--- Global type/function init code ---*/ +- (void)__Pyx_modinit_global_init_code(); +- (void)__Pyx_modinit_variable_export_code(); +- (void)__Pyx_modinit_function_export_code(); +- if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) +- (void)__Pyx_modinit_type_import_code(); +- (void)__Pyx_modinit_variable_import_code(); +- (void)__Pyx_modinit_function_import_code(); +- /*--- Execution code ---*/ +- #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) +- if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- #endif ++static __Pyx_StringTabEntry __pyx_string_tab[] = { ++ {&__pyx_kp_s_0_3_0, __pyx_k_0_3_0, sizeof(__pyx_k_0_3_0), 0, 0, 1, 0}, ++ {&__pyx_n_s_API_OPENGL, __pyx_k_API_OPENGL, sizeof(__pyx_k_API_OPENGL), 0, 0, 1, 1}, ++ {&__pyx_kp_s_Andre_D, __pyx_k_Andre_D, sizeof(__pyx_k_Andre_D), 0, 0, 1, 0}, ++ {&__pyx_n_s_CAPI_MAJOR, __pyx_k_CAPI_MAJOR, sizeof(__pyx_k_CAPI_MAJOR), 0, 0, 1, 1}, ++ {&__pyx_n_s_CAPI_MINOR, __pyx_k_CAPI_MINOR, sizeof(__pyx_k_CAPI_MINOR), 0, 0, 1, 1}, ++ {&__pyx_n_s_CallbackThread, __pyx_k_CallbackThread, sizeof(__pyx_k_CallbackThread), 0, 0, 1, 1}, ++ {&__pyx_n_s_CallbackThread___init, __pyx_k_CallbackThread___init, sizeof(__pyx_k_CallbackThread___init), 0, 0, 1, 1}, ++ {&__pyx_n_s_CallbackThread_call, __pyx_k_CallbackThread_call, sizeof(__pyx_k_CallbackThread_call), 0, 0, 1, 1}, ++ {&__pyx_n_s_CallbackThread_mpv_callback, __pyx_k_CallbackThread_mpv_callback, sizeof(__pyx_k_CallbackThread_mpv_callback), 0, 0, 1, 1}, ++ {&__pyx_n_s_CallbackThread_run, __pyx_k_CallbackThread_run, sizeof(__pyx_k_CallbackThread_run), 0, 0, 1, 1}, ++ {&__pyx_n_s_CallbackThread_set, __pyx_k_CallbackThread_set, sizeof(__pyx_k_CallbackThread_set), 0, 0, 1, 1}, ++ {&__pyx_n_s_CallbackThread_shutdown, __pyx_k_CallbackThread_shutdown, sizeof(__pyx_k_CallbackThread_shutdown), 0, 0, 1, 1}, ++ {&__pyx_n_s_Context, __pyx_k_Context, sizeof(__pyx_k_Context), 0, 0, 1, 1}, ++ {&__pyx_kp_s_Context_creation_error, __pyx_k_Context_creation_error, sizeof(__pyx_k_Context_creation_error), 0, 0, 1, 0}, ++ {&__pyx_n_s_EOFReasons, __pyx_k_EOFReasons, sizeof(__pyx_k_EOFReasons), 0, 0, 1, 1}, ++ {&__pyx_n_s_EndOfFileReached, __pyx_k_EndOfFileReached, sizeof(__pyx_k_EndOfFileReached), 0, 0, 1, 1}, ++ {&__pyx_n_s_Errors, __pyx_k_Errors, sizeof(__pyx_k_Errors), 0, 0, 1, 1}, ++ {&__pyx_n_s_Event, __pyx_k_Event, sizeof(__pyx_k_Event), 0, 0, 1, 1}, ++ {&__pyx_n_s_Events, __pyx_k_Events, sizeof(__pyx_k_Events), 0, 0, 1, 1}, ++ {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, ++ {&__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_k_Incompatible_checksums_s_vs_0x05, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x05), 0, 0, 1, 0}, ++ {&__pyx_kp_s_Incompatible_checksums_s_vs_0x56, __pyx_k_Incompatible_checksums_s_vs_0x56, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x56), 0, 0, 1, 0}, ++ {&__pyx_kp_s_Incompatible_checksums_s_vs_0x87, __pyx_k_Incompatible_checksums_s_vs_0x87, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x87), 0, 0, 1, 0}, ++ {&__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_k_Incompatible_checksums_s_vs_0xd4, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xd4), 0, 0, 1, 0}, ++ {&__pyx_kp_s_Incompatible_checksums_s_vs_0xda, __pyx_k_Incompatible_checksums_s_vs_0xda, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xda), 0, 0, 1, 0}, ++ {&__pyx_kp_s_Known_possible_values_for_EndOfF, __pyx_k_Known_possible_values_for_EndOfF, sizeof(__pyx_k_Known_possible_values_for_EndOfF), 0, 0, 1, 0}, ++ {&__pyx_n_s_LogLevels, __pyx_k_LogLevels, sizeof(__pyx_k_LogLevels), 0, 0, 1, 1}, ++ {&__pyx_n_s_LogMessage, __pyx_k_LogMessage, sizeof(__pyx_k_LogMessage), 0, 0, 1, 1}, ++ {&__pyx_n_s_MIN_CAPI_MINOR, __pyx_k_MIN_CAPI_MINOR, sizeof(__pyx_k_MIN_CAPI_MINOR), 0, 0, 1, 1}, ++ {&__pyx_n_s_MPVError, __pyx_k_MPVError, sizeof(__pyx_k_MPVError), 0, 0, 1, 1}, ++ {&__pyx_n_s_MPVError___init, __pyx_k_MPVError___init, sizeof(__pyx_k_MPVError___init), 0, 0, 1, 1}, ++ {&__pyx_n_s_OpenGLRenderContext, __pyx_k_OpenGLRenderContext, sizeof(__pyx_k_OpenGLRenderContext), 0, 0, 1, 1}, ++ {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, ++ {&__pyx_n_s_Property, __pyx_k_Property, sizeof(__pyx_k_Property), 0, 0, 1, 1}, ++ {&__pyx_n_s_PyMPVError, __pyx_k_PyMPVError, sizeof(__pyx_k_PyMPVError), 0, 0, 1, 1}, ++ {&__pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_k_REQUIRED_CAPI_MAJOR, sizeof(__pyx_k_REQUIRED_CAPI_MAJOR), 0, 0, 1, 1}, ++ {&__pyx_n_s_RenderContext, __pyx_k_RenderContext, sizeof(__pyx_k_RenderContext), 0, 0, 1, 1}, ++ {&__pyx_n_s_RenderParams, __pyx_k_RenderParams, sizeof(__pyx_k_RenderParams), 0, 0, 1, 1}, ++ {&__pyx_kp_s_RenderParams_overflow, __pyx_k_RenderParams_overflow, sizeof(__pyx_k_RenderParams_overflow), 0, 0, 1, 0}, ++ {&__pyx_n_s_ReplyUserData, __pyx_k_ReplyUserData, sizeof(__pyx_k_ReplyUserData), 0, 0, 1, 1}, ++ {&__pyx_n_s_ReplyUserData___init, __pyx_k_ReplyUserData___init, sizeof(__pyx_k_ReplyUserData___init), 0, 0, 1, 1}, ++ {&__pyx_n_s_ReplyUserData_add, __pyx_k_ReplyUserData_add, sizeof(__pyx_k_ReplyUserData_add), 0, 0, 1, 1}, ++ {&__pyx_n_s_ReplyUserData_remove, __pyx_k_ReplyUserData_remove, sizeof(__pyx_k_ReplyUserData_remove), 0, 0, 1, 1}, ++ {&__pyx_n_s_Semaphore, __pyx_k_Semaphore, sizeof(__pyx_k_Semaphore), 0, 0, 1, 1}, ++ {&__pyx_kp_s_Set_of_known_error_codes_from_Mp, __pyx_k_Set_of_known_error_codes_from_Mp, sizeof(__pyx_k_Set_of_known_error_codes_from_Mp), 0, 0, 1, 0}, ++ {&__pyx_kp_s_Set_of_known_values_for_Event_id, __pyx_k_Set_of_known_values_for_Event_id, sizeof(__pyx_k_Set_of_known_values_for_Event_id), 0, 0, 1, 0}, ++ {&__pyx_n_s_Thread, __pyx_k_Thread, sizeof(__pyx_k_Thread), 0, 0, 1, 1}, ++ {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, ++ {&__pyx_n_s_UPDATE_FRAME, __pyx_k_UPDATE_FRAME, sizeof(__pyx_k_UPDATE_FRAME), 0, 0, 1, 1}, ++ {&__pyx_n_s_UnicodeDecodeError, __pyx_k_UnicodeDecodeError, sizeof(__pyx_k_UnicodeDecodeError), 0, 0, 1, 1}, ++ {&__pyx_n_s_UnicodeEncodeError, __pyx_k_UnicodeEncodeError, sizeof(__pyx_k_UnicodeEncodeError), 0, 0, 1, 1}, ++ {&__pyx_kp_s_Unknown_api_type_r, __pyx_k_Unknown_api_type_r, sizeof(__pyx_k_Unknown_api_type_r), 0, 0, 1, 0}, ++ {&__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_k_Unknown_or_invalid_pointer_objec, sizeof(__pyx_k_Unknown_or_invalid_pointer_objec), 0, 0, 1, 0}, ++ {&__pyx_n_s_aborted, __pyx_k_aborted, sizeof(__pyx_k_aborted), 0, 0, 1, 1}, ++ {&__pyx_n_s_acquire, __pyx_k_acquire, sizeof(__pyx_k_acquire), 0, 0, 1, 1}, ++ {&__pyx_n_s_add, __pyx_k_add, sizeof(__pyx_k_add), 0, 0, 1, 1}, ++ {&__pyx_n_s_advanced_control, __pyx_k_advanced_control, sizeof(__pyx_k_advanced_control), 0, 0, 1, 1}, ++ {&__pyx_n_s_ao_init_failed, __pyx_k_ao_init_failed, sizeof(__pyx_k_ao_init_failed), 0, 0, 1, 1}, ++ {&__pyx_n_s_api_type, __pyx_k_api_type, sizeof(__pyx_k_api_type), 0, 0, 1, 1}, ++ {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, ++ {&__pyx_n_s_asynchronous, __pyx_k_asynchronous, sizeof(__pyx_k_asynchronous), 0, 0, 1, 1}, ++ {&__pyx_n_s_atomic_request_ptr, __pyx_k_atomic_request_ptr, sizeof(__pyx_k_atomic_request_ptr), 0, 0, 1, 1}, ++ {&__pyx_n_s_audio_reconfig, __pyx_k_audio_reconfig, sizeof(__pyx_k_audio_reconfig), 0, 0, 1, 1}, ++ {&__pyx_n_s_author, __pyx_k_author, sizeof(__pyx_k_author), 0, 0, 1, 1}, ++ {&__pyx_n_s_block_for_target_time, __pyx_k_block_for_target_time, sizeof(__pyx_k_block_for_target_time), 0, 0, 1, 1}, ++ {&__pyx_n_s_block_vsync, __pyx_k_block_vsync, sizeof(__pyx_k_block_vsync), 0, 0, 1, 1}, ++ {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1}, ++ {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, ++ {&__pyx_n_s_client_message, __pyx_k_client_message, sizeof(__pyx_k_client_message), 0, 0, 1, 1}, ++ {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, ++ {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, ++ {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1}, ++ {&__pyx_n_s_command_error, __pyx_k_command_error, sizeof(__pyx_k_command_error), 0, 0, 1, 1}, ++ {&__pyx_n_s_command_reply, __pyx_k_command_reply, sizeof(__pyx_k_command_reply), 0, 0, 1, 1}, ++ {&__pyx_n_s_connector_id, __pyx_k_connector_id, sizeof(__pyx_k_connector_id), 0, 0, 1, 1}, ++ {&__pyx_n_s_counter, __pyx_k_counter, sizeof(__pyx_k_counter), 0, 0, 1, 1}, ++ {&__pyx_n_s_crtc_id, __pyx_k_crtc_id, sizeof(__pyx_k_crtc_id), 0, 0, 1, 1}, ++ {&__pyx_n_s_daemon, __pyx_k_daemon, sizeof(__pyx_k_daemon), 0, 0, 1, 1}, ++ {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, ++ {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, ++ {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, ++ {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1}, ++ {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1}, ++ {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, ++ {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, ++ {&__pyx_kp_s_drmModeAtomicReq, __pyx_k_drmModeAtomicReq, sizeof(__pyx_k_drmModeAtomicReq), 0, 0, 1, 0}, ++ {&__pyx_n_s_drm_display, __pyx_k_drm_display, sizeof(__pyx_k_drm_display), 0, 0, 1, 1}, ++ {&__pyx_n_s_drm_osd_size, __pyx_k_drm_osd_size, sizeof(__pyx_k_drm_osd_size), 0, 0, 1, 1}, ++ {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, ++ {&__pyx_n_s_e_i, __pyx_k_e_i, sizeof(__pyx_k_e_i), 0, 0, 1, 1}, ++ {&__pyx_n_s_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 0, 1, 1}, ++ {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, ++ {&__pyx_n_s_end_file, __pyx_k_end_file, sizeof(__pyx_k_end_file), 0, 0, 1, 1}, ++ {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, ++ {&__pyx_n_s_eof, __pyx_k_eof, sizeof(__pyx_k_eof), 0, 0, 1, 1}, ++ {&__pyx_n_s_err_c, __pyx_k_err_c, sizeof(__pyx_k_err_c), 0, 0, 1, 1}, ++ {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, ++ {&__pyx_n_s_errors, __pyx_k_errors, sizeof(__pyx_k_errors), 0, 0, 1, 1}, ++ {&__pyx_n_s_errors_locals_wrapped, __pyx_k_errors_locals_wrapped, sizeof(__pyx_k_errors_locals_wrapped), 0, 0, 1, 1}, ++ {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, ++ {&__pyx_n_s_fatal, __pyx_k_fatal, sizeof(__pyx_k_fatal), 0, 0, 1, 1}, ++ {&__pyx_n_s_fbo, __pyx_k_fbo, sizeof(__pyx_k_fbo), 0, 0, 1, 1}, ++ {&__pyx_n_s_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 0, 0, 1, 1}, ++ {&__pyx_n_s_file_loaded, __pyx_k_file_loaded, sizeof(__pyx_k_file_loaded), 0, 0, 1, 1}, ++ {&__pyx_n_s_flip_y, __pyx_k_flip_y, sizeof(__pyx_k_flip_y), 0, 0, 1, 1}, ++ {&__pyx_n_s_fn, __pyx_k_fn, sizeof(__pyx_k_fn), 0, 0, 1, 1}, ++ {&__pyx_n_s_format_for, __pyx_k_format_for, sizeof(__pyx_k_format_for), 0, 0, 1, 1}, ++ {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, ++ {&__pyx_n_s_get_proc_address, __pyx_k_get_proc_address, sizeof(__pyx_k_get_proc_address), 0, 0, 1, 1}, ++ {&__pyx_n_s_get_property, __pyx_k_get_property, sizeof(__pyx_k_get_property), 0, 0, 1, 1}, ++ {&__pyx_n_s_get_property_async, __pyx_k_get_property_async, sizeof(__pyx_k_get_property_async), 0, 0, 1, 1}, ++ {&__pyx_n_s_get_property_reply, __pyx_k_get_property_reply, sizeof(__pyx_k_get_property_reply), 0, 0, 1, 1}, ++ {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, ++ {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, ++ {&__pyx_kp_s_icc_blob_should_be_a_bytes_insta, __pyx_k_icc_blob_should_be_a_bytes_insta, sizeof(__pyx_k_icc_blob_should_be_a_bytes_insta), 0, 0, 1, 0}, ++ {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, ++ {&__pyx_n_s_idle, __pyx_k_idle, sizeof(__pyx_k_idle), 0, 0, 1, 1}, ++ {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, ++ {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1}, ++ {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, ++ {&__pyx_n_s_initialize, __pyx_k_initialize, sizeof(__pyx_k_initialize), 0, 0, 1, 1}, ++ {&__pyx_n_s_internal_format, __pyx_k_internal_format, sizeof(__pyx_k_internal_format), 0, 0, 1, 1}, ++ {&__pyx_n_s_invalid_parameter, __pyx_k_invalid_parameter, sizeof(__pyx_k_invalid_parameter), 0, 0, 1, 1}, ++ {&__pyx_n_s_is_py3, __pyx_k_is_py3, sizeof(__pyx_k_is_py3), 0, 0, 1, 1}, ++ {&__pyx_n_s_isshutdown, __pyx_k_isshutdown, sizeof(__pyx_k_isshutdown), 0, 0, 1, 1}, ++ {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1}, ++ {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1}, ++ {&__pyx_n_s_kw, __pyx_k_kw, sizeof(__pyx_k_kw), 0, 0, 1, 1}, ++ {&__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_k_libmpv_version_is_incorrect_Requ, sizeof(__pyx_k_libmpv_version_is_incorrect_Requ), 0, 0, 1, 0}, ++ {&__pyx_n_s_load_config, __pyx_k_load_config, sizeof(__pyx_k_load_config), 0, 0, 1, 1}, ++ {&__pyx_n_s_loading_failed, __pyx_k_loading_failed, sizeof(__pyx_k_loading_failed), 0, 0, 1, 1}, ++ {&__pyx_n_s_lock, __pyx_k_lock, sizeof(__pyx_k_lock), 0, 0, 1, 1}, ++ {&__pyx_n_s_log_message, __pyx_k_log_message, sizeof(__pyx_k_log_message), 0, 0, 1, 1}, ++ {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, ++ {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, ++ {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, ++ {&__pyx_n_s_mpv, __pyx_k_mpv, sizeof(__pyx_k_mpv), 0, 0, 1, 1}, ++ {&__pyx_n_s_mpv_callback, __pyx_k_mpv_callback, sizeof(__pyx_k_mpv_callback), 0, 0, 1, 1}, ++ {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, ++ {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, ++ {&__pyx_n_s_no, __pyx_k_no, sizeof(__pyx_k_no), 0, 0, 1, 1}, ++ {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, ++ {&__pyx_n_s_nomem, __pyx_k_nomem, sizeof(__pyx_k_nomem), 0, 0, 1, 1}, ++ {&__pyx_n_s_none, __pyx_k_none, sizeof(__pyx_k_none), 0, 0, 1, 1}, ++ {&__pyx_n_s_not_found, __pyx_k_not_found, sizeof(__pyx_k_not_found), 0, 0, 1, 1}, ++ {&__pyx_n_s_not_implemented, __pyx_k_not_implemented, sizeof(__pyx_k_not_implemented), 0, 0, 1, 1}, ++ {&__pyx_n_s_nothing_to_play, __pyx_k_nothing_to_play, sizeof(__pyx_k_nothing_to_play), 0, 0, 1, 1}, ++ {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1}, ++ {&__pyx_n_s_observe_property, __pyx_k_observe_property, sizeof(__pyx_k_observe_property), 0, 0, 1, 1}, ++ {&__pyx_n_s_observed, __pyx_k_observed, sizeof(__pyx_k_observed), 0, 0, 1, 1}, ++ {&__pyx_n_s_opengl, __pyx_k_opengl, sizeof(__pyx_k_opengl), 0, 0, 1, 1}, ++ {&__pyx_n_s_opengl_fbo, __pyx_k_opengl_fbo, sizeof(__pyx_k_opengl_fbo), 0, 0, 1, 1}, ++ {&__pyx_n_s_opengl_init_params, __pyx_k_opengl_init_params, sizeof(__pyx_k_opengl_init_params), 0, 0, 1, 1}, ++ {&__pyx_n_s_option_error, __pyx_k_option_error, sizeof(__pyx_k_option_error), 0, 0, 1, 1}, ++ {&__pyx_n_s_option_format, __pyx_k_option_format, sizeof(__pyx_k_option_format), 0, 0, 1, 1}, ++ {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, ++ {&__pyx_n_s_playback_restart, __pyx_k_playback_restart, sizeof(__pyx_k_playback_restart), 0, 0, 1, 1}, ++ {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, ++ {&__pyx_n_s_present, __pyx_k_present, sizeof(__pyx_k_present), 0, 0, 1, 1}, ++ {&__pyx_n_s_prop, __pyx_k_prop, sizeof(__pyx_k_prop), 0, 0, 1, 1}, ++ {&__pyx_n_s_property_change, __pyx_k_property_change, sizeof(__pyx_k_property_change), 0, 0, 1, 1}, ++ {&__pyx_n_s_property_error, __pyx_k_property_error, sizeof(__pyx_k_property_error), 0, 0, 1, 1}, ++ {&__pyx_n_s_property_format, __pyx_k_property_format, sizeof(__pyx_k_property_format), 0, 0, 1, 1}, ++ {&__pyx_n_s_property_unavailable, __pyx_k_property_unavailable, sizeof(__pyx_k_property_unavailable), 0, 0, 1, 1}, ++ {&__pyx_kp_s_pympv_error_during_callback_s, __pyx_k_pympv_error_during_callback_s, sizeof(__pyx_k_pympv_error_during_callback_s), 0, 0, 1, 0}, ++ {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_unpickle_EndOfFileReached, __pyx_k_pyx_unpickle_EndOfFileReached, sizeof(__pyx_k_pyx_unpickle_EndOfFileReached), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_unpickle_Event, __pyx_k_pyx_unpickle_Event, sizeof(__pyx_k_pyx_unpickle_Event), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_unpickle_LogMessage, __pyx_k_pyx_unpickle_LogMessage, sizeof(__pyx_k_pyx_unpickle_LogMessage), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_unpickle_Property, __pyx_k_pyx_unpickle_Property, sizeof(__pyx_k_pyx_unpickle_Property), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_unpickle_RenderFrameInfo, __pyx_k_pyx_unpickle_RenderFrameInfo, sizeof(__pyx_k_pyx_unpickle_RenderFrameInfo), 0, 0, 1, 1}, ++ {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, ++ {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, ++ {&__pyx_n_s_queue_full, __pyx_k_queue_full, sizeof(__pyx_k_queue_full), 0, 0, 1, 1}, ++ {&__pyx_n_s_quit, __pyx_k_quit, sizeof(__pyx_k_quit), 0, 0, 1, 1}, ++ {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, ++ {&__pyx_n_s_redraw, __pyx_k_redraw, sizeof(__pyx_k_redraw), 0, 0, 1, 1}, ++ {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, ++ {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, ++ {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, ++ {&__pyx_n_s_release, __pyx_k_release, sizeof(__pyx_k_release), 0, 0, 1, 1}, ++ {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1}, ++ {&__pyx_n_s_render, __pyx_k_render, sizeof(__pyx_k_render), 0, 0, 1, 1}, ++ {&__pyx_n_s_render_fd, __pyx_k_render_fd, sizeof(__pyx_k_render_fd), 0, 0, 1, 1}, ++ {&__pyx_n_s_repeat, __pyx_k_repeat, sizeof(__pyx_k_repeat), 0, 0, 1, 1}, ++ {&__pyx_n_s_request_event, __pyx_k_request_event, sizeof(__pyx_k_request_event), 0, 0, 1, 1}, ++ {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1}, ++ {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1}, ++ {&__pyx_n_s_seek, __pyx_k_seek, sizeof(__pyx_k_seek), 0, 0, 1, 1}, ++ {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, ++ {&__pyx_kp_s_self__ctx_cannot_be_converted_to, __pyx_k_self__ctx_cannot_be_converted_to, sizeof(__pyx_k_self__ctx_cannot_be_converted_to), 0, 0, 1, 0}, ++ {&__pyx_kp_s_self_params_cannot_be_converted, __pyx_k_self_params_cannot_be_converted, sizeof(__pyx_k_self_params_cannot_be_converted), 0, 0, 1, 0}, ++ {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1}, ++ {&__pyx_n_s_set_ambient_light, __pyx_k_set_ambient_light, sizeof(__pyx_k_set_ambient_light), 0, 0, 1, 1}, ++ {&__pyx_n_s_set_icc_profile, __pyx_k_set_icc_profile, sizeof(__pyx_k_set_icc_profile), 0, 0, 1, 1}, ++ {&__pyx_n_s_set_log_level, __pyx_k_set_log_level, sizeof(__pyx_k_set_log_level), 0, 0, 1, 1}, ++ {&__pyx_n_s_set_option, __pyx_k_set_option, sizeof(__pyx_k_set_option), 0, 0, 1, 1}, ++ {&__pyx_n_s_set_property, __pyx_k_set_property, sizeof(__pyx_k_set_property), 0, 0, 1, 1}, ++ {&__pyx_n_s_set_property_reply, __pyx_k_set_property_reply, sizeof(__pyx_k_set_property_reply), 0, 0, 1, 1}, ++ {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, ++ {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, ++ {&__pyx_n_s_shutdown, __pyx_k_shutdown, sizeof(__pyx_k_shutdown), 0, 0, 1, 1}, ++ {&__pyx_n_s_skip_rendering, __pyx_k_skip_rendering, sizeof(__pyx_k_skip_rendering), 0, 0, 1, 1}, ++ {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, ++ {&__pyx_n_s_start_file, __pyx_k_start_file, sizeof(__pyx_k_start_file), 0, 0, 1, 1}, ++ {&__pyx_n_s_stderr, __pyx_k_stderr, sizeof(__pyx_k_stderr), 0, 0, 1, 1}, ++ {&__pyx_n_s_strdec, __pyx_k_strdec, sizeof(__pyx_k_strdec), 0, 0, 1, 1}, ++ {&__pyx_n_s_strdec_err, __pyx_k_strdec_err, sizeof(__pyx_k_strdec_err), 0, 0, 1, 1}, ++ {&__pyx_n_s_strenc, __pyx_k_strenc, sizeof(__pyx_k_strenc), 0, 0, 1, 1}, ++ {&__pyx_n_s_strict, __pyx_k_strict, sizeof(__pyx_k_strict), 0, 0, 1, 1}, ++ {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, ++ {&__pyx_n_s_success, __pyx_k_success, sizeof(__pyx_k_success), 0, 0, 1, 1}, ++ {&__pyx_n_s_surrogateescape, __pyx_k_surrogateescape, sizeof(__pyx_k_surrogateescape), 0, 0, 1, 1}, ++ {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, ++ {&__pyx_n_s_target_time, __pyx_k_target_time, sizeof(__pyx_k_target_time), 0, 0, 1, 1}, ++ {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, ++ {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1}, ++ {&__pyx_n_s_tick, __pyx_k_tick, sizeof(__pyx_k_tick), 0, 0, 1, 1}, ++ {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, ++ {&__pyx_n_s_trace, __pyx_k_trace, sizeof(__pyx_k_trace), 0, 0, 1, 1}, ++ {&__pyx_n_s_uninitialized, __pyx_k_uninitialized, sizeof(__pyx_k_uninitialized), 0, 0, 1, 1}, ++ {&__pyx_n_s_unknown_format, __pyx_k_unknown_format, sizeof(__pyx_k_unknown_format), 0, 0, 1, 1}, ++ {&__pyx_n_s_unobserve_property, __pyx_k_unobserve_property, sizeof(__pyx_k_unobserve_property), 0, 0, 1, 1}, ++ {&__pyx_n_s_unsupported, __pyx_k_unsupported, sizeof(__pyx_k_unsupported), 0, 0, 1, 1}, ++ {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, ++ {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0}, ++ {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1}, ++ {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, ++ {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1}, ++ {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1}, ++ {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1}, ++ {&__pyx_n_s_vidcutter_libs_mpv, __pyx_k_vidcutter_libs_mpv, sizeof(__pyx_k_vidcutter_libs_mpv), 0, 0, 1, 1}, ++ {&__pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_k_vidcutter_libs_pympv_mpv_pyx, sizeof(__pyx_k_vidcutter_libs_pympv_mpv_pyx), 0, 0, 1, 0}, ++ {&__pyx_n_s_video_reconfig, __pyx_k_video_reconfig, sizeof(__pyx_k_video_reconfig), 0, 0, 1, 1}, ++ {&__pyx_n_s_vo_init_failed, __pyx_k_vo_init_failed, sizeof(__pyx_k_vo_init_failed), 0, 0, 1, 1}, ++ {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1}, ++ {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1}, ++ {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1}, ++ {&__pyx_n_s_wl_display, __pyx_k_wl_display, sizeof(__pyx_k_wl_display), 0, 0, 1, 1}, ++ {&__pyx_n_s_wrapped, __pyx_k_wrapped, sizeof(__pyx_k_wrapped), 0, 0, 1, 1}, ++ {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1}, ++ {&__pyx_n_s_x11_display, __pyx_k_x11_display, sizeof(__pyx_k_x11_display), 0, 0, 1, 1}, ++ {0, 0, 0, 0, 0, 0, 0} ++}; ++static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { ++ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 44, __pyx_L1_error) ++ __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 346, __pyx_L1_error) ++ __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(0, 58, __pyx_L1_error) ++ __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(0, 66, __pyx_L1_error) ++ __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 222, __pyx_L1_error) ++ __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 303, __pyx_L1_error) ++ __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 475, __pyx_L1_error) ++ __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) ++ return 0; ++ __pyx_L1_error:; ++ return -1; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":22 ++static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":319 + * +- * import cython +- * import sys, warnings # <<<<<<<<<<<<<< +- * from threading import Thread, Semaphore +- * from libc.stdlib cimport malloc, free ++ * def _errors(fn): ++ * def wrapped(*k, **kw): # <<<<<<<<<<<<<< ++ * v = fn(*k, **kw) ++ * if v < 0: + */ +- __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 22, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_Import(__pyx_n_s_warnings, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_1) < 0) __PYX_ERR(0, 22, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_tuple_ = PyTuple_Pack(3, __pyx_n_s_k, __pyx_n_s_kw, __pyx_n_s_v); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 319, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple_); ++ __Pyx_GIVEREF(__pyx_tuple_); ++ __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_wrapped, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 319, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":23 +- * import cython +- * import sys, warnings +- * from threading import Thread, Semaphore # <<<<<<<<<<<<<< +- * from libc.stdlib cimport malloc, free +- * from libc.string cimport strcpy, strlen, memset ++ /* "(tree fragment)":2 ++ * def __reduce_cython__(self): ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ +- __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_INCREF(__pyx_n_s_Thread); +- __Pyx_GIVEREF(__pyx_n_s_Thread); +- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Thread); +- __Pyx_INCREF(__pyx_n_s_Semaphore); +- __Pyx_GIVEREF(__pyx_n_s_Semaphore); +- PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_Semaphore); +- __pyx_t_2 = __Pyx_Import(__pyx_n_s_threading, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Thread, __pyx_t_1) < 0) __PYX_ERR(0, 23, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Semaphore, __pyx_t_1) < 0) __PYX_ERR(0, 23, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 2, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__3); ++ __Pyx_GIVEREF(__pyx_tuple__3); + +- /* "vidcutter/libs/pympv/mpv.pyx":30 +- * from client cimport * +- * +- * __version__ = "0.3.0" # <<<<<<<<<<<<<< +- * __author__ = "Andre D" +- * ++ /* "(tree fragment)":4 ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_s_0_3_0) < 0) __PYX_ERR(0, 30, __pyx_L1_error) ++ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 4, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__4); ++ __Pyx_GIVEREF(__pyx_tuple__4); + +- /* "vidcutter/libs/pympv/mpv.pyx":31 +- * +- * __version__ = "0.3.0" +- * __author__ = "Andre D" # <<<<<<<<<<<<<< +- * +- * _REQUIRED_CAPI_MAJOR = 1 ++ /* "(tree fragment)":2 ++ * def __reduce_cython__(self): ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") + */ +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Andre_D) < 0) __PYX_ERR(0, 31, __pyx_L1_error) ++ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_self_params_cannot_be_converted); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 2, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__5); ++ __Pyx_GIVEREF(__pyx_tuple__5); + +- /* "vidcutter/libs/pympv/mpv.pyx":33 +- * __author__ = "Andre D" +- * +- * _REQUIRED_CAPI_MAJOR = 1 # <<<<<<<<<<<<<< +- * _MIN_CAPI_MINOR = 9 +- * ++ /* "(tree fragment)":4 ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_int_1) < 0) __PYX_ERR(0, 33, __pyx_L1_error) ++ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_self_params_cannot_be_converted); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 4, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__6); ++ __Pyx_GIVEREF(__pyx_tuple__6); + +- /* "vidcutter/libs/pympv/mpv.pyx":34 +- * +- * _REQUIRED_CAPI_MAJOR = 1 +- * _MIN_CAPI_MINOR = 9 # <<<<<<<<<<<<<< +- * +- * cdef unsigned long _CAPI_VERSION ++ /* "vidcutter/libs/pympv/mpv.pyx":992 ++ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) ++ * if drm_display: ++ * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) ++ * drm_params.connector_id = drm_display.get("connector_id", -1) + */ +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MIN_CAPI_MINOR, __pyx_int_9) < 0) __PYX_ERR(0, 34, __pyx_L1_error) ++ __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 992, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__7); ++ __Pyx_GIVEREF(__pyx_tuple__7); + +- /* "vidcutter/libs/pympv/mpv.pyx":37 +- * +- * cdef unsigned long _CAPI_VERSION +- * with nogil: # <<<<<<<<<<<<<< +- * _CAPI_VERSION = mpv_client_api_version() +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":993 ++ * if drm_display: ++ * drm_params.fd = drm_display.get("fd", -1) ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< ++ * drm_params.connector_id = drm_display.get("connector_id", -1) ++ * arp = drm_display.get("atomic_request_ptr", None) + */ +- { +- #ifdef WITH_THREAD +- PyThreadState *_save; +- Py_UNBLOCK_THREADS +- __Pyx_FastGIL_Remember(); +- #endif +- /*try:*/ { ++ __pyx_tuple__8 = PyTuple_Pack(2, __pyx_n_s_crtc_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 993, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__8); ++ __Pyx_GIVEREF(__pyx_tuple__8); + +- /* "vidcutter/libs/pympv/mpv.pyx":38 +- * cdef unsigned long _CAPI_VERSION +- * with nogil: +- * _CAPI_VERSION = mpv_client_api_version() # <<<<<<<<<<<<<< +- * +- * _CAPI_MAJOR = _CAPI_VERSION >> 16 ++ /* "vidcutter/libs/pympv/mpv.pyx":994 ++ * drm_params.fd = drm_display.get("fd", -1) ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) ++ * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< ++ * arp = drm_display.get("atomic_request_ptr", None) ++ * if arp is not None: + */ +- __pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION = mpv_client_api_version(); +- } ++ __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_s_connector_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 994, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__9); ++ __Pyx_GIVEREF(__pyx_tuple__9); + +- /* "vidcutter/libs/pympv/mpv.pyx":37 +- * +- * cdef unsigned long _CAPI_VERSION +- * with nogil: # <<<<<<<<<<<<<< +- * _CAPI_VERSION = mpv_client_api_version() +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":995 ++ * drm_params.crtc_id = drm_display.get("crtc_id", -1) ++ * drm_params.connector_id = drm_display.get("connector_id", -1) ++ * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< ++ * if arp is not None: ++ * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") + */ +- /*finally:*/ { +- /*normal exit:*/{ +- #ifdef WITH_THREAD +- __Pyx_FastGIL_Forget(); +- Py_BLOCK_THREADS +- #endif +- goto __pyx_L4; +- } +- __pyx_L4:; +- } +- } ++ __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_atomic_request_ptr, Py_None); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 995, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__10); ++ __Pyx_GIVEREF(__pyx_tuple__10); + +- /* "vidcutter/libs/pympv/mpv.pyx":40 +- * _CAPI_VERSION = mpv_client_api_version() +- * +- * _CAPI_MAJOR = _CAPI_VERSION >> 16 # <<<<<<<<<<<<<< +- * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":998 ++ * if arp is not None: ++ * 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: + */ +- __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION >> 16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MAJOR, __pyx_t_2) < 0) __PYX_ERR(0, 40, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_render_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 998, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__11); ++ __Pyx_GIVEREF(__pyx_tuple__11); + +- /* "vidcutter/libs/pympv/mpv.pyx":41 +- * +- * _CAPI_MAJOR = _CAPI_VERSION >> 16 +- * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF # <<<<<<<<<<<<<< +- * +- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: ++ /* "vidcutter/libs/pympv/mpv.pyx":1083 ++ * if opengl_fbo: ++ * memset(&fbo, 0, sizeof(fbo)) ++ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< ++ * fbo.w = opengl_fbo["w"] ++ * fbo.h = opengl_fbo["h"] + */ +- __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION & 0xFFFF)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MINOR, __pyx_t_2) < 0) __PYX_ERR(0, 41, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_fbo, __pyx_int_0); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1083, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__12); ++ __Pyx_GIVEREF(__pyx_tuple__12); + +- /* "vidcutter/libs/pympv/mpv.pyx":43 +- * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF +- * +- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< +- * raise ImportError( +- * "libmpv version is incorrect. Required %d.%d got %d.%d." % +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (!__pyx_t_5) { +- } else { +- __pyx_t_3 = __pyx_t_5; +- goto __pyx_L6_bool_binop_done; +- } +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_3 = __pyx_t_5; +- __pyx_L6_bool_binop_done:; +- if (unlikely(__pyx_t_3)) { ++ /* "vidcutter/libs/pympv/mpv.pyx":1086 ++ * fbo.w = opengl_fbo["w"] ++ * fbo.h = opengl_fbo["h"] ++ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< ++ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) ++ * if flip_y: ++ */ ++ __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_internal_format, __pyx_int_0); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 1086, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__13); ++ __Pyx_GIVEREF(__pyx_tuple__13); + +- /* "vidcutter/libs/pympv/mpv.pyx":46 +- * raise ImportError( +- * "libmpv version is incorrect. Required %d.%d got %d.%d." % +- * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) # <<<<<<<<<<<<<< +- * ) +- * ++ /* "(tree fragment)":2 ++ * def __reduce_cython__(self): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_2); +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 46, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 46, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_GIVEREF(__pyx_t_2); +- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); +- __Pyx_GIVEREF(__pyx_t_1); +- PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1); +- __Pyx_GIVEREF(__pyx_t_4); +- PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_4); +- __Pyx_GIVEREF(__pyx_t_6); +- PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6); +- __pyx_t_2 = 0; +- __pyx_t_1 = 0; +- __pyx_t_4 = 0; +- __pyx_t_6 = 0; ++ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 2, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__14); ++ __Pyx_GIVEREF(__pyx_tuple__14); + +- /* "vidcutter/libs/pympv/mpv.pyx":45 +- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: +- * raise ImportError( +- * "libmpv version is incorrect. Required %d.%d got %d.%d." % # <<<<<<<<<<<<<< +- * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) +- * ) ++ /* "(tree fragment)":4 ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ +- __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 45, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 4, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__15); ++ __Pyx_GIVEREF(__pyx_tuple__15); + +- /* "vidcutter/libs/pympv/mpv.pyx":44 +- * +- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: +- * raise ImportError( # <<<<<<<<<<<<<< +- * "libmpv version is incorrect. Required %d.%d got %d.%d." % +- * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) ++ /* "(tree fragment)":2 ++ * def __reduce_cython__(self): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") + */ +- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ImportError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 44, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_Raise(__pyx_t_7, 0, 0, 0); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __PYX_ERR(0, 44, __pyx_L1_error) ++ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 2, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__16); ++ __Pyx_GIVEREF(__pyx_tuple__16); + +- /* "vidcutter/libs/pympv/mpv.pyx":43 +- * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF +- * +- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< +- * raise ImportError( +- * "libmpv version is incorrect. Required %d.%d got %d.%d." % ++ /* "(tree fragment)":4 ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") ++ * def __setstate_cython__(self, __pyx_state): ++ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ +- } ++ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 4, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__17); ++ __Pyx_GIVEREF(__pyx_tuple__17); + + /* "vidcutter/libs/pympv/mpv.pyx":52 +- * void PyEval_InitThreads() ++ * void Py_Initialize() + * + * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< + * _strdec_err = "surrogateescape" if _is_py3 else "strict" + * # mpv -> Python + */ +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_version_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 52, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_tuple__21, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_py3, __pyx_t_7) < 0) __PYX_ERR(0, 52, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":53 +- * +- * _is_py3 = sys.version_info >= (3,) +- * _strdec_err = "surrogateescape" if _is_py3 else "strict" # <<<<<<<<<<<<<< +- * # mpv -> Python +- * def _strdec(s): +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_py3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (__pyx_t_3) { +- __Pyx_INCREF(__pyx_n_s_surrogateescape); +- __pyx_t_7 = __pyx_n_s_surrogateescape; +- } else { +- __Pyx_INCREF(__pyx_n_s_strict); +- __pyx_t_7 = __pyx_n_s_strict; +- } +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec_err, __pyx_t_7) < 0) __PYX_ERR(0, 53, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 52, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__18); ++ __Pyx_GIVEREF(__pyx_tuple__18); + + /* "vidcutter/libs/pympv/mpv.pyx":55 + * _strdec_err = "surrogateescape" if _is_py3 else "strict" +@@ -28564,10 +24644,10 @@ if (!__Pyx_RefNanny) { + * try: + * return s.decode("utf-8", _strdec_err) + */ +- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_1_strdec, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 55, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec, __pyx_t_7) < 0) __PYX_ERR(0, 55, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 55, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__19); ++ __Pyx_GIVEREF(__pyx_tuple__19); ++ __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strdec, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 55, __pyx_L1_error) + + /* "vidcutter/libs/pympv/mpv.pyx":63 + * +@@ -28576,5040 +24656,5555 @@ if (!__Pyx_RefNanny) { + * try: + * return s.encode("utf-8", _strdec_err) + */ +- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_3_strenc, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strenc, __pyx_t_7) < 0) __PYX_ERR(0, 63, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 63, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__21); ++ __Pyx_GIVEREF(__pyx_tuple__21); ++ __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strenc, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 63, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":70 +- * return s ++ /* "vidcutter/libs/pympv/mpv.pyx":318 + * +- * PyEval_InitThreads() # <<<<<<<<<<<<<< + * +- * class Errors: ++ * def _errors(fn): # <<<<<<<<<<<<<< ++ * def wrapped(*k, **kw): ++ * v = fn(*k, **kw) + */ +- PyEval_InitThreads(); ++ __pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_fn, __pyx_n_s_wrapped, __pyx_n_s_wrapped); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 318, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__23); ++ __Pyx_GIVEREF(__pyx_tuple__23); ++ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_errors, 318, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 318, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":72 +- * PyEval_InitThreads() ++ /* "vidcutter/libs/pympv/mpv.pyx":329 ++ * code = None + * +- * class Errors: # <<<<<<<<<<<<<< +- * """Set of known error codes from MpvError and Event responses. ++ * def __init__(self, e): # <<<<<<<<<<<<<< ++ * self.code = e ++ * cdef const char* err_c ++ */ ++ __pyx_tuple__25 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_e, __pyx_n_s_err_c, __pyx_n_s_e_i); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 329, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__25); ++ __Pyx_GIVEREF(__pyx_tuple__25); ++ __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 329, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":346 ++ * cdef _reply_userdatas = dict() + * ++ * class _ReplyUserData(object): # <<<<<<<<<<<<<< ++ * def __init__(self, data): ++ * self.counter = 0 + */ +- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Errors, __pyx_n_s_Errors, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_error_codes_from_Mp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 72, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 346, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__27); ++ __Pyx_GIVEREF(__pyx_tuple__27); + +- /* "vidcutter/libs/pympv/mpv.pyx":79 +- * You should handle the possibility that error codes may not be any of these values. +- * """ +- * success = MPV_ERROR_SUCCESS # <<<<<<<<<<<<<< +- * queue_full = MPV_ERROR_EVENT_QUEUE_FULL +- * nomem = MPV_ERROR_NOMEM ++ /* "vidcutter/libs/pympv/mpv.pyx":347 ++ * ++ * class _ReplyUserData(object): ++ * def __init__(self, data): # <<<<<<<<<<<<<< ++ * self.counter = 0 ++ * self.data = data + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_SUCCESS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_success, __pyx_t_6) < 0) __PYX_ERR(0, 79, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 347, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__28); ++ __Pyx_GIVEREF(__pyx_tuple__28); ++ __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 347, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":80 +- * """ +- * success = MPV_ERROR_SUCCESS +- * queue_full = MPV_ERROR_EVENT_QUEUE_FULL # <<<<<<<<<<<<<< +- * nomem = MPV_ERROR_NOMEM +- * uninitialized = MPV_ERROR_UNINITIALIZED ++ /* "vidcutter/libs/pympv/mpv.pyx":352 ++ * self.observed = False ++ * ++ * def add(self): # <<<<<<<<<<<<<< ++ * self.counter += 1 ++ * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_EVENT_QUEUE_FULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_full, __pyx_t_6) < 0) __PYX_ERR(0, 80, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 352, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__30); ++ __Pyx_GIVEREF(__pyx_tuple__30); ++ __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_add, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 352, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":81 +- * success = MPV_ERROR_SUCCESS +- * queue_full = MPV_ERROR_EVENT_QUEUE_FULL +- * nomem = MPV_ERROR_NOMEM # <<<<<<<<<<<<<< +- * uninitialized = MPV_ERROR_UNINITIALIZED +- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER ++ /* "vidcutter/libs/pympv/mpv.pyx":355 ++ * self.counter += 1 ++ * ++ * def remove(self): # <<<<<<<<<<<<<< ++ * self.counter -= 1 ++ * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOMEM); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nomem, __pyx_t_6) < 0) __PYX_ERR(0, 81, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 355, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__32); ++ __Pyx_GIVEREF(__pyx_tuple__32); ++ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_remove, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 355, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":82 +- * queue_full = MPV_ERROR_EVENT_QUEUE_FULL +- * nomem = MPV_ERROR_NOMEM +- * uninitialized = MPV_ERROR_UNINITIALIZED # <<<<<<<<<<<<<< +- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER +- * not_found = MPV_ERROR_OPTION_NOT_FOUND ++ /* "vidcutter/libs/pympv/mpv.pyx":1133 ++ * ++ * class CallbackThread(Thread): ++ * def __init__(self): # <<<<<<<<<<<<<< ++ * Thread.__init__(self) ++ * self.daemon = True + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNINITIALIZED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_uninitialized, __pyx_t_6) < 0) __PYX_ERR(0, 82, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1133, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__34); ++ __Pyx_GIVEREF(__pyx_tuple__34); ++ __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 1133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1133, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":83 +- * nomem = MPV_ERROR_NOMEM +- * uninitialized = MPV_ERROR_UNINITIALIZED +- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER # <<<<<<<<<<<<<< +- * not_found = MPV_ERROR_OPTION_NOT_FOUND +- * option_format = MPV_ERROR_OPTION_FORMAT ++ /* "vidcutter/libs/pympv/mpv.pyx":1141 ++ * self.isshutdown = False ++ * ++ * def shutdown(self): # <<<<<<<<<<<<<< ++ * self.isshutdown = True ++ * self.callback = None + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_INVALID_PARAMETER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_parameter, __pyx_t_6) < 0) __PYX_ERR(0, 83, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1141, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__36); ++ __Pyx_GIVEREF(__pyx_tuple__36); ++ __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_shutdown, 1141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1141, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":84 +- * uninitialized = MPV_ERROR_UNINITIALIZED +- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER +- * not_found = MPV_ERROR_OPTION_NOT_FOUND # <<<<<<<<<<<<<< +- * option_format = MPV_ERROR_OPTION_FORMAT +- * option_error = MPV_ERROR_OPTION_ERROR ++ /* "vidcutter/libs/pympv/mpv.pyx":1146 ++ * self.lock.release() ++ * ++ * def call(self): # <<<<<<<<<<<<<< ++ * self.lock.release() ++ * ++ */ ++ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1146, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__38); ++ __Pyx_GIVEREF(__pyx_tuple__38); ++ __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_call, 1146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1146, __pyx_L1_error) ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1149 ++ * self.lock.release() ++ * ++ * def set(self, callback): # <<<<<<<<<<<<<< ++ * self.callback = callback ++ * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 84, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 1149, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__40); ++ __Pyx_GIVEREF(__pyx_tuple__40); ++ __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_set, 1149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 1149, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":85 +- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER +- * not_found = MPV_ERROR_OPTION_NOT_FOUND +- * option_format = MPV_ERROR_OPTION_FORMAT # <<<<<<<<<<<<<< +- * option_error = MPV_ERROR_OPTION_ERROR +- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND ++ /* "vidcutter/libs/pympv/mpv.pyx":1152 ++ * self.callback = callback ++ * ++ * def run(self): # <<<<<<<<<<<<<< ++ * while not self.isshutdown: ++ * self.lock.acquire(True) + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_format, __pyx_t_6) < 0) __PYX_ERR(0, 85, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1152, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__42); ++ __Pyx_GIVEREF(__pyx_tuple__42); ++ __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_run, 1152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 1152, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":86 +- * not_found = MPV_ERROR_OPTION_NOT_FOUND +- * option_format = MPV_ERROR_OPTION_FORMAT +- * option_error = MPV_ERROR_OPTION_ERROR # <<<<<<<<<<<<<< +- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND +- * property_format = MPV_ERROR_PROPERTY_FORMAT ++ /* "vidcutter/libs/pympv/mpv.pyx":1157 ++ * self.mpv_callback(self.callback) if self.callback else None ++ * ++ * def mpv_callback(self, callback): # <<<<<<<<<<<<<< ++ * try: ++ * callback() + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_error, __pyx_t_6) < 0) __PYX_ERR(0, 86, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_tuple__44 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_callback, __pyx_n_s_e); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1157, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__44); ++ __Pyx_GIVEREF(__pyx_tuple__44); ++ __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_mpv_callback, 1157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 1157, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":87 +- * option_format = MPV_ERROR_OPTION_FORMAT +- * option_error = MPV_ERROR_OPTION_ERROR +- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND # <<<<<<<<<<<<<< +- * property_format = MPV_ERROR_PROPERTY_FORMAT +- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE ++ /* "(tree fragment)":1 ++ * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 87, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_tuple__46 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__46); ++ __Pyx_GIVEREF(__pyx_tuple__46); ++ __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_EndOfFileReached, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __pyx_tuple__48 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__48); ++ __Pyx_GIVEREF(__pyx_tuple__48); ++ __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_LogMessage, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __pyx_tuple__50 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__50); ++ __Pyx_GIVEREF(__pyx_tuple__50); ++ __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Property, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __pyx_tuple__52 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__52); ++ __Pyx_GIVEREF(__pyx_tuple__52); ++ __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Event, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __pyx_tuple__54 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_tuple__54); ++ __Pyx_GIVEREF(__pyx_tuple__54); ++ __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_RenderFrameInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_RefNannyFinishContext(); ++ return 0; ++ __pyx_L1_error:; ++ __Pyx_RefNannyFinishContext(); ++ return -1; ++} ++ ++static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { ++ if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); ++ __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_32 = PyInt_FromLong(32); if (unlikely(!__pyx_int_32)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_5713169 = PyInt_FromLong(5713169L); if (unlikely(!__pyx_int_5713169)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_90958262 = PyInt_FromLong(90958262L); if (unlikely(!__pyx_int_90958262)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_142036910 = PyInt_FromLong(142036910L); if (unlikely(!__pyx_int_142036910)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_222419149 = PyInt_FromLong(222419149L); if (unlikely(!__pyx_int_222419149)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_228822053 = PyInt_FromLong(228822053L); if (unlikely(!__pyx_int_228822053)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) ++ return 0; ++ __pyx_L1_error:; ++ return -1; ++} ++ ++static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ ++static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ ++static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ ++static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ ++static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ ++static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ ++static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ ++ ++static int __Pyx_modinit_global_init_code(void) { ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); ++ /*--- Global init code ---*/ ++ __pyx_v_9vidcutter_4libs_3mpv__callbacks = Py_None; Py_INCREF(Py_None); ++ __pyx_v_9vidcutter_4libs_3mpv__reply_userdatas = Py_None; Py_INCREF(Py_None); ++ __Pyx_RefNannyFinishContext(); ++ return 0; ++} ++ ++static int __Pyx_modinit_variable_export_code(void) { ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); ++ /*--- Variable export code ---*/ ++ __Pyx_RefNannyFinishContext(); ++ return 0; ++} ++ ++static int __Pyx_modinit_function_export_code(void) { ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); ++ /*--- Function export code ---*/ ++ __Pyx_RefNannyFinishContext(); ++ return 0; ++} ++ ++static int __Pyx_modinit_type_init_code(void) { ++ __Pyx_RefNannyDeclarations ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); ++ /*--- Type init code ---*/ ++ __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; ++ __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *, struct mpv_event_end_file *))__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro = __Pyx_PyObject_GenericGetAttr; ++ } ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_EndOfFileReached, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) ++ __pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached; ++ __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage = &__pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; ++ __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *, struct mpv_event_log_message *))__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro = __Pyx_PyObject_GenericGetAttr; ++ } ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LogMessage, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) ++ __pyx_ptype_9vidcutter_4libs_3mpv_LogMessage = &__pyx_type_9vidcutter_4libs_3mpv_LogMessage; ++ __pyx_vtabptr_9vidcutter_4libs_3mpv_Property = &__pyx_vtable_9vidcutter_4libs_3mpv_Property; ++ __pyx_vtable_9vidcutter_4libs_3mpv_Property._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *, struct mpv_event_property *))__pyx_f_9vidcutter_4libs_3mpv_8Property__init; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv_Property.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro = __Pyx_PyObject_GenericGetAttr; ++ } ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Property, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) ++ __pyx_ptype_9vidcutter_4libs_3mpv_Property = &__pyx_type_9vidcutter_4libs_3mpv_Property; ++ __pyx_vtabptr_9vidcutter_4libs_3mpv_Event = &__pyx_vtable_9vidcutter_4libs_3mpv_Event; ++ __pyx_vtable_9vidcutter_4libs_3mpv_Event._data = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *))__pyx_f_9vidcutter_4libs_3mpv_5Event__data; ++ __pyx_vtable_9vidcutter_4libs_3mpv_Event._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_5Event__init; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv_Event.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro = __Pyx_PyObject_GenericGetAttr; ++ } ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Event, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) ++ __pyx_ptype_9vidcutter_4libs_3mpv_Event = &__pyx_type_9vidcutter_4libs_3mpv_Event; ++ __pyx_vtabptr_9vidcutter_4libs_3mpv_Context = &__pyx_vtable_9vidcutter_4libs_3mpv_Context; ++ __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_list = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list; ++ __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_map = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map; ++ __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_native_value = (struct mpv_node (*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value; ++ __pyx_vtable_9vidcutter_4libs_3mpv_Context._free_native_value = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, struct mpv_node))__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv_Context.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro = __Pyx_PyObject_GenericGetAttr; ++ } ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Context, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) ++ __pyx_ptype_9vidcutter_4libs_3mpv_Context = &__pyx_type_9vidcutter_4libs_3mpv_Context; ++ __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams = &__pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; ++ __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_voidp = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, void *, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp; ++ __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_int = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, int))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int; ++ __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_string = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, char *))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro = __Pyx_PyObject_GenericGetAttr; ++ } ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderParams, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) ++ __pyx_ptype_9vidcutter_4libs_3mpv__RenderParams = &__pyx_type_9vidcutter_4libs_3mpv__RenderParams; ++ __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; ++ __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo._from_struct = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *, struct mpv_render_frame_info *))__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro = __Pyx_PyObject_GenericGetAttr; ++ } ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) ++ __pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; ++ } ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) ++ __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext = &__pyx_type_9vidcutter_4libs_3mpv_RenderContext; ++ __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_base = __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; ++ } ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLRenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) ++ __pyx_ptype_9vidcutter_4libs_3mpv_OpenGLRenderContext = &__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext; ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors) < 0) __PYX_ERR(0, 318, __pyx_L1_error) ++ #if PY_VERSION_HEX < 0x030800B1 ++ __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_print = 0; ++ #endif ++ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_getattro == PyObject_GenericGetAttr)) { ++ __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; ++ } ++ __pyx_ptype_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = &__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors; ++ __Pyx_RefNannyFinishContext(); ++ return 0; ++ __pyx_L1_error:; ++ __Pyx_RefNannyFinishContext(); ++ return -1; ++} ++ ++static int __Pyx_modinit_type_import_code(void) { ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); ++ /*--- Type import code ---*/ ++ __Pyx_RefNannyFinishContext(); ++ return 0; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":88 +- * option_error = MPV_ERROR_OPTION_ERROR +- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND +- * property_format = MPV_ERROR_PROPERTY_FORMAT # <<<<<<<<<<<<<< +- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE +- * property_error = MPV_ERROR_PROPERTY_ERROR +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 88, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_format, __pyx_t_6) < 0) __PYX_ERR(0, 88, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++static int __Pyx_modinit_variable_import_code(void) { ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); ++ /*--- Variable import code ---*/ ++ __Pyx_RefNannyFinishContext(); ++ return 0; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":89 +- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND +- * property_format = MPV_ERROR_PROPERTY_FORMAT +- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE # <<<<<<<<<<<<<< +- * property_error = MPV_ERROR_PROPERTY_ERROR +- * command_error = MPV_ERROR_COMMAND +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_UNAVAILABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_unavailable, __pyx_t_6) < 0) __PYX_ERR(0, 89, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++static int __Pyx_modinit_function_import_code(void) { ++ __Pyx_RefNannyDeclarations ++ __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); ++ /*--- Function import code ---*/ ++ __Pyx_RefNannyFinishContext(); ++ return 0; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":90 +- * property_format = MPV_ERROR_PROPERTY_FORMAT +- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE +- * property_error = MPV_ERROR_PROPERTY_ERROR # <<<<<<<<<<<<<< +- * command_error = MPV_ERROR_COMMAND +- * loading_failed = MPV_ERROR_LOADING_FAILED +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_error, __pyx_t_6) < 0) __PYX_ERR(0, 90, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":91 +- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE +- * property_error = MPV_ERROR_PROPERTY_ERROR +- * command_error = MPV_ERROR_COMMAND # <<<<<<<<<<<<<< +- * loading_failed = MPV_ERROR_LOADING_FAILED +- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_COMMAND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_error, __pyx_t_6) < 0) __PYX_ERR(0, 91, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++#ifndef CYTHON_NO_PYINIT_EXPORT ++#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC ++#elif PY_MAJOR_VERSION < 3 ++#ifdef __cplusplus ++#define __Pyx_PyMODINIT_FUNC extern "C" void ++#else ++#define __Pyx_PyMODINIT_FUNC void ++#endif ++#else ++#ifdef __cplusplus ++#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * ++#else ++#define __Pyx_PyMODINIT_FUNC PyObject * ++#endif ++#endif + +- /* "vidcutter/libs/pympv/mpv.pyx":92 +- * property_error = MPV_ERROR_PROPERTY_ERROR +- * command_error = MPV_ERROR_COMMAND +- * loading_failed = MPV_ERROR_LOADING_FAILED # <<<<<<<<<<<<<< +- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED +- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_LOADING_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 92, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_loading_failed, __pyx_t_6) < 0) __PYX_ERR(0, 92, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":93 +- * command_error = MPV_ERROR_COMMAND +- * loading_failed = MPV_ERROR_LOADING_FAILED +- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED # <<<<<<<<<<<<<< +- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED +- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_AO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ao_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 93, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++#if PY_MAJOR_VERSION < 3 ++__Pyx_PyMODINIT_FUNC initmpv(void) CYTHON_SMALL_CODE; /*proto*/ ++__Pyx_PyMODINIT_FUNC initmpv(void) ++#else ++__Pyx_PyMODINIT_FUNC PyInit_mpv(void) CYTHON_SMALL_CODE; /*proto*/ ++__Pyx_PyMODINIT_FUNC PyInit_mpv(void) ++#if CYTHON_PEP489_MULTI_PHASE_INIT ++{ ++ return PyModuleDef_Init(&__pyx_moduledef); ++} ++static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { ++ #if PY_VERSION_HEX >= 0x030700A1 ++ static PY_INT64_T main_interpreter_id = -1; ++ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); ++ if (main_interpreter_id == -1) { ++ main_interpreter_id = current_id; ++ return (unlikely(current_id == -1)) ? -1 : 0; ++ } else if (unlikely(main_interpreter_id != current_id)) ++ #else ++ static PyInterpreterState *main_interpreter = NULL; ++ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; ++ if (!main_interpreter) { ++ main_interpreter = current_interpreter; ++ } else if (unlikely(main_interpreter != current_interpreter)) ++ #endif ++ { ++ PyErr_SetString( ++ PyExc_ImportError, ++ "Interpreter change detected - this module can only be loaded into one interpreter per process."); ++ return -1; ++ } ++ return 0; ++} ++static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { ++ PyObject *value = PyObject_GetAttrString(spec, from_name); ++ int result = 0; ++ if (likely(value)) { ++ if (allow_none || value != Py_None) { ++ result = PyDict_SetItemString(moddict, to_name, value); ++ } ++ Py_DECREF(value); ++ } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { ++ PyErr_Clear(); ++ } else { ++ result = -1; ++ } ++ return result; ++} ++static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { ++ PyObject *module = NULL, *moddict, *modname; ++ if (__Pyx_check_single_interpreter()) ++ return NULL; ++ if (__pyx_m) ++ return __Pyx_NewRef(__pyx_m); ++ modname = PyObject_GetAttrString(spec, "name"); ++ if (unlikely(!modname)) goto bad; ++ module = PyModule_NewObject(modname); ++ Py_DECREF(modname); ++ if (unlikely(!module)) goto bad; ++ moddict = PyModule_GetDict(module); ++ if (unlikely(!moddict)) goto bad; ++ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; ++ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; ++ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; ++ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; ++ return module; ++bad: ++ Py_XDECREF(module); ++ return NULL; ++} + +- /* "vidcutter/libs/pympv/mpv.pyx":94 +- * loading_failed = MPV_ERROR_LOADING_FAILED +- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED +- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED # <<<<<<<<<<<<<< +- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY +- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_VO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_vo_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 94, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":95 +- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED +- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED +- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY # <<<<<<<<<<<<<< +- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT +- * unsupported = MPV_ERROR_UNSUPPORTED ++static CYTHON_SMALL_CODE int __pyx_pymod_exec_mpv(PyObject *__pyx_pyinit_module) ++#endif ++#endif ++{ ++ PyObject *__pyx_t_1 = NULL; ++ PyObject *__pyx_t_2 = NULL; ++ int __pyx_t_3; ++ PyObject *__pyx_t_4 = NULL; ++ int __pyx_t_5; ++ PyObject *__pyx_t_6 = NULL; ++ PyObject *__pyx_t_7 = NULL; ++ int __pyx_lineno = 0; ++ const char *__pyx_filename = NULL; ++ int __pyx_clineno = 0; ++ __Pyx_RefNannyDeclarations ++ #if CYTHON_PEP489_MULTI_PHASE_INIT ++ if (__pyx_m) { ++ if (__pyx_m == __pyx_pyinit_module) return 0; ++ PyErr_SetString(PyExc_RuntimeError, "Module 'mpv' has already been imported. Re-initialisation is not supported."); ++ return -1; ++ } ++ #elif PY_MAJOR_VERSION >= 3 ++ if (__pyx_m) return __Pyx_NewRef(__pyx_m); ++ #endif ++ #if CYTHON_REFNANNY ++__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); ++if (!__Pyx_RefNanny) { ++ PyErr_Clear(); ++ __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); ++ if (!__Pyx_RefNanny) ++ Py_FatalError("failed to import 'refnanny' module"); ++} ++#endif ++ __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_mpv(void)", 0); ++ if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #ifdef __Pxy_PyFrame_Initialize_Offsets ++ __Pxy_PyFrame_Initialize_Offsets(); ++ #endif ++ __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) ++ #ifdef __Pyx_CyFunction_USED ++ if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #endif ++ #ifdef __Pyx_FusedFunction_USED ++ if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #endif ++ #ifdef __Pyx_Coroutine_USED ++ if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #endif ++ #ifdef __Pyx_Generator_USED ++ if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #endif ++ #ifdef __Pyx_AsyncGen_USED ++ if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #endif ++ #ifdef __Pyx_StopAsyncIteration_USED ++ if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #endif ++ /*--- Library function declarations ---*/ ++ /*--- Threads initialization code ---*/ ++ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS ++ PyEval_InitThreads(); ++ #endif ++ /*--- Module creation code ---*/ ++ #if CYTHON_PEP489_MULTI_PHASE_INIT ++ __pyx_m = __pyx_pyinit_module; ++ Py_INCREF(__pyx_m); ++ #else ++ #if PY_MAJOR_VERSION < 3 ++ __pyx_m = Py_InitModule4("mpv", __pyx_methods, __pyx_k_pympv_Python_wrapper_for_libmpv, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); ++ #else ++ __pyx_m = PyModule_Create(&__pyx_moduledef); ++ #endif ++ if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) ++ #endif ++ __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) ++ Py_INCREF(__pyx_d); ++ __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) ++ Py_INCREF(__pyx_b); ++ __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) ++ Py_INCREF(__pyx_cython_runtime); ++ if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); ++ /*--- Initialize various global constants etc. ---*/ ++ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) ++ if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #endif ++ if (__pyx_module_is_main_vidcutter__libs__mpv) { ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ } ++ #if PY_MAJOR_VERSION >= 3 ++ { ++ PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) ++ if (!PyDict_GetItemString(modules, "vidcutter.libs.mpv")) { ++ if (unlikely(PyDict_SetItemString(modules, "vidcutter.libs.mpv", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) ++ } ++ } ++ #endif ++ /*--- Builtin init code ---*/ ++ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ /*--- Constants init code ---*/ ++ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ /*--- Global type/function init code ---*/ ++ (void)__Pyx_modinit_global_init_code(); ++ (void)__Pyx_modinit_variable_export_code(); ++ (void)__Pyx_modinit_function_export_code(); ++ if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) ++ (void)__Pyx_modinit_type_import_code(); ++ (void)__Pyx_modinit_variable_import_code(); ++ (void)__Pyx_modinit_function_import_code(); ++ /*--- Execution code ---*/ ++ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) ++ if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ #endif ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":22 ++ * ++ * import cython ++ * import sys, warnings # <<<<<<<<<<<<<< ++ * from threading import Thread, Semaphore ++ * from libc.stdlib cimport malloc, free + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOTHING_TO_PLAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nothing_to_play, __pyx_t_6) < 0) __PYX_ERR(0, 95, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 22, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_1 = __Pyx_Import(__pyx_n_s_warnings, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_1) < 0) __PYX_ERR(0, 22, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":96 +- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED +- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY +- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT # <<<<<<<<<<<<<< +- * unsupported = MPV_ERROR_UNSUPPORTED +- * not_implemented = MPV_ERROR_NOT_IMPLEMENTED ++ /* "vidcutter/libs/pympv/mpv.pyx":23 ++ * import cython ++ * import sys, warnings ++ * from threading import Thread, Semaphore # <<<<<<<<<<<<<< ++ * from libc.stdlib cimport malloc, free ++ * from libc.string cimport strcpy, strlen, memset + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNKNOWN_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 96, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unknown_format, __pyx_t_6) < 0) __PYX_ERR(0, 96, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_INCREF(__pyx_n_s_Thread); ++ __Pyx_GIVEREF(__pyx_n_s_Thread); ++ PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Thread); ++ __Pyx_INCREF(__pyx_n_s_Semaphore); ++ __Pyx_GIVEREF(__pyx_n_s_Semaphore); ++ PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_Semaphore); ++ __pyx_t_2 = __Pyx_Import(__pyx_n_s_threading, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Thread, __pyx_t_1) < 0) __PYX_ERR(0, 23, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Semaphore, __pyx_t_1) < 0) __PYX_ERR(0, 23, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":97 +- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY +- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT +- * unsupported = MPV_ERROR_UNSUPPORTED # <<<<<<<<<<<<<< +- * not_implemented = MPV_ERROR_NOT_IMPLEMENTED ++ /* "vidcutter/libs/pympv/mpv.pyx":30 ++ * from client cimport * ++ * ++ * __version__ = "0.3.0" # <<<<<<<<<<<<<< ++ * __author__ = "Andre D" + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNSUPPORTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unsupported, __pyx_t_6) < 0) __PYX_ERR(0, 97, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_s_0_3_0) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":98 +- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT +- * unsupported = MPV_ERROR_UNSUPPORTED +- * not_implemented = MPV_ERROR_NOT_IMPLEMENTED # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":31 + * ++ * __version__ = "0.3.0" ++ * __author__ = "Andre D" # <<<<<<<<<<<<<< + * ++ * _REQUIRED_CAPI_MAJOR = 2 + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOT_IMPLEMENTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_implemented, __pyx_t_6) < 0) __PYX_ERR(0, 98, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Andre_D) < 0) __PYX_ERR(0, 31, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":72 +- * PyEval_InitThreads() ++ /* "vidcutter/libs/pympv/mpv.pyx":33 ++ * __author__ = "Andre D" + * +- * class Errors: # <<<<<<<<<<<<<< +- * """Set of known error codes from MpvError and Event responses. ++ * _REQUIRED_CAPI_MAJOR = 2 # <<<<<<<<<<<<<< ++ * _MIN_CAPI_MINOR = 0 + * + */ +- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Errors, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Errors, __pyx_t_6) < 0) __PYX_ERR(0, 72, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_int_2) < 0) __PYX_ERR(0, 33, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":101 +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":34 + * +- * class Events: # <<<<<<<<<<<<<< +- * """Set of known values for Event ids. ++ * _REQUIRED_CAPI_MAJOR = 2 ++ * _MIN_CAPI_MINOR = 0 # <<<<<<<<<<<<<< + * ++ * cdef unsigned long _CAPI_VERSION + */ +- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Events, __pyx_n_s_Events, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_values_for_Event_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 101, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- +- /* "vidcutter/libs/pympv/mpv.pyx":108 +- * You should handle the possibility that event ids may not be any of these values. +- * """ +- * none = MPV_EVENT_NONE # <<<<<<<<<<<<<< +- * shutdown = MPV_EVENT_SHUTDOWN +- * log_message = MPV_EVENT_LOG_MESSAGE +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_6) < 0) __PYX_ERR(0, 108, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":109 +- * """ +- * none = MPV_EVENT_NONE +- * shutdown = MPV_EVENT_SHUTDOWN # <<<<<<<<<<<<<< +- * log_message = MPV_EVENT_LOG_MESSAGE +- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SHUTDOWN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_shutdown, __pyx_t_6) < 0) __PYX_ERR(0, 109, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":110 +- * none = MPV_EVENT_NONE +- * shutdown = MPV_EVENT_SHUTDOWN +- * log_message = MPV_EVENT_LOG_MESSAGE # <<<<<<<<<<<<<< +- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY +- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_LOG_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_log_message, __pyx_t_6) < 0) __PYX_ERR(0, 110, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":111 +- * shutdown = MPV_EVENT_SHUTDOWN +- * log_message = MPV_EVENT_LOG_MESSAGE +- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY # <<<<<<<<<<<<<< +- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY +- * command_reply = MPV_EVENT_COMMAND_REPLY +- */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_GET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_get_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 111, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_MIN_CAPI_MINOR, __pyx_int_0) < 0) __PYX_ERR(0, 34, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":112 +- * log_message = MPV_EVENT_LOG_MESSAGE +- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY +- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY # <<<<<<<<<<<<<< +- * command_reply = MPV_EVENT_COMMAND_REPLY +- * start_file = MPV_EVENT_START_FILE ++ /* "vidcutter/libs/pympv/mpv.pyx":37 ++ * ++ * cdef unsigned long _CAPI_VERSION ++ * with nogil: # <<<<<<<<<<<<<< ++ * _CAPI_VERSION = mpv_client_api_version() ++ * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_set_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 112, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ { ++ #ifdef WITH_THREAD ++ PyThreadState *_save; ++ Py_UNBLOCK_THREADS ++ __Pyx_FastGIL_Remember(); ++ #endif ++ /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":113 +- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY +- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY +- * command_reply = MPV_EVENT_COMMAND_REPLY # <<<<<<<<<<<<<< +- * start_file = MPV_EVENT_START_FILE +- * end_file = MPV_EVENT_END_FILE ++ /* "vidcutter/libs/pympv/mpv.pyx":38 ++ * cdef unsigned long _CAPI_VERSION ++ * with nogil: ++ * _CAPI_VERSION = mpv_client_api_version() # <<<<<<<<<<<<<< ++ * ++ * _CAPI_MAJOR = _CAPI_VERSION >> 16 + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_COMMAND_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_reply, __pyx_t_6) < 0) __PYX_ERR(0, 113, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION = mpv_client_api_version(); ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":114 +- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY +- * command_reply = MPV_EVENT_COMMAND_REPLY +- * start_file = MPV_EVENT_START_FILE # <<<<<<<<<<<<<< +- * end_file = MPV_EVENT_END_FILE +- * file_loaded = MPV_EVENT_FILE_LOADED ++ /* "vidcutter/libs/pympv/mpv.pyx":37 ++ * ++ * cdef unsigned long _CAPI_VERSION ++ * with nogil: # <<<<<<<<<<<<<< ++ * _CAPI_VERSION = mpv_client_api_version() ++ * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_START_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_start_file, __pyx_t_6) < 0) __PYX_ERR(0, 114, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ /*finally:*/ { ++ /*normal exit:*/{ ++ #ifdef WITH_THREAD ++ __Pyx_FastGIL_Forget(); ++ Py_BLOCK_THREADS ++ #endif ++ goto __pyx_L4; ++ } ++ __pyx_L4:; ++ } ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":115 +- * command_reply = MPV_EVENT_COMMAND_REPLY +- * start_file = MPV_EVENT_START_FILE +- * end_file = MPV_EVENT_END_FILE # <<<<<<<<<<<<<< +- * file_loaded = MPV_EVENT_FILE_LOADED +- * tracks_changed = MPV_EVENT_TRACKS_CHANGED ++ /* "vidcutter/libs/pympv/mpv.pyx":40 ++ * _CAPI_VERSION = mpv_client_api_version() ++ * ++ * _CAPI_MAJOR = _CAPI_VERSION >> 16 # <<<<<<<<<<<<<< ++ * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF ++ * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_END_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_end_file, __pyx_t_6) < 0) __PYX_ERR(0, 115, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION >> 16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MAJOR, __pyx_t_2) < 0) __PYX_ERR(0, 40, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":116 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":41 ++ * ++ * _CAPI_MAJOR = _CAPI_VERSION >> 16 ++ * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF # <<<<<<<<<<<<<< ++ * ++ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_FILE_LOADED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_file_loaded, __pyx_t_6) < 0) __PYX_ERR(0, 116, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION & 0xFFFF)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MINOR, __pyx_t_2) < 0) __PYX_ERR(0, 41, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":117 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":43 ++ * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF ++ * ++ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< ++ * raise ImportError( ++ * "libmpv version is incorrect. Required %d.%d got %d.%d." % + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TRACKS_CHANGED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 117, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tracks_changed, __pyx_t_6) < 0) __PYX_ERR(0, 117, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (!__pyx_t_5) { ++ } else { ++ __pyx_t_3 = __pyx_t_5; ++ goto __pyx_L6_bool_binop_done; ++ } ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __pyx_t_3 = __pyx_t_5; ++ __pyx_L6_bool_binop_done:; ++ if (unlikely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":118 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":46 ++ * raise ImportError( ++ * "libmpv version is incorrect. Required %d.%d got %d.%d." % ++ * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) # <<<<<<<<<<<<<< ++ * ) ++ * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TRACK_SWITCHED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 118, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tracks_switched, __pyx_t_6) < 0) __PYX_ERR(0, 118, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_2); ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_GIVEREF(__pyx_t_2); ++ PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); ++ __Pyx_GIVEREF(__pyx_t_1); ++ PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1); ++ __Pyx_GIVEREF(__pyx_t_4); ++ PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_4); ++ __Pyx_GIVEREF(__pyx_t_6); ++ PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6); ++ __pyx_t_2 = 0; ++ __pyx_t_1 = 0; ++ __pyx_t_4 = 0; ++ __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":119 +- * tracks_changed = MPV_EVENT_TRACKS_CHANGED +- * tracks_switched = MPV_EVENT_TRACK_SWITCHED +- * idle = MPV_EVENT_IDLE # <<<<<<<<<<<<<< +- * pause = MPV_EVENT_PAUSE +- * unpause = MPV_EVENT_UNPAUSE ++ /* "vidcutter/libs/pympv/mpv.pyx":45 ++ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: ++ * raise ImportError( ++ * "libmpv version is incorrect. Required %d.%d got %d.%d." % # <<<<<<<<<<<<<< ++ * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) ++ * ) + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_IDLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_idle, __pyx_t_6) < 0) __PYX_ERR(0, 119, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 45, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":120 +- * tracks_switched = MPV_EVENT_TRACK_SWITCHED +- * idle = MPV_EVENT_IDLE +- * pause = MPV_EVENT_PAUSE # <<<<<<<<<<<<<< +- * unpause = MPV_EVENT_UNPAUSE +- * tick = MPV_EVENT_TICK ++ /* "vidcutter/libs/pympv/mpv.pyx":44 ++ * ++ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: ++ * raise ImportError( # <<<<<<<<<<<<<< ++ * "libmpv version is incorrect. Required %d.%d got %d.%d." % ++ * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PAUSE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 120, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_pause, __pyx_t_6) < 0) __PYX_ERR(0, 120, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ImportError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 44, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_Raise(__pyx_t_7, 0, 0, 0); ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __PYX_ERR(0, 44, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":121 +- * idle = MPV_EVENT_IDLE +- * pause = MPV_EVENT_PAUSE +- * unpause = MPV_EVENT_UNPAUSE # <<<<<<<<<<<<<< +- * tick = MPV_EVENT_TICK +- * script_input_dispatch = MPV_EVENT_SCRIPT_INPUT_DISPATCH ++ /* "vidcutter/libs/pympv/mpv.pyx":43 ++ * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF ++ * ++ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< ++ * raise ImportError( ++ * "libmpv version is incorrect. Required %d.%d got %d.%d." % + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_UNPAUSE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 121, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unpause, __pyx_t_6) < 0) __PYX_ERR(0, 121, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ } + +- /* "vidcutter/libs/pympv/mpv.pyx":122 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":52 ++ * void Py_Initialize() ++ * ++ * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< ++ * _strdec_err = "surrogateescape" if _is_py3 else "strict" ++ * # mpv -> Python + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TICK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_version_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tick, __pyx_t_6) < 0) __PYX_ERR(0, 122, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_tuple__18, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_py3, __pyx_t_7) < 0) __PYX_ERR(0, 52, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":123 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":53 ++ * ++ * _is_py3 = sys.version_info >= (3,) ++ * _strdec_err = "surrogateescape" if _is_py3 else "strict" # <<<<<<<<<<<<<< ++ * # mpv -> Python ++ * def _strdec(s): + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SCRIPT_INPUT_DISPATCH); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 123, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_py3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_script_input_dispatch, __pyx_t_6) < 0) __PYX_ERR(0, 123, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (__pyx_t_3) { ++ __Pyx_INCREF(__pyx_n_s_surrogateescape); ++ __pyx_t_7 = __pyx_n_s_surrogateescape; ++ } else { ++ __Pyx_INCREF(__pyx_n_s_strict); ++ __pyx_t_7 = __pyx_n_s_strict; ++ } ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec_err, __pyx_t_7) < 0) __PYX_ERR(0, 53, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":124 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":55 ++ * _strdec_err = "surrogateescape" if _is_py3 else "strict" ++ * # mpv -> Python ++ * def _strdec(s): # <<<<<<<<<<<<<< ++ * try: ++ * return s.decode("utf-8", _strdec_err) + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CLIENT_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_client_message, __pyx_t_6) < 0) __PYX_ERR(0, 124, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_1_strdec, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 55, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec, __pyx_t_7) < 0) __PYX_ERR(0, 55, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":125 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":63 ++ * ++ * # Python -> mpv ++ * def _strenc(s): # <<<<<<<<<<<<<< ++ * try: ++ * return s.encode("utf-8", _strdec_err) + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_VIDEO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_video_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 125, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_3_strenc, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strenc, __pyx_t_7) < 0) __PYX_ERR(0, 63, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":126 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":70 ++ * return s ++ * ++ * Py_Initialize() # <<<<<<<<<<<<<< ++ * ++ * class Errors: + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_AUDIO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_audio_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 126, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ Py_Initialize(); + +- /* "vidcutter/libs/pympv/mpv.pyx":127 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":72 ++ * Py_Initialize() ++ * ++ * class Errors: # <<<<<<<<<<<<<< ++ * """Set of known error codes from MpvError and Event responses. ++ * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_METADATA_UPDATE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 127, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_metadata_update, __pyx_t_6) < 0) __PYX_ERR(0, 127, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Errors, __pyx_n_s_Errors, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_error_codes_from_Mp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 72, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); + +- /* "vidcutter/libs/pympv/mpv.pyx":128 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":79 ++ * You should handle the possibility that error codes may not be any of these values. ++ * """ ++ * success = MPV_ERROR_SUCCESS # <<<<<<<<<<<<<< ++ * queue_full = MPV_ERROR_EVENT_QUEUE_FULL ++ * nomem = MPV_ERROR_NOMEM + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SEEK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_SUCCESS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_seek, __pyx_t_6) < 0) __PYX_ERR(0, 128, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_success, __pyx_t_6) < 0) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":129 +- * 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":80 ++ * """ ++ * success = MPV_ERROR_SUCCESS ++ * queue_full = MPV_ERROR_EVENT_QUEUE_FULL # <<<<<<<<<<<<<< ++ * nomem = MPV_ERROR_NOMEM ++ * uninitialized = MPV_ERROR_UNINITIALIZED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PLAYBACK_RESTART); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 129, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_EVENT_QUEUE_FULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_playback_restart, __pyx_t_6) < 0) __PYX_ERR(0, 129, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_full, __pyx_t_6) < 0) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":130 +- * seek = MPV_EVENT_SEEK +- * playback_restart = MPV_EVENT_PLAYBACK_RESTART +- * property_change = MPV_EVENT_PROPERTY_CHANGE # <<<<<<<<<<<<<< +- * chapter_change = MPV_EVENT_CHAPTER_CHANGE +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":81 ++ * success = MPV_ERROR_SUCCESS ++ * queue_full = MPV_ERROR_EVENT_QUEUE_FULL ++ * nomem = MPV_ERROR_NOMEM # <<<<<<<<<<<<<< ++ * uninitialized = MPV_ERROR_UNINITIALIZED ++ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PROPERTY_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 130, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOMEM); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_change, __pyx_t_6) < 0) __PYX_ERR(0, 130, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nomem, __pyx_t_6) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":131 +- * playback_restart = MPV_EVENT_PLAYBACK_RESTART +- * property_change = MPV_EVENT_PROPERTY_CHANGE +- * chapter_change = MPV_EVENT_CHAPTER_CHANGE # <<<<<<<<<<<<<< +- * +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":82 ++ * queue_full = MPV_ERROR_EVENT_QUEUE_FULL ++ * nomem = MPV_ERROR_NOMEM ++ * uninitialized = MPV_ERROR_UNINITIALIZED # <<<<<<<<<<<<<< ++ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER ++ * not_found = MPV_ERROR_OPTION_NOT_FOUND + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CHAPTER_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 131, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNINITIALIZED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_chapter_change, __pyx_t_6) < 0) __PYX_ERR(0, 131, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_uninitialized, __pyx_t_6) < 0) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":101 +- * +- * +- * class Events: # <<<<<<<<<<<<<< +- * """Set of known values for Event ids. +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":83 ++ * nomem = MPV_ERROR_NOMEM ++ * uninitialized = MPV_ERROR_UNINITIALIZED ++ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER # <<<<<<<<<<<<<< ++ * not_found = MPV_ERROR_OPTION_NOT_FOUND ++ * option_format = MPV_ERROR_OPTION_FORMAT + */ +- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Events, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_INVALID_PARAMETER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Events, __pyx_t_6) < 0) __PYX_ERR(0, 101, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_parameter, __pyx_t_6) < 0) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":134 +- * +- * +- * class LogLevels: # <<<<<<<<<<<<<< +- * no = MPV_LOG_LEVEL_NONE +- * fatal = MPV_LOG_LEVEL_FATAL ++ /* "vidcutter/libs/pympv/mpv.pyx":84 ++ * uninitialized = MPV_ERROR_UNINITIALIZED ++ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER ++ * not_found = MPV_ERROR_OPTION_NOT_FOUND # <<<<<<<<<<<<<< ++ * option_format = MPV_ERROR_OPTION_FORMAT ++ * option_error = MPV_ERROR_OPTION_ERROR + */ +- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LogLevels, __pyx_n_s_LogLevels, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 134, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 84, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":135 +- * +- * class LogLevels: +- * no = MPV_LOG_LEVEL_NONE # <<<<<<<<<<<<<< +- * fatal = MPV_LOG_LEVEL_FATAL +- * error = MPV_LOG_LEVEL_ERROR ++ /* "vidcutter/libs/pympv/mpv.pyx":85 ++ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER ++ * not_found = MPV_ERROR_OPTION_NOT_FOUND ++ * option_format = MPV_ERROR_OPTION_FORMAT # <<<<<<<<<<<<<< ++ * option_error = MPV_ERROR_OPTION_ERROR ++ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 135, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_no, __pyx_t_6) < 0) __PYX_ERR(0, 135, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_format, __pyx_t_6) < 0) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":136 +- * class LogLevels: +- * no = MPV_LOG_LEVEL_NONE +- * fatal = MPV_LOG_LEVEL_FATAL # <<<<<<<<<<<<<< +- * error = MPV_LOG_LEVEL_ERROR +- * warn = MPV_LOG_LEVEL_WARN ++ /* "vidcutter/libs/pympv/mpv.pyx":86 ++ * not_found = MPV_ERROR_OPTION_NOT_FOUND ++ * option_format = MPV_ERROR_OPTION_FORMAT ++ * option_error = MPV_ERROR_OPTION_ERROR # <<<<<<<<<<<<<< ++ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND ++ * property_format = MPV_ERROR_PROPERTY_FORMAT + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_FATAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_fatal, __pyx_t_6) < 0) __PYX_ERR(0, 136, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_error, __pyx_t_6) < 0) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":137 +- * no = MPV_LOG_LEVEL_NONE +- * fatal = MPV_LOG_LEVEL_FATAL +- * error = MPV_LOG_LEVEL_ERROR # <<<<<<<<<<<<<< +- * warn = MPV_LOG_LEVEL_WARN +- * info = MPV_LOG_LEVEL_INFO ++ /* "vidcutter/libs/pympv/mpv.pyx":87 ++ * option_format = MPV_ERROR_OPTION_FORMAT ++ * option_error = MPV_ERROR_OPTION_ERROR ++ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND # <<<<<<<<<<<<<< ++ * property_format = MPV_ERROR_PROPERTY_FORMAT ++ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 137, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":138 +- * fatal = MPV_LOG_LEVEL_FATAL +- * error = MPV_LOG_LEVEL_ERROR +- * warn = MPV_LOG_LEVEL_WARN # <<<<<<<<<<<<<< +- * info = MPV_LOG_LEVEL_INFO +- * v = MPV_LOG_LEVEL_V ++ /* "vidcutter/libs/pympv/mpv.pyx":88 ++ * option_error = MPV_ERROR_OPTION_ERROR ++ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND ++ * property_format = MPV_ERROR_PROPERTY_FORMAT # <<<<<<<<<<<<<< ++ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE ++ * property_error = MPV_ERROR_PROPERTY_ERROR + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_WARN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 138, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_warn, __pyx_t_6) < 0) __PYX_ERR(0, 138, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_format, __pyx_t_6) < 0) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":139 +- * error = MPV_LOG_LEVEL_ERROR +- * warn = MPV_LOG_LEVEL_WARN +- * info = MPV_LOG_LEVEL_INFO # <<<<<<<<<<<<<< +- * v = MPV_LOG_LEVEL_V +- * debug = MPV_LOG_LEVEL_DEBUG ++ /* "vidcutter/libs/pympv/mpv.pyx":89 ++ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND ++ * property_format = MPV_ERROR_PROPERTY_FORMAT ++ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE # <<<<<<<<<<<<<< ++ * property_error = MPV_ERROR_PROPERTY_ERROR ++ * command_error = MPV_ERROR_COMMAND + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_INFO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 139, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_UNAVAILABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_info, __pyx_t_6) < 0) __PYX_ERR(0, 139, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_unavailable, __pyx_t_6) < 0) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":140 +- * warn = MPV_LOG_LEVEL_WARN +- * info = MPV_LOG_LEVEL_INFO +- * v = MPV_LOG_LEVEL_V # <<<<<<<<<<<<<< +- * debug = MPV_LOG_LEVEL_DEBUG +- * trace = MPV_LOG_LEVEL_TRACE ++ /* "vidcutter/libs/pympv/mpv.pyx":90 ++ * property_format = MPV_ERROR_PROPERTY_FORMAT ++ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE ++ * property_error = MPV_ERROR_PROPERTY_ERROR # <<<<<<<<<<<<<< ++ * command_error = MPV_ERROR_COMMAND ++ * loading_failed = MPV_ERROR_LOADING_FAILED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_V); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_v, __pyx_t_6) < 0) __PYX_ERR(0, 140, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_error, __pyx_t_6) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":141 +- * info = MPV_LOG_LEVEL_INFO +- * v = MPV_LOG_LEVEL_V +- * debug = MPV_LOG_LEVEL_DEBUG # <<<<<<<<<<<<<< +- * trace = MPV_LOG_LEVEL_TRACE +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":91 ++ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE ++ * property_error = MPV_ERROR_PROPERTY_ERROR ++ * command_error = MPV_ERROR_COMMAND # <<<<<<<<<<<<<< ++ * loading_failed = MPV_ERROR_LOADING_FAILED ++ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_DEBUG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 141, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_COMMAND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_debug, __pyx_t_6) < 0) __PYX_ERR(0, 141, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_error, __pyx_t_6) < 0) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":142 +- * v = MPV_LOG_LEVEL_V +- * debug = MPV_LOG_LEVEL_DEBUG +- * trace = MPV_LOG_LEVEL_TRACE # <<<<<<<<<<<<<< +- * +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":92 ++ * property_error = MPV_ERROR_PROPERTY_ERROR ++ * command_error = MPV_ERROR_COMMAND ++ * loading_failed = MPV_ERROR_LOADING_FAILED # <<<<<<<<<<<<<< ++ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED ++ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_TRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_LOADING_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_trace, __pyx_t_6) < 0) __PYX_ERR(0, 142, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_loading_failed, __pyx_t_6) < 0) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":134 +- * +- * +- * class LogLevels: # <<<<<<<<<<<<<< +- * no = MPV_LOG_LEVEL_NONE +- * fatal = MPV_LOG_LEVEL_FATAL ++ /* "vidcutter/libs/pympv/mpv.pyx":93 ++ * command_error = MPV_ERROR_COMMAND ++ * loading_failed = MPV_ERROR_LOADING_FAILED ++ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED # <<<<<<<<<<<<<< ++ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED ++ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY + */ +- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LogLevels, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 134, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_AO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_LogLevels, __pyx_t_6) < 0) __PYX_ERR(0, 134, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ao_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":145 +- * +- * +- * class EOFReasons: # <<<<<<<<<<<<<< +- * """Known possible values for EndOfFileReached reason. +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":94 ++ * loading_failed = MPV_ERROR_LOADING_FAILED ++ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED ++ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED # <<<<<<<<<<<<<< ++ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY ++ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT + */ +- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOFReasons, __pyx_n_s_EOFReasons, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Known_possible_values_for_EndOfF); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 145, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_VO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_vo_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 94, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":150 +- * You should handle the possibility that the reason may not be any of these values. +- * """ +- * eof = MPV_END_FILE_REASON_EOF # <<<<<<<<<<<<<< +- * aborted = MPV_END_FILE_REASON_STOP +- * quit = MPV_END_FILE_REASON_QUIT ++ /* "vidcutter/libs/pympv/mpv.pyx":95 ++ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED ++ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED ++ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY # <<<<<<<<<<<<<< ++ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT ++ * unsupported = MPV_ERROR_UNSUPPORTED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOTHING_TO_PLAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_eof, __pyx_t_6) < 0) __PYX_ERR(0, 150, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nothing_to_play, __pyx_t_6) < 0) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":151 +- * """ +- * eof = MPV_END_FILE_REASON_EOF +- * aborted = MPV_END_FILE_REASON_STOP # <<<<<<<<<<<<<< +- * quit = MPV_END_FILE_REASON_QUIT +- * error = MPV_END_FILE_REASON_ERROR ++ /* "vidcutter/libs/pympv/mpv.pyx":96 ++ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED ++ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY ++ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT # <<<<<<<<<<<<<< ++ * unsupported = MPV_ERROR_UNSUPPORTED ++ * not_implemented = MPV_ERROR_NOT_IMPLEMENTED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_STOP); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNKNOWN_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_aborted, __pyx_t_6) < 0) __PYX_ERR(0, 151, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unknown_format, __pyx_t_6) < 0) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":152 +- * eof = MPV_END_FILE_REASON_EOF +- * aborted = MPV_END_FILE_REASON_STOP +- * quit = MPV_END_FILE_REASON_QUIT # <<<<<<<<<<<<<< +- * error = MPV_END_FILE_REASON_ERROR ++ /* "vidcutter/libs/pympv/mpv.pyx":97 ++ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY ++ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT ++ * unsupported = MPV_ERROR_UNSUPPORTED # <<<<<<<<<<<<<< ++ * not_implemented = MPV_ERROR_NOT_IMPLEMENTED + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_QUIT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNSUPPORTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_quit, __pyx_t_6) < 0) __PYX_ERR(0, 152, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unsupported, __pyx_t_6) < 0) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":153 +- * aborted = MPV_END_FILE_REASON_STOP +- * quit = MPV_END_FILE_REASON_QUIT +- * error = MPV_END_FILE_REASON_ERROR # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":98 ++ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT ++ * unsupported = MPV_ERROR_UNSUPPORTED ++ * not_implemented = MPV_ERROR_NOT_IMPLEMENTED # <<<<<<<<<<<<<< + * + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 153, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOT_IMPLEMENTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 153, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_implemented, __pyx_t_6) < 0) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":145 +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":72 ++ * Py_Initialize() + * +- * class EOFReasons: # <<<<<<<<<<<<<< +- * """Known possible values for EndOfFileReached reason. ++ * class Errors: # <<<<<<<<<<<<<< ++ * """Set of known error codes from MpvError and Event responses. + * + */ +- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_EOFReasons, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Errors, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOFReasons, __pyx_t_6) < 0) __PYX_ERR(0, 145, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Errors, __pyx_t_6) < 0) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":318 +- * +- * +- * def _errors(fn): # <<<<<<<<<<<<<< +- * def wrapped(*k, **kw): +- * v = fn(*k, **kw) +- */ +- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_5_errors, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 318, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_7) < 0) __PYX_ERR(0, 318, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- +- /* "vidcutter/libs/pympv/mpv.pyx":326 ++ /* "vidcutter/libs/pympv/mpv.pyx":101 + * + * +- * class MPVError(Exception): # <<<<<<<<<<<<<< +- * code = None ++ * class Events: # <<<<<<<<<<<<<< ++ * """Set of known values for Event ids. + * + */ +- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 326, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Events, __pyx_n_s_Events, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_values_for_Event_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); +- __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); +- PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); +- __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 326, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_MPVError, __pyx_n_s_MPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 326, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- +- /* "vidcutter/libs/pympv/mpv.pyx":327 +- * +- * class MPVError(Exception): +- * code = None # <<<<<<<<<<<<<< +- * +- * def __init__(self, e): +- */ +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_code, Py_None) < 0) __PYX_ERR(0, 327, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":329 +- * code = None +- * +- * def __init__(self, e): # <<<<<<<<<<<<<< +- * self.code = e +- * cdef const char* err_c ++ /* "vidcutter/libs/pympv/mpv.pyx":108 ++ * You should handle the possibility that event ids may not be any of these values. ++ * """ ++ * none = MPV_EVENT_NONE # <<<<<<<<<<<<<< ++ * shutdown = MPV_EVENT_SHUTDOWN ++ * log_message = MPV_EVENT_LOG_MESSAGE + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__, 0, __pyx_n_s_MPVError___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 329, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_6) < 0) __PYX_ERR(0, 108, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":326 +- * +- * +- * class MPVError(Exception): # <<<<<<<<<<<<<< +- * code = None +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":109 ++ * """ ++ * none = MPV_EVENT_NONE ++ * shutdown = MPV_EVENT_SHUTDOWN # <<<<<<<<<<<<<< ++ * log_message = MPV_EVENT_LOG_MESSAGE ++ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY + */ +- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPVError, __pyx_t_1) < 0) __PYX_ERR(0, 326, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SHUTDOWN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_shutdown, __pyx_t_6) < 0) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":340 +- * Exception.__init__(self, e) +- * +- * class PyMPVError(Exception): # <<<<<<<<<<<<<< +- * pass +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":110 ++ * none = MPV_EVENT_NONE ++ * shutdown = MPV_EVENT_SHUTDOWN ++ * log_message = MPV_EVENT_LOG_MESSAGE # <<<<<<<<<<<<<< ++ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY ++ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY + */ +- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 340, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); +- __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); +- PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); +- __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_LOG_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_PyMPVError, __pyx_n_s_PyMPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_PyMPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyMPVError, __pyx_t_1) < 0) __PYX_ERR(0, 340, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_log_message, __pyx_t_6) < 0) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":343 +- * pass +- * +- * cdef _callbacks = dict() # <<<<<<<<<<<<<< +- * cdef _reply_userdatas = dict() +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":111 ++ * shutdown = MPV_EVENT_SHUTDOWN ++ * log_message = MPV_EVENT_LOG_MESSAGE ++ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY # <<<<<<<<<<<<<< ++ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY ++ * command_reply = MPV_EVENT_COMMAND_REPLY + */ +- __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 343, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__callbacks); +- __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_t_7); +- __Pyx_GIVEREF(__pyx_t_7); +- __pyx_t_7 = 0; ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_GET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_get_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 111, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":344 +- * +- * cdef _callbacks = dict() +- * cdef _reply_userdatas = dict() # <<<<<<<<<<<<<< +- * +- * class _ReplyUserData(object): ++ /* "vidcutter/libs/pympv/mpv.pyx":112 ++ * log_message = MPV_EVENT_LOG_MESSAGE ++ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY ++ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY # <<<<<<<<<<<<<< ++ * command_reply = MPV_EVENT_COMMAND_REPLY ++ * start_file = MPV_EVENT_START_FILE + */ +- __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 344, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas); +- __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_t_7); +- __Pyx_GIVEREF(__pyx_t_7); +- __pyx_t_7 = 0; ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_set_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 112, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":346 +- * cdef _reply_userdatas = dict() +- * +- * class _ReplyUserData(object): # <<<<<<<<<<<<<< +- * def __init__(self, data): +- * self.counter = 0 ++ /* "vidcutter/libs/pympv/mpv.pyx":113 ++ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY ++ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY ++ * command_reply = MPV_EVENT_COMMAND_REPLY # <<<<<<<<<<<<<< ++ * start_file = MPV_EVENT_START_FILE ++ * end_file = MPV_EVENT_END_FILE + */ +- __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__30); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__30, __pyx_n_s_ReplyUserData, __pyx_n_s_ReplyUserData, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 346, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_COMMAND_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_reply, __pyx_t_6) < 0) __PYX_ERR(0, 113, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":347 +- * +- * class _ReplyUserData(object): +- * def __init__(self, data): # <<<<<<<<<<<<<< +- * self.counter = 0 +- * self.data = data ++ /* "vidcutter/libs/pympv/mpv.pyx":114 ++ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY ++ * command_reply = MPV_EVENT_COMMAND_REPLY ++ * start_file = MPV_EVENT_START_FILE # <<<<<<<<<<<<<< ++ * end_file = MPV_EVENT_END_FILE ++ * file_loaded = MPV_EVENT_FILE_LOADED + */ +- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, 0, __pyx_n_s_ReplyUserData___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 347, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_START_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_start_file, __pyx_t_6) < 0) __PYX_ERR(0, 114, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":352 +- * self.observed = False +- * +- * def add(self): # <<<<<<<<<<<<<< +- * self.counter += 1 +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":115 ++ * command_reply = MPV_EVENT_COMMAND_REPLY ++ * start_file = MPV_EVENT_START_FILE ++ * end_file = MPV_EVENT_END_FILE # <<<<<<<<<<<<<< ++ * file_loaded = MPV_EVENT_FILE_LOADED ++ * # tracks_changed = MPV_EVENT_TRACKS_CHANGED + */ +- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, 0, __pyx_n_s_ReplyUserData_add, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_add, __pyx_t_4) < 0) __PYX_ERR(0, 352, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_END_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_end_file, __pyx_t_6) < 0) __PYX_ERR(0, 115, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":355 +- * self.counter += 1 +- * +- * def remove(self): # <<<<<<<<<<<<<< +- * self.counter -= 1 +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":116 ++ * 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 + */ +- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, 0, __pyx_n_s_ReplyUserData_remove, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_remove, __pyx_t_4) < 0) __PYX_ERR(0, 355, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_FILE_LOADED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_file_loaded, __pyx_t_6) < 0) __PYX_ERR(0, 116, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":346 +- * cdef _reply_userdatas = dict() +- * +- * class _ReplyUserData(object): # <<<<<<<<<<<<<< +- * def __init__(self, data): +- * self.counter = 0 ++ /* "vidcutter/libs/pympv/mpv.pyx":119 ++ * # tracks_changed = MPV_EVENT_TRACKS_CHANGED ++ * # tracks_switched = MPV_EVENT_TRACK_SWITCHED ++ * idle = MPV_EVENT_IDLE # <<<<<<<<<<<<<< ++ * # pause = MPV_EVENT_PAUSE ++ * # unpause = MPV_EVENT_UNPAUSE + */ +- __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ReplyUserData, __pyx_tuple__30, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplyUserData, __pyx_t_4) < 0) __PYX_ERR(0, 346, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_IDLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_idle, __pyx_t_6) < 0) __PYX_ERR(0, 119, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":411 +- * mpv_resume(self._ctx) +- * +- * @_errors # <<<<<<<<<<<<<< +- * def request_event(self, event, enable): +- * """Enable or disable a given event. ++ /* "vidcutter/libs/pympv/mpv.pyx":122 ++ * # 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 + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TICK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tick, __pyx_t_6) < 0) __PYX_ERR(0, 122, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":412 +- * +- * @_errors +- * def request_event(self, event, enable): # <<<<<<<<<<<<<< +- * """Enable or disable a given event. +- * ++ /* "vidcutter/libs/pympv/mpv.pyx":124 ++ * 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 + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_request_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CLIENT_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_client_message, __pyx_t_6) < 0) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_request_event, __pyx_t_7) < 0) __PYX_ERR(0, 412, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":429 +- * return err +- * +- * @_errors # <<<<<<<<<<<<<< +- * def set_log_level(self, loglevel): +- * """Wraps: mpv_request_log_messages""" ++ /* "vidcutter/libs/pympv/mpv.pyx":125 ++ * # 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 + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 429, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_VIDEO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_video_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 125, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":430 +- * +- * @_errors +- * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< +- * """Wraps: mpv_request_log_messages""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":126 ++ * 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 + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 429, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_AUDIO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_audio_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_log_level, __pyx_t_7) < 0) __PYX_ERR(0, 430, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":440 +- * return err +- * +- * @_errors # <<<<<<<<<<<<<< +- * def load_config(self, filename): +- * """Wraps: mpv_load_config_file""" ++ /* "vidcutter/libs/pympv/mpv.pyx":128 ++ * 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 + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 440, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SEEK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_seek, __pyx_t_6) < 0) __PYX_ERR(0, 128, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":441 +- * +- * @_errors +- * def load_config(self, filename): # <<<<<<<<<<<<<< +- * """Wraps: mpv_load_config_file""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":129 ++ * # 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 + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_load_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 440, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PLAYBACK_RESTART); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 129, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_playback_restart, __pyx_t_6) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_load_config, __pyx_t_7) < 0) __PYX_ERR(0, 441, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":573 +- * return result ++ /* "vidcutter/libs/pympv/mpv.pyx":130 ++ * seek = MPV_EVENT_SEEK ++ * playback_restart = MPV_EVENT_PLAYBACK_RESTART ++ * property_change = MPV_EVENT_PROPERTY_CHANGE # <<<<<<<<<<<<<< ++ * # chapter_change = MPV_EVENT_CHAPTER_CHANGE + * +- * @_errors # <<<<<<<<<<<<<< +- * def get_property_async(self, prop, data=None): +- * """Gets the value of a property asynchronously. + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PROPERTY_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_change, __pyx_t_6) < 0) __PYX_ERR(0, 130, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":574 ++ /* "vidcutter/libs/pympv/mpv.pyx":101 + * +- * @_errors +- * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< +- * """Gets the value of a property asynchronously. ++ * ++ * class Events: # <<<<<<<<<<<<<< ++ * """Set of known values for Event ids. + * + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 573, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Events, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Events, __pyx_t_6) < 0) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_get_property_async, __pyx_t_7) < 0) __PYX_ERR(0, 574, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":635 +- * return v ++ /* "vidcutter/libs/pympv/mpv.pyx":134 + * +- * @_errors # <<<<<<<<<<<<<< +- * def set_property(self, prop, value=True, asynchronous=False, data=None): +- * """Wraps: mpv_set_property and mpv_set_property_async""" +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 635, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- +- /* "vidcutter/libs/pympv/mpv.pyx":636 + * +- * @_errors +- * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< +- * """Wraps: mpv_set_property and mpv_set_property_async""" +- * assert self._ctx ++ * class LogLevels: # <<<<<<<<<<<<<< ++ * no = MPV_LOG_LEVEL_NONE ++ * fatal = MPV_LOG_LEVEL_FATAL + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 636, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 635, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LogLevels, __pyx_n_s_LogLevels, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_property, __pyx_t_7) < 0) __PYX_ERR(0, 636, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":673 +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":135 + * +- * @_errors # <<<<<<<<<<<<<< +- * def set_option(self, prop, value=True): +- * """Wraps: mpv_set_option""" ++ * class LogLevels: ++ * no = MPV_LOG_LEVEL_NONE # <<<<<<<<<<<<<< ++ * fatal = MPV_LOG_LEVEL_FATAL ++ * error = MPV_LOG_LEVEL_ERROR + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_no, __pyx_t_6) < 0) __PYX_ERR(0, 135, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":674 +- * +- * @_errors +- * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< +- * """Wraps: mpv_set_option""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":136 ++ * class LogLevels: ++ * no = MPV_LOG_LEVEL_NONE ++ * fatal = MPV_LOG_LEVEL_FATAL # <<<<<<<<<<<<<< ++ * error = MPV_LOG_LEVEL_ERROR ++ * warn = MPV_LOG_LEVEL_WARN + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_option); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 674, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 673, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_FATAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_fatal, __pyx_t_6) < 0) __PYX_ERR(0, 136, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_option, __pyx_t_7) < 0) __PYX_ERR(0, 674, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":695 +- * return err +- * +- * @_errors # <<<<<<<<<<<<<< +- * def initialize(self): +- * """Wraps: mpv_initialize""" ++ /* "vidcutter/libs/pympv/mpv.pyx":137 ++ * no = MPV_LOG_LEVEL_NONE ++ * fatal = MPV_LOG_LEVEL_FATAL ++ * error = MPV_LOG_LEVEL_ERROR # <<<<<<<<<<<<<< ++ * warn = MPV_LOG_LEVEL_WARN ++ * info = MPV_LOG_LEVEL_INFO + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 137, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":696 +- * +- * @_errors +- * def initialize(self): # <<<<<<<<<<<<<< +- * """Wraps: mpv_initialize""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":138 ++ * fatal = MPV_LOG_LEVEL_FATAL ++ * error = MPV_LOG_LEVEL_ERROR ++ * warn = MPV_LOG_LEVEL_WARN # <<<<<<<<<<<<<< ++ * info = MPV_LOG_LEVEL_INFO ++ * v = MPV_LOG_LEVEL_V + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_initialize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 695, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_WARN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 138, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_warn, __pyx_t_6) < 0) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_initialize, __pyx_t_7) < 0) __PYX_ERR(0, 696, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":748 +- * self.callbackthread.start() +- * +- * @_errors # <<<<<<<<<<<<<< +- * def observe_property(self, prop, data=None): +- * """Wraps: mpv_observe_property""" ++ /* "vidcutter/libs/pympv/mpv.pyx":139 ++ * error = MPV_LOG_LEVEL_ERROR ++ * warn = MPV_LOG_LEVEL_WARN ++ * info = MPV_LOG_LEVEL_INFO # <<<<<<<<<<<<<< ++ * v = MPV_LOG_LEVEL_V ++ * debug = MPV_LOG_LEVEL_DEBUG + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 748, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_INFO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_info, __pyx_t_6) < 0) __PYX_ERR(0, 139, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":749 +- * +- * @_errors +- * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< +- * """Wraps: mpv_observe_property""" +- * assert self._ctx ++ /* "vidcutter/libs/pympv/mpv.pyx":140 ++ * warn = MPV_LOG_LEVEL_WARN ++ * info = MPV_LOG_LEVEL_INFO ++ * v = MPV_LOG_LEVEL_V # <<<<<<<<<<<<<< ++ * debug = MPV_LOG_LEVEL_DEBUG ++ * trace = MPV_LOG_LEVEL_TRACE + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_observe_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 748, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_V); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_v, __pyx_t_6) < 0) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_observe_property, __pyx_t_7) < 0) __PYX_ERR(0, 749, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":770 +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":141 ++ * info = MPV_LOG_LEVEL_INFO ++ * v = MPV_LOG_LEVEL_V ++ * debug = MPV_LOG_LEVEL_DEBUG # <<<<<<<<<<<<<< ++ * trace = MPV_LOG_LEVEL_TRACE + * +- * @_errors # <<<<<<<<<<<<<< +- * def unobserve_property(self, data): +- * """Wraps: mpv_unobserve_property""" + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 770, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_DEBUG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_debug, __pyx_t_6) < 0) __PYX_ERR(0, 141, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":771 ++ /* "vidcutter/libs/pympv/mpv.pyx":142 ++ * v = MPV_LOG_LEVEL_V ++ * debug = MPV_LOG_LEVEL_DEBUG ++ * trace = MPV_LOG_LEVEL_TRACE # <<<<<<<<<<<<<< ++ * + * +- * @_errors +- * def unobserve_property(self, data): # <<<<<<<<<<<<<< +- * """Wraps: mpv_unobserve_property""" +- * assert self._ctx + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_unobserve_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 771, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 770, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_TRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_trace, __pyx_t_6) < 0) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_unobserve_property, __pyx_t_7) < 0) __PYX_ERR(0, 771, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":938 ++ /* "vidcutter/libs/pympv/mpv.pyx":134 + * +- * cdef class RenderContext(object): +- * API_OPENGL = "opengl" # <<<<<<<<<<<<<< +- * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME + * ++ * class LogLevels: # <<<<<<<<<<<<<< ++ * no = MPV_LOG_LEVEL_NONE ++ * fatal = MPV_LOG_LEVEL_FATAL + */ +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_API_OPENGL, __pyx_n_s_opengl) < 0) __PYX_ERR(0, 938, __pyx_L1_error) +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); ++ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LogLevels, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 134, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_LogLevels, __pyx_t_6) < 0) __PYX_ERR(0, 134, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":939 +- * cdef class RenderContext(object): +- * API_OPENGL = "opengl" +- * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":145 ++ * ++ * ++ * class EOFReasons: # <<<<<<<<<<<<<< ++ * """Known possible values for EndOfFileReached reason. + * +- * cdef: + */ +- __pyx_t_7 = __Pyx_PyInt_From_enum__mpv_render_update_flag(MPV_RENDER_UPDATE_FRAME); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 939, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOFReasons, __pyx_n_s_EOFReasons, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Known_possible_values_for_EndOfF); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_UPDATE_FRAME, __pyx_t_7) < 0) __PYX_ERR(0, 939, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +- /* "vidcutter/libs/pympv/mpv.pyx":1009 +- * self.inited = True +- * +- * @_errors # <<<<<<<<<<<<<< +- * def set_icc_profile(self, icc_blob): +- * cdef: ++ /* "vidcutter/libs/pympv/mpv.pyx":150 ++ * You should handle the possibility that the reason may not be any of these values. ++ * """ ++ * eof = MPV_END_FILE_REASON_EOF # <<<<<<<<<<<<<< ++ * aborted = MPV_END_FILE_REASON_STOP ++ * quit = MPV_END_FILE_REASON_QUIT ++ */ ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_eof, __pyx_t_6) < 0) __PYX_ERR(0, 150, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":151 ++ * """ ++ * eof = MPV_END_FILE_REASON_EOF ++ * aborted = MPV_END_FILE_REASON_STOP # <<<<<<<<<<<<<< ++ * quit = MPV_END_FILE_REASON_QUIT ++ * error = MPV_END_FILE_REASON_ERROR + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1009, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_STOP); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_aborted, __pyx_t_6) < 0) __PYX_ERR(0, 151, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1010 ++ /* "vidcutter/libs/pympv/mpv.pyx":152 ++ * eof = MPV_END_FILE_REASON_EOF ++ * aborted = MPV_END_FILE_REASON_STOP ++ * quit = MPV_END_FILE_REASON_QUIT # <<<<<<<<<<<<<< ++ * error = MPV_END_FILE_REASON_ERROR + * +- * @_errors +- * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< +- * cdef: +- * mpv_render_param param + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_icc_profile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1010, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1009, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_QUIT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_quit, __pyx_t_6) < 0) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_icc_profile, __pyx_t_7) < 0) __PYX_ERR(0, 1010, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +- /* "vidcutter/libs/pympv/mpv.pyx":1028 +- * return err ++ /* "vidcutter/libs/pympv/mpv.pyx":153 ++ * aborted = MPV_END_FILE_REASON_STOP ++ * quit = MPV_END_FILE_REASON_QUIT ++ * error = MPV_END_FILE_REASON_ERROR # <<<<<<<<<<<<<< ++ * + * +- * @_errors # <<<<<<<<<<<<<< +- * def set_ambient_light(self, lux): +- * cdef: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1028, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 153, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1029 ++ /* "vidcutter/libs/pympv/mpv.pyx":145 ++ * ++ * ++ * class EOFReasons: # <<<<<<<<<<<<<< ++ * """Known possible values for EndOfFileReached reason. + * +- * @_errors +- * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< +- * cdef: +- * mpv_render_param param + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_ambient_light); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1029, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_EOFReasons, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOFReasons, __pyx_t_6) < 0) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_ambient_light, __pyx_t_7) < 0) __PYX_ERR(0, 1029, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +- /* "vidcutter/libs/pympv/mpv.pyx":1068 +- * return ret ++ /* "vidcutter/libs/pympv/mpv.pyx":318 + * +- * @_errors # <<<<<<<<<<<<<< +- * def render(self, +- * opengl_fbo=None, +- */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1068, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- +- /* "vidcutter/libs/pympv/mpv.pyx":1069 + * +- * @_errors +- * def render(self, # <<<<<<<<<<<<<< +- * opengl_fbo=None, +- * flip_y=False, ++ * def _errors(fn): # <<<<<<<<<<<<<< ++ * def wrapped(*k, **kw): ++ * v = fn(*k, **kw) + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = NULL; +- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); +- if (likely(__pyx_t_1)) { +- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); +- __Pyx_INCREF(__pyx_t_1); +- __Pyx_INCREF(function); +- __Pyx_DECREF_SET(__pyx_t_6, function); +- } +- } +- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); +- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; +- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1068, __pyx_L1_error) ++ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_5_errors, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_render, __pyx_t_7) < 0) __PYX_ERR(0, 1069, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_7) < 0) __PYX_ERR(0, 318, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +- /* "vidcutter/libs/pympv/mpv.pyx":1132 +- * init_params, *args, **kwargs) ++ /* "vidcutter/libs/pympv/mpv.pyx":326 ++ * ++ * ++ * class MPVError(Exception): # <<<<<<<<<<<<<< ++ * code = None + * +- * class CallbackThread(Thread): # <<<<<<<<<<<<<< +- * def __init__(self): +- * Thread.__init__(self) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 326, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); ++ __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); ++ PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); ++ __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 326, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- __Pyx_GIVEREF(__pyx_t_7); +- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); +- __pyx_t_7 = 0; +- __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_6, __pyx_n_s_CallbackThread, __pyx_n_s_CallbackThread, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_MPVError, __pyx_n_s_MPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 326, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + +- /* "vidcutter/libs/pympv/mpv.pyx":1133 ++ /* "vidcutter/libs/pympv/mpv.pyx":327 + * +- * class CallbackThread(Thread): +- * def __init__(self): # <<<<<<<<<<<<<< +- * Thread.__init__(self) +- * self.daemon = True ++ * class MPVError(Exception): ++ * code = None # <<<<<<<<<<<<<< ++ * ++ * def __init__(self, e): + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, 0, __pyx_n_s_CallbackThread___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 1133, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_code, Py_None) < 0) __PYX_ERR(0, 327, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1141 +- * self.isshutdown = False ++ /* "vidcutter/libs/pympv/mpv.pyx":329 ++ * code = None + * +- * def shutdown(self): # <<<<<<<<<<<<<< +- * self.isshutdown = True +- * self.callback = None ++ * def __init__(self, e): # <<<<<<<<<<<<<< ++ * self.code = e ++ * cdef const char* err_c + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, 0, __pyx_n_s_CallbackThread_shutdown, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__, 0, __pyx_n_s_MPVError___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_shutdown, __pyx_t_1) < 0) __PYX_ERR(0, 1141, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 329, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1146 +- * self.lock.release() ++ /* "vidcutter/libs/pympv/mpv.pyx":326 + * +- * def call(self): # <<<<<<<<<<<<<< +- * self.lock.release() ++ * ++ * class MPVError(Exception): # <<<<<<<<<<<<<< ++ * code = None + * + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call, 0, __pyx_n_s_CallbackThread_call, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_call, __pyx_t_1) < 0) __PYX_ERR(0, 1146, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPVError, __pyx_t_1) < 0) __PYX_ERR(0, 326, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1149 +- * self.lock.release() ++ /* "vidcutter/libs/pympv/mpv.pyx":340 ++ * Exception.__init__(self, e) + * +- * def set(self, callback): # <<<<<<<<<<<<<< +- * self.callback = callback ++ * class PyMPVError(Exception): # <<<<<<<<<<<<<< ++ * pass + * + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set, 0, __pyx_n_s_CallbackThread_set, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error) ++ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 340, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); ++ __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); ++ PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); ++ __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_PyMPVError, __pyx_n_s_PyMPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_PyMPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_set, __pyx_t_1) < 0) __PYX_ERR(0, 1149, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyMPVError, __pyx_t_1) < 0) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1152 +- * self.callback = callback ++ /* "vidcutter/libs/pympv/mpv.pyx":343 ++ * pass + * +- * def run(self): # <<<<<<<<<<<<<< +- * while not self.isshutdown: +- * self.lock.acquire(True) ++ * cdef _callbacks = dict() # <<<<<<<<<<<<<< ++ * cdef _reply_userdatas = dict() ++ * ++ */ ++ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 343, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__callbacks); ++ __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_t_7); ++ __Pyx_GIVEREF(__pyx_t_7); ++ __pyx_t_7 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":344 ++ * ++ * cdef _callbacks = dict() ++ * cdef _reply_userdatas = dict() # <<<<<<<<<<<<<< ++ * ++ * class _ReplyUserData(object): ++ */ ++ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 344, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas); ++ __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_t_7); ++ __Pyx_GIVEREF(__pyx_t_7); ++ __pyx_t_7 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":346 ++ * cdef _reply_userdatas = dict() ++ * ++ * class _ReplyUserData(object): # <<<<<<<<<<<<<< ++ * def __init__(self, data): ++ * self.counter = 0 ++ */ ++ __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__27, __pyx_n_s_ReplyUserData, __pyx_n_s_ReplyUserData, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 346, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":347 ++ * ++ * class _ReplyUserData(object): ++ * def __init__(self, data): # <<<<<<<<<<<<<< ++ * self.counter = 0 ++ * self.data = data + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run, 0, __pyx_n_s_CallbackThread_run, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1152, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_run, __pyx_t_1) < 0) __PYX_ERR(0, 1152, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, 0, __pyx_n_s_ReplyUserData___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 347, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1157 +- * self.mpv_callback(self.callback) if self.callback else None ++ /* "vidcutter/libs/pympv/mpv.pyx":352 ++ * self.observed = False ++ * ++ * def add(self): # <<<<<<<<<<<<<< ++ * self.counter += 1 + * +- * def mpv_callback(self, callback): # <<<<<<<<<<<<<< +- * try: +- * callback() + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, 0, __pyx_n_s_CallbackThread_mpv_callback, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1157, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mpv_callback, __pyx_t_1) < 0) __PYX_ERR(0, 1157, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, 0, __pyx_n_s_ReplyUserData_add, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_add, __pyx_t_4) < 0) __PYX_ERR(0, 352, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1132 +- * init_params, *args, **kwargs) ++ /* "vidcutter/libs/pympv/mpv.pyx":355 ++ * self.counter += 1 ++ * ++ * def remove(self): # <<<<<<<<<<<<<< ++ * self.counter -= 1 + * +- * class CallbackThread(Thread): # <<<<<<<<<<<<<< +- * def __init__(self): +- * Thread.__init__(self) + */ +- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_CallbackThread, __pyx_t_6, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1132, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallbackThread, __pyx_t_1) < 0) __PYX_ERR(0, 1132, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, 0, __pyx_n_s_ReplyUserData_remove, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_remove, __pyx_t_4) < 0) __PYX_ERR(0, 355, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "(tree fragment)":1 +- * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result ++ /* "vidcutter/libs/pympv/mpv.pyx":346 ++ * cdef _reply_userdatas = dict() ++ * ++ * class _ReplyUserData(object): # <<<<<<<<<<<<<< ++ * def __init__(self, data): ++ * self.counter = 0 + */ +- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_EndOfFileReached, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ReplyUserData, __pyx_tuple__27, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplyUserData, __pyx_t_4) < 0) __PYX_ERR(0, 346, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "(tree fragment)":11 +- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] +- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): ++ /* "vidcutter/libs/pympv/mpv.pyx":411 ++ * # mpv_resume(self._ctx) ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def request_event(self, event, enable): ++ * """Enable or disable a given event. + */ +- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_InputDispatch, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "(tree fragment)":1 +- * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result ++ /* "vidcutter/libs/pympv/mpv.pyx":412 ++ * ++ * @_errors ++ * def request_event(self, event, enable): # <<<<<<<<<<<<<< ++ * """Enable or disable a given event. ++ * + */ +- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_LogMessage, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_request_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); ++ } ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_request_event, __pyx_t_7) < 0) __PYX_ERR(0, 412, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "(tree fragment)":11 +- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): ++ /* "vidcutter/libs/pympv/mpv.pyx":429 ++ * return err ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def set_log_level(self, loglevel): ++ * """Wraps: mpv_request_log_messages""" + */ +- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Property, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "(tree fragment)":1 +- * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +- * cdef object __pyx_PickleError +- * cdef object __pyx_result ++ /* "vidcutter/libs/pympv/mpv.pyx":430 ++ * ++ * @_errors ++ * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_request_log_messages""" ++ * assert self._ctx + */ +- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Event, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); ++ } ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 429, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_log_level, __pyx_t_7) < 0) __PYX_ERR(0, 430, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "(tree fragment)":11 +- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) +- * return __pyx_result +- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< +- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] +- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): ++ /* "vidcutter/libs/pympv/mpv.pyx":440 ++ * return err ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def load_config(self, filename): ++ * """Wraps: mpv_load_config_file""" + */ +- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_RenderFrameInfo, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1 +- * # 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 ++ /* "vidcutter/libs/pympv/mpv.pyx":441 ++ * ++ * @_errors ++ * def load_config(self, filename): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_load_config_file""" ++ * assert self._ctx + */ +- __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1, __pyx_L1_error) +- __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_6) < 0) __PYX_ERR(0, 1, __pyx_L1_error) +- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- +- /*--- Wrapped vars code ---*/ +- +- goto __pyx_L0; +- __pyx_L1_error:; +- __Pyx_XDECREF(__pyx_t_1); +- __Pyx_XDECREF(__pyx_t_2); +- __Pyx_XDECREF(__pyx_t_4); +- __Pyx_XDECREF(__pyx_t_6); +- __Pyx_XDECREF(__pyx_t_7); +- if (__pyx_m) { +- if (__pyx_d) { +- __Pyx_AddTraceback("init vidcutter.libs.mpv", __pyx_clineno, __pyx_lineno, __pyx_filename); +- } +- Py_CLEAR(__pyx_m); +- } else if (!PyErr_Occurred()) { +- PyErr_SetString(PyExc_ImportError, "init vidcutter.libs.mpv"); +- } +- __pyx_L0:; +- __Pyx_RefNannyFinishContext(); +- #if CYTHON_PEP489_MULTI_PHASE_INIT +- return (__pyx_m != NULL) ? 0 : -1; +- #elif PY_MAJOR_VERSION >= 3 +- return __pyx_m; +- #else +- return; +- #endif +-} +- +-/* --- Runtime support code --- */ +-/* Refnanny */ +-#if CYTHON_REFNANNY +-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { +- PyObject *m = NULL, *p = NULL; +- void *r = NULL; +- m = PyImport_ImportModule(modname); +- if (!m) goto end; +- p = PyObject_GetAttrString(m, "RefNannyAPI"); +- if (!p) goto end; +- r = PyLong_AsVoidPtr(p); +-end: +- Py_XDECREF(p); +- Py_XDECREF(m); +- return (__Pyx_RefNannyAPIStruct *)r; +-} +-#endif +- +-/* PyObjectGetAttrStr */ +-#if CYTHON_USE_TYPE_SLOTS +-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { +- PyTypeObject* tp = Py_TYPE(obj); +- if (likely(tp->tp_getattro)) +- return tp->tp_getattro(obj, attr_name); +-#if PY_MAJOR_VERSION < 3 +- if (likely(tp->tp_getattr)) +- return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +-#endif +- return PyObject_GetAttr(obj, attr_name); +-} +-#endif +- +-/* GetBuiltinName */ +-static PyObject *__Pyx_GetBuiltinName(PyObject *name) { +- PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); +- if (unlikely(!result)) { +- PyErr_Format(PyExc_NameError, +-#if PY_MAJOR_VERSION >= 3 +- "name '%U' is not defined", name); +-#else +- "name '%.200s' is not defined", PyString_AS_STRING(name)); +-#endif ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_load_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); + } +- return result; +-} ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 440, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_load_config, __pyx_t_7) < 0) __PYX_ERR(0, 441, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +-/* PyDictVersioning */ +-#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +-static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { +- PyObject *dict = Py_TYPE(obj)->tp_dict; +- return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +-} +-static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { +- PyObject **dictptr = NULL; +- Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; +- if (offset) { +-#if CYTHON_COMPILING_IN_CPYTHON +- dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +-#else +- dictptr = _PyObject_GetDictPtr(obj); +-#endif +- } +- return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +-} +-static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { +- PyObject *dict = Py_TYPE(obj)->tp_dict; +- if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) +- return 0; +- return obj_dict_version == __Pyx_get_object_dict_version(obj); +-} +-#endif ++ /* "vidcutter/libs/pympv/mpv.pyx":573 ++ * return result ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def get_property_async(self, prop, data=None): ++ * """Gets the value of a property asynchronously. ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); + +-/* GetModuleGlobalName */ +-#if CYTHON_USE_DICT_VERSIONS +-static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +-#else +-static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +-#endif +-{ +- PyObject *result; +-#if !CYTHON_AVOID_BORROWED_REFS +-#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 +- result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); +- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) +- if (likely(result)) { +- return __Pyx_NewRef(result); +- } else if (unlikely(PyErr_Occurred())) { +- return NULL; +- } +-#else +- result = PyDict_GetItem(__pyx_d, name); +- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) +- if (likely(result)) { +- return __Pyx_NewRef(result); +- } +-#endif +-#else +- result = PyObject_GetItem(__pyx_d, name); +- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) +- if (likely(result)) { +- return __Pyx_NewRef(result); ++ /* "vidcutter/libs/pympv/mpv.pyx":574 ++ * ++ * @_errors ++ * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< ++ * """Gets the value of a property asynchronously. ++ * ++ */ ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); + } +- PyErr_Clear(); +-#endif +- return __Pyx_GetBuiltinName(name); +-} ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 573, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_get_property_async, __pyx_t_7) < 0) __PYX_ERR(0, 574, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +-/* PyFunctionFastCall */ +-#if CYTHON_FAST_PYCALL +-static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, +- PyObject *globals) { +- PyFrameObject *f; +- PyThreadState *tstate = __Pyx_PyThreadState_Current; +- PyObject **fastlocals; +- Py_ssize_t i; +- PyObject *result; +- assert(globals != NULL); +- /* XXX Perhaps we should create a specialized +- PyFrame_New() that doesn't take locals, but does +- take builtins without sanity checking them. +- */ +- assert(tstate != NULL); +- f = PyFrame_New(tstate, co, globals, NULL); +- if (f == NULL) { +- return NULL; +- } +- fastlocals = __Pyx_PyFrame_GetLocalsplus(f); +- for (i = 0; i < na; i++) { +- Py_INCREF(*args); +- fastlocals[i] = *args++; +- } +- result = PyEval_EvalFrameEx(f,0); +- ++tstate->recursion_depth; +- Py_DECREF(f); +- --tstate->recursion_depth; +- return result; +-} +-#if 1 || PY_VERSION_HEX < 0x030600B1 +-static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { +- PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); +- PyObject *globals = PyFunction_GET_GLOBALS(func); +- PyObject *argdefs = PyFunction_GET_DEFAULTS(func); +- PyObject *closure; +-#if PY_MAJOR_VERSION >= 3 +- PyObject *kwdefs; +-#endif +- PyObject *kwtuple, **k; +- PyObject **d; +- Py_ssize_t nd; +- Py_ssize_t nk; +- PyObject *result; +- assert(kwargs == NULL || PyDict_Check(kwargs)); +- nk = kwargs ? PyDict_Size(kwargs) : 0; +- if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { +- return NULL; +- } +- if ( +-#if PY_MAJOR_VERSION >= 3 +- co->co_kwonlyargcount == 0 && +-#endif +- likely(kwargs == NULL || nk == 0) && +- co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { +- if (argdefs == NULL && co->co_argcount == nargs) { +- result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); +- goto done; +- } +- else if (nargs == 0 && argdefs != NULL +- && co->co_argcount == Py_SIZE(argdefs)) { +- /* function called with no arguments, but all parameters have +- a default value: use default values as arguments .*/ +- args = &PyTuple_GET_ITEM(argdefs, 0); +- result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); +- goto done; +- } ++ /* "vidcutter/libs/pympv/mpv.pyx":635 ++ * return v ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def set_property(self, prop, value=True, asynchronous=False, data=None): ++ * """Wraps: mpv_set_property and mpv_set_property_async""" ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 635, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":636 ++ * ++ * @_errors ++ * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_set_property and mpv_set_property_async""" ++ * assert self._ctx ++ */ ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 636, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); + } +- if (kwargs != NULL) { +- Py_ssize_t pos, i; +- kwtuple = PyTuple_New(2 * nk); +- if (kwtuple == NULL) { +- result = NULL; +- goto done; +- } +- k = &PyTuple_GET_ITEM(kwtuple, 0); +- pos = i = 0; +- while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { +- Py_INCREF(k[i]); +- Py_INCREF(k[i+1]); +- i += 2; +- } +- nk = i / 2; ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 635, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_property, __pyx_t_7) < 0) __PYX_ERR(0, 636, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":673 ++ * return err ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def set_option(self, prop, value=True): ++ * """Wraps: mpv_set_option""" ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":674 ++ * ++ * @_errors ++ * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_set_option""" ++ * assert self._ctx ++ */ ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_option); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 674, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); + } +- else { +- kwtuple = NULL; +- k = NULL; ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 673, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_option, __pyx_t_7) < 0) __PYX_ERR(0, 674, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":695 ++ * return err ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def initialize(self): ++ * """Wraps: mpv_initialize""" ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":696 ++ * ++ * @_errors ++ * def initialize(self): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_initialize""" ++ * assert self._ctx ++ */ ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_initialize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); + } +- closure = PyFunction_GET_CLOSURE(func); +-#if PY_MAJOR_VERSION >= 3 +- kwdefs = PyFunction_GET_KW_DEFAULTS(func); +-#endif +- if (argdefs != NULL) { +- d = &PyTuple_GET_ITEM(argdefs, 0); +- nd = Py_SIZE(argdefs); ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 695, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_initialize, __pyx_t_7) < 0) __PYX_ERR(0, 696, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":748 ++ * self.callbackthread.start() ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def observe_property(self, prop, data=None): ++ * """Wraps: mpv_observe_property""" ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 748, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":749 ++ * ++ * @_errors ++ * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_observe_property""" ++ * assert self._ctx ++ */ ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_observe_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); + } +- else { +- d = NULL; +- nd = 0; ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 748, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_observe_property, __pyx_t_7) < 0) __PYX_ERR(0, 749, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":770 ++ * return err ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def unobserve_property(self, data): ++ * """Wraps: mpv_unobserve_property""" ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 770, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":771 ++ * ++ * @_errors ++ * def unobserve_property(self, data): # <<<<<<<<<<<<<< ++ * """Wraps: mpv_unobserve_property""" ++ * assert self._ctx ++ */ ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_unobserve_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 771, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); + } +-#if PY_MAJOR_VERSION >= 3 +- result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, +- args, (int)nargs, +- k, (int)nk, +- d, (int)nd, kwdefs, closure); +-#else +- result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, +- args, (int)nargs, +- k, (int)nk, +- d, (int)nd, closure); +-#endif +- Py_XDECREF(kwtuple); +-done: +- Py_LeaveRecursiveCall(); +- return result; +-} +-#endif +-#endif ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 770, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_unobserve_property, __pyx_t_7) < 0) __PYX_ERR(0, 771, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +-/* PyCFunctionFastCall */ +-#if CYTHON_FAST_PYCCALL +-static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { +- PyCFunctionObject *func = (PyCFunctionObject*)func_obj; +- PyCFunction meth = PyCFunction_GET_FUNCTION(func); +- PyObject *self = PyCFunction_GET_SELF(func); +- int flags = PyCFunction_GET_FLAGS(func); +- assert(PyCFunction_Check(func)); +- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); +- assert(nargs >= 0); +- assert(nargs == 0 || args != NULL); +- /* _PyCFunction_FastCallDict() must not be called with an exception set, +- because it may clear it (directly or indirectly) and so the +- caller loses its exception */ +- assert(!PyErr_Occurred()); +- if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { +- return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); +- } else { +- return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); ++ /* "vidcutter/libs/pympv/mpv.pyx":938 ++ * ++ * cdef class RenderContext(object): ++ * API_OPENGL = "opengl" # <<<<<<<<<<<<<< ++ * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME ++ * ++ */ ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_API_OPENGL, __pyx_n_s_opengl) < 0) __PYX_ERR(0, 938, __pyx_L1_error) ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":939 ++ * cdef class RenderContext(object): ++ * API_OPENGL = "opengl" ++ * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME # <<<<<<<<<<<<<< ++ * ++ * cdef: ++ */ ++ __pyx_t_7 = __Pyx_PyInt_From_enum__mpv_render_update_flag(MPV_RENDER_UPDATE_FRAME); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 939, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_UPDATE_FRAME, __pyx_t_7) < 0) __PYX_ERR(0, 939, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1009 ++ * self.inited = True ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def set_icc_profile(self, icc_blob): ++ * cdef: ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1009, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1010 ++ * ++ * @_errors ++ * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< ++ * cdef: ++ * mpv_render_param param ++ */ ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_icc_profile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1010, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); ++ } ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1009, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_icc_profile, __pyx_t_7) < 0) __PYX_ERR(0, 1010, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1028 ++ * return err ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def set_ambient_light(self, lux): ++ * cdef: ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1028, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1029 ++ * ++ * @_errors ++ * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< ++ * cdef: ++ * mpv_render_param param ++ */ ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_ambient_light); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1029, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); + } +-} +-#endif ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_ambient_light, __pyx_t_7) < 0) __PYX_ERR(0, 1029, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +-/* PyObjectCall */ +-#if CYTHON_COMPILING_IN_CPYTHON +-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { +- PyObject *result; +- ternaryfunc call = func->ob_type->tp_call; +- if (unlikely(!call)) +- return PyObject_Call(func, arg, kw); +- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) +- return NULL; +- result = (*call)(func, arg, kw); +- Py_LeaveRecursiveCall(); +- if (unlikely(!result) && unlikely(!PyErr_Occurred())) { +- PyErr_SetString( +- PyExc_SystemError, +- "NULL result without error in PyObject_Call"); +- } +- return result; +-} +-#endif ++ /* "vidcutter/libs/pympv/mpv.pyx":1068 ++ * return ret ++ * ++ * @_errors # <<<<<<<<<<<<<< ++ * def render(self, ++ * opengl_fbo=None, ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1068, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); + +-/* GetTopmostException */ +-#if CYTHON_USE_EXC_INFO_STACK +-static _PyErr_StackItem * +-__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +-{ +- _PyErr_StackItem *exc_info = tstate->exc_info; +- while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && +- exc_info->previous_item != NULL) +- { +- exc_info = exc_info->previous_item; ++ /* "vidcutter/libs/pympv/mpv.pyx":1069 ++ * ++ * @_errors ++ * def render(self, # <<<<<<<<<<<<<< ++ * opengl_fbo=None, ++ * flip_y=False, ++ */ ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_1 = NULL; ++ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { ++ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); ++ if (likely(__pyx_t_1)) { ++ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); ++ __Pyx_INCREF(__pyx_t_1); ++ __Pyx_INCREF(function); ++ __Pyx_DECREF_SET(__pyx_t_6, function); + } +- return exc_info; +-} +-#endif ++ } ++ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1068, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_render, __pyx_t_7) < 0) __PYX_ERR(0, 1069, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +-/* SaveResetException */ +-#if CYTHON_FAST_THREAD_STATE +-static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +- #if CYTHON_USE_EXC_INFO_STACK +- _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); +- *type = exc_info->exc_type; +- *value = exc_info->exc_value; +- *tb = exc_info->exc_traceback; +- #else +- *type = tstate->exc_type; +- *value = tstate->exc_value; +- *tb = tstate->exc_traceback; +- #endif +- Py_XINCREF(*type); +- Py_XINCREF(*value); +- Py_XINCREF(*tb); +-} +-static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +- PyObject *tmp_type, *tmp_value, *tmp_tb; +- #if CYTHON_USE_EXC_INFO_STACK +- _PyErr_StackItem *exc_info = tstate->exc_info; +- tmp_type = exc_info->exc_type; +- tmp_value = exc_info->exc_value; +- tmp_tb = exc_info->exc_traceback; +- exc_info->exc_type = type; +- exc_info->exc_value = value; +- exc_info->exc_traceback = tb; +- #else +- tmp_type = tstate->exc_type; +- tmp_value = tstate->exc_value; +- tmp_tb = tstate->exc_traceback; +- tstate->exc_type = type; +- tstate->exc_value = value; +- tstate->exc_traceback = tb; +- #endif +- Py_XDECREF(tmp_type); +- Py_XDECREF(tmp_value); +- Py_XDECREF(tmp_tb); +-} +-#endif ++ /* "vidcutter/libs/pympv/mpv.pyx":1132 ++ * init_params, *args, **kwargs) ++ * ++ * class CallbackThread(Thread): # <<<<<<<<<<<<<< ++ * def __init__(self): ++ * Thread.__init__(self) ++ */ ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ __Pyx_GIVEREF(__pyx_t_7); ++ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); ++ __pyx_t_7 = 0; ++ __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_7); ++ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_6, __pyx_n_s_CallbackThread, __pyx_n_s_CallbackThread, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); + +-/* PyErrExceptionMatches */ +-#if CYTHON_FAST_THREAD_STATE +-static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { +- Py_ssize_t i, n; +- n = PyTuple_GET_SIZE(tuple); +-#if PY_MAJOR_VERSION >= 3 +- for (i=0; icurexc_type; +- if (exc_type == err) return 1; +- if (unlikely(!exc_type)) return 0; +- if (unlikely(PyTuple_Check(err))) +- return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); +- return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); +-} +-#endif ++ /* "vidcutter/libs/pympv/mpv.pyx":1133 ++ * ++ * class CallbackThread(Thread): ++ * def __init__(self): # <<<<<<<<<<<<<< ++ * Thread.__init__(self) ++ * self.daemon = True ++ */ ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, 0, __pyx_n_s_CallbackThread___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 1133, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1141 ++ * self.isshutdown = False ++ * ++ * def shutdown(self): # <<<<<<<<<<<<<< ++ * self.isshutdown = True ++ * self.callback = None ++ */ ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, 0, __pyx_n_s_CallbackThread_shutdown, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_shutdown, __pyx_t_1) < 0) __PYX_ERR(0, 1141, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1146 ++ * self.lock.release() ++ * ++ * def call(self): # <<<<<<<<<<<<<< ++ * self.lock.release() ++ * ++ */ ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call, 0, __pyx_n_s_CallbackThread_call, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_call, __pyx_t_1) < 0) __PYX_ERR(0, 1146, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1149 ++ * self.lock.release() ++ * ++ * def set(self, callback): # <<<<<<<<<<<<<< ++ * self.callback = callback ++ * ++ */ ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set, 0, __pyx_n_s_CallbackThread_set, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_set, __pyx_t_1) < 0) __PYX_ERR(0, 1149, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1152 ++ * self.callback = callback ++ * ++ * def run(self): # <<<<<<<<<<<<<< ++ * while not self.isshutdown: ++ * self.lock.acquire(True) ++ */ ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run, 0, __pyx_n_s_CallbackThread_run, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1152, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_run, __pyx_t_1) < 0) __PYX_ERR(0, 1152, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1157 ++ * self.mpv_callback(self.callback) if self.callback else None ++ * ++ * def mpv_callback(self, callback): # <<<<<<<<<<<<<< ++ * try: ++ * callback() ++ */ ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, 0, __pyx_n_s_CallbackThread_mpv_callback, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1157, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mpv_callback, __pyx_t_1) < 0) __PYX_ERR(0, 1157, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ ++ /* "vidcutter/libs/pympv/mpv.pyx":1132 ++ * init_params, *args, **kwargs) ++ * ++ * class CallbackThread(Thread): # <<<<<<<<<<<<<< ++ * def __init__(self): ++ * Thread.__init__(self) ++ */ ++ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_CallbackThread, __pyx_t_6, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_1); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallbackThread, __pyx_t_1) < 0) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; ++ ++ /* "(tree fragment)":1 ++ * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ */ ++ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_EndOfFileReached, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +-/* GetException */ +-#if CYTHON_FAST_THREAD_STATE +-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +-#else +-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +-#endif +-{ +- PyObject *local_type, *local_value, *local_tb; +-#if CYTHON_FAST_THREAD_STATE +- PyObject *tmp_type, *tmp_value, *tmp_tb; +- local_type = tstate->curexc_type; +- local_value = tstate->curexc_value; +- local_tb = tstate->curexc_traceback; +- tstate->curexc_type = 0; +- tstate->curexc_value = 0; +- tstate->curexc_traceback = 0; +-#else +- PyErr_Fetch(&local_type, &local_value, &local_tb); +-#endif +- PyErr_NormalizeException(&local_type, &local_value, &local_tb); +-#if CYTHON_FAST_THREAD_STATE +- if (unlikely(tstate->curexc_type)) +-#else +- if (unlikely(PyErr_Occurred())) +-#endif +- goto bad; +- #if PY_MAJOR_VERSION >= 3 +- if (local_tb) { +- if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) +- goto bad; +- } +- #endif +- Py_XINCREF(local_tb); +- Py_XINCREF(local_type); +- Py_XINCREF(local_value); +- *type = local_type; +- *value = local_value; +- *tb = local_tb; +-#if CYTHON_FAST_THREAD_STATE +- #if CYTHON_USE_EXC_INFO_STACK +- { +- _PyErr_StackItem *exc_info = tstate->exc_info; +- tmp_type = exc_info->exc_type; +- tmp_value = exc_info->exc_value; +- tmp_tb = exc_info->exc_traceback; +- exc_info->exc_type = local_type; +- exc_info->exc_value = local_value; +- exc_info->exc_traceback = local_tb; +- } +- #else +- tmp_type = tstate->exc_type; +- tmp_value = tstate->exc_value; +- tmp_tb = tstate->exc_traceback; +- tstate->exc_type = local_type; +- tstate->exc_value = local_value; +- tstate->exc_traceback = local_tb; +- #endif +- Py_XDECREF(tmp_type); +- Py_XDECREF(tmp_value); +- Py_XDECREF(tmp_tb); +-#else +- PyErr_SetExcInfo(local_type, local_value, local_tb); +-#endif +- return 0; +-bad: +- *type = 0; +- *value = 0; +- *tb = 0; +- Py_XDECREF(local_type); +- Py_XDECREF(local_value); +- Py_XDECREF(local_tb); +- return -1; +-} ++ /* "(tree fragment)":11 ++ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): ++ */ ++ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_LogMessage, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +-/* PyObjectCallMethO */ +-#if CYTHON_COMPILING_IN_CPYTHON +-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { +- PyObject *self, *result; +- PyCFunction cfunc; +- cfunc = PyCFunction_GET_FUNCTION(func); +- self = PyCFunction_GET_SELF(func); +- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) +- return NULL; +- result = cfunc(self, arg); +- Py_LeaveRecursiveCall(); +- if (unlikely(!result) && unlikely(!PyErr_Occurred())) { +- PyErr_SetString( +- PyExc_SystemError, +- "NULL result without error in PyObject_Call"); +- } +- return result; +-} +-#endif ++ /* "(tree fragment)":1 ++ * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ */ ++ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Property, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +-/* PyObjectCallOneArg */ +-#if CYTHON_COMPILING_IN_CPYTHON +-static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { +- PyObject *result; +- PyObject *args = PyTuple_New(1); +- if (unlikely(!args)) return NULL; +- Py_INCREF(arg); +- PyTuple_SET_ITEM(args, 0, arg); +- result = __Pyx_PyObject_Call(func, args, NULL); +- Py_DECREF(args); +- return result; +-} +-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +-#if CYTHON_FAST_PYCALL +- if (PyFunction_Check(func)) { +- return __Pyx_PyFunction_FastCall(func, &arg, 1); +- } +-#endif +- if (likely(PyCFunction_Check(func))) { +- if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { +- return __Pyx_PyObject_CallMethO(func, arg); +-#if CYTHON_FAST_PYCCALL +- } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { +- return __Pyx_PyCFunction_FastCall(func, &arg, 1); +-#endif +- } +- } +- return __Pyx__PyObject_CallOneArg(func, arg); +-} +-#else +-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +- PyObject *result; +- PyObject *args = PyTuple_Pack(1, arg); +- if (unlikely(!args)) return NULL; +- result = __Pyx_PyObject_Call(func, args, NULL); +- Py_DECREF(args); +- return result; +-} +-#endif ++ /* "(tree fragment)":11 ++ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) ++ * return __pyx_result ++ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< ++ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] ++ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): ++ */ ++ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Event, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +-/* PyErrFetchRestore */ +-#if CYTHON_FAST_THREAD_STATE +-static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +- PyObject *tmp_type, *tmp_value, *tmp_tb; +- tmp_type = tstate->curexc_type; +- tmp_value = tstate->curexc_value; +- tmp_tb = tstate->curexc_traceback; +- tstate->curexc_type = type; +- tstate->curexc_value = value; +- tstate->curexc_traceback = tb; +- Py_XDECREF(tmp_type); +- Py_XDECREF(tmp_value); +- Py_XDECREF(tmp_tb); +-} +-static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +- *type = tstate->curexc_type; +- *value = tstate->curexc_value; +- *tb = tstate->curexc_traceback; +- tstate->curexc_type = 0; +- tstate->curexc_value = 0; +- tstate->curexc_traceback = 0; +-} +-#endif ++ /* "(tree fragment)":1 ++ * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< ++ * cdef object __pyx_PickleError ++ * cdef object __pyx_result ++ */ ++ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_RenderFrameInfo, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +-/* GetAttr */ +-static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { +-#if CYTHON_USE_TYPE_SLOTS +-#if PY_MAJOR_VERSION >= 3 +- if (likely(PyUnicode_Check(n))) +-#else +- if (likely(PyString_Check(n))) +-#endif +- return __Pyx_PyObject_GetAttrStr(o, n); +-#endif +- return PyObject_GetAttr(o, n); +-} ++ /* "vidcutter/libs/pympv/mpv.pyx":1 ++ * # 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 ++ */ ++ __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_6); ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_6) < 0) __PYX_ERR(0, 1, __pyx_L1_error) ++ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +-/* GetAttr3 */ +-static PyObject *__Pyx_GetAttr3Default(PyObject *d) { +- __Pyx_PyThreadState_declare +- __Pyx_PyThreadState_assign +- if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) +- return NULL; +- __Pyx_PyErr_Clear(); +- Py_INCREF(d); +- return d; ++ /*--- Wrapped vars code ---*/ ++ ++ goto __pyx_L0; ++ __pyx_L1_error:; ++ __Pyx_XDECREF(__pyx_t_1); ++ __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_6); ++ __Pyx_XDECREF(__pyx_t_7); ++ if (__pyx_m) { ++ if (__pyx_d) { ++ __Pyx_AddTraceback("init vidcutter.libs.mpv", __pyx_clineno, __pyx_lineno, __pyx_filename); ++ } ++ Py_CLEAR(__pyx_m); ++ } else if (!PyErr_Occurred()) { ++ PyErr_SetString(PyExc_ImportError, "init vidcutter.libs.mpv"); ++ } ++ __pyx_L0:; ++ __Pyx_RefNannyFinishContext(); ++ #if CYTHON_PEP489_MULTI_PHASE_INIT ++ return (__pyx_m != NULL) ? 0 : -1; ++ #elif PY_MAJOR_VERSION >= 3 ++ return __pyx_m; ++ #else ++ return; ++ #endif + } +-static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { +- PyObject *r = __Pyx_GetAttr(o, n); +- return (likely(r)) ? r : __Pyx_GetAttr3Default(d); ++ ++/* --- Runtime support code --- */ ++/* Refnanny */ ++#if CYTHON_REFNANNY ++static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { ++ PyObject *m = NULL, *p = NULL; ++ void *r = NULL; ++ m = PyImport_ImportModule(modname); ++ if (!m) goto end; ++ p = PyObject_GetAttrString(m, "RefNannyAPI"); ++ if (!p) goto end; ++ r = PyLong_AsVoidPtr(p); ++end: ++ Py_XDECREF(p); ++ Py_XDECREF(m); ++ return (__Pyx_RefNannyAPIStruct *)r; + } ++#endif + +-/* PyObjectCall2Args */ +-static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { +- PyObject *args, *result = NULL; +- #if CYTHON_FAST_PYCALL +- if (PyFunction_Check(function)) { +- PyObject *args[2] = {arg1, arg2}; +- return __Pyx_PyFunction_FastCall(function, args, 2); +- } +- #endif +- #if CYTHON_FAST_PYCCALL +- if (__Pyx_PyFastCFunction_Check(function)) { +- PyObject *args[2] = {arg1, arg2}; +- return __Pyx_PyCFunction_FastCall(function, args, 2); +- } +- #endif +- args = PyTuple_New(2); +- if (unlikely(!args)) goto done; +- Py_INCREF(arg1); +- PyTuple_SET_ITEM(args, 0, arg1); +- Py_INCREF(arg2); +- PyTuple_SET_ITEM(args, 1, arg2); +- Py_INCREF(function); +- result = __Pyx_PyObject_Call(function, args, NULL); +- Py_DECREF(args); +- Py_DECREF(function); +-done: +- return result; ++/* PyObjectGetAttrStr */ ++#if CYTHON_USE_TYPE_SLOTS ++static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { ++ PyTypeObject* tp = Py_TYPE(obj); ++ if (likely(tp->tp_getattro)) ++ return tp->tp_getattro(obj, attr_name); ++#if PY_MAJOR_VERSION < 3 ++ if (likely(tp->tp_getattr)) ++ return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); ++#endif ++ return PyObject_GetAttr(obj, attr_name); + } +- +-/* PyObjectGetMethod */ +-static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { +- PyObject *attr; +-#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP +- PyTypeObject *tp = Py_TYPE(obj); +- PyObject *descr; +- descrgetfunc f = NULL; +- PyObject **dictptr, *dict; +- int meth_found = 0; +- assert (*method == NULL); +- if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { +- attr = __Pyx_PyObject_GetAttrStr(obj, name); +- goto try_unpack; +- } +- if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { +- return 0; +- } +- descr = _PyType_Lookup(tp, name); +- if (likely(descr != NULL)) { +- Py_INCREF(descr); +-#if PY_MAJOR_VERSION >= 3 +- #ifdef __Pyx_CyFunction_USED +- if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) +- #else +- if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type))) +- #endif +-#else +- #ifdef __Pyx_CyFunction_USED +- if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) +- #else +- if (likely(PyFunction_Check(descr))) +- #endif + #endif +- { +- meth_found = 1; +- } else { +- f = Py_TYPE(descr)->tp_descr_get; +- if (f != NULL && PyDescr_IsData(descr)) { +- attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); +- Py_DECREF(descr); +- goto try_unpack; +- } +- } +- } +- dictptr = _PyObject_GetDictPtr(obj); +- if (dictptr != NULL && (dict = *dictptr) != NULL) { +- Py_INCREF(dict); +- attr = __Pyx_PyDict_GetItemStr(dict, name); +- if (attr != NULL) { +- Py_INCREF(attr); +- Py_DECREF(dict); +- Py_XDECREF(descr); +- goto try_unpack; +- } +- Py_DECREF(dict); +- } +- if (meth_found) { +- *method = descr; +- return 1; +- } +- if (f != NULL) { +- attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); +- Py_DECREF(descr); +- goto try_unpack; +- } +- if (descr != NULL) { +- *method = descr; +- return 0; +- } +- PyErr_Format(PyExc_AttributeError, ++ ++/* GetBuiltinName */ ++static PyObject *__Pyx_GetBuiltinName(PyObject *name) { ++ PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); ++ if (unlikely(!result)) { ++ PyErr_Format(PyExc_NameError, + #if PY_MAJOR_VERSION >= 3 +- "'%.50s' object has no attribute '%U'", +- tp->tp_name, name); +-#else +- "'%.50s' object has no attribute '%.400s'", +- tp->tp_name, PyString_AS_STRING(name)); +-#endif +- return 0; ++ "name '%U' is not defined", name); + #else +- attr = __Pyx_PyObject_GetAttrStr(obj, name); +- goto try_unpack; ++ "name '%.200s' is not defined", PyString_AS_STRING(name)); + #endif +-try_unpack: +-#if CYTHON_UNPACK_METHODS +- if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { +- PyObject *function = PyMethod_GET_FUNCTION(attr); +- Py_INCREF(function); +- Py_DECREF(attr); +- *method = function; +- return 1; + } +-#endif +- *method = attr; +- return 0; +-} +- +-/* PyObjectCallMethod1 */ +-static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { +- PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); +- Py_DECREF(method); + return result; + } +-static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { +- PyObject *method = NULL, *result; +- int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); +- if (likely(is_method)) { +- result = __Pyx_PyObject_Call2Args(method, obj, arg); +- Py_DECREF(method); +- return result; +- } +- if (unlikely(!method)) return NULL; +- return __Pyx__PyObject_CallMethod1(method, arg); +-} + +-/* append */ +-static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { +- if (likely(PyList_CheckExact(L))) { +- if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; +- } else { +- PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); +- if (unlikely(!retval)) +- return -1; +- Py_DECREF(retval); +- } +- return 0; ++/* PyDictVersioning */ ++#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS ++static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { ++ PyObject *dict = Py_TYPE(obj)->tp_dict; ++ return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; + } +- +-/* PyObjectCallNoArg */ ++static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { ++ PyObject **dictptr = NULL; ++ Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; ++ if (offset) { + #if CYTHON_COMPILING_IN_CPYTHON +-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { +-#if CYTHON_FAST_PYCALL +- if (PyFunction_Check(func)) { +- return __Pyx_PyFunction_FastCall(func, NULL, 0); +- } +-#endif +-#ifdef __Pyx_CyFunction_USED +- if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) ++ dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); + #else +- if (likely(PyCFunction_Check(func))) ++ dictptr = _PyObject_GetDictPtr(obj); + #endif +- { +- if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { +- return __Pyx_PyObject_CallMethO(func, NULL); +- } + } +- return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); ++ return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; ++} ++static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { ++ PyObject *dict = Py_TYPE(obj)->tp_dict; ++ if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) ++ return 0; ++ return obj_dict_version == __Pyx_get_object_dict_version(obj); + } + #endif + +-/* GetItemInt */ +-static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { +- PyObject *r; +- if (!j) return NULL; +- r = PyObject_GetItem(o, j); +- Py_DECREF(j); +- return r; +-} +-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, +- CYTHON_NCP_UNUSED int wraparound, +- CYTHON_NCP_UNUSED int boundscheck) { +-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- Py_ssize_t wrapped_i = i; +- if (wraparound & unlikely(i < 0)) { +- wrapped_i += PyList_GET_SIZE(o); ++/* GetModuleGlobalName */ ++#if CYTHON_USE_DICT_VERSIONS ++static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) ++#else ++static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) ++#endif ++{ ++ PyObject *result; ++#if !CYTHON_AVOID_BORROWED_REFS ++#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 ++ result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); ++ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) ++ if (likely(result)) { ++ return __Pyx_NewRef(result); ++ } else if (unlikely(PyErr_Occurred())) { ++ return NULL; + } +- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { +- PyObject *r = PyList_GET_ITEM(o, wrapped_i); +- Py_INCREF(r); +- return r; ++#else ++ result = PyDict_GetItem(__pyx_d, name); ++ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) ++ if (likely(result)) { ++ return __Pyx_NewRef(result); ++ } ++#endif ++#else ++ result = PyObject_GetItem(__pyx_d, name); ++ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) ++ if (likely(result)) { ++ return __Pyx_NewRef(result); + } +- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +-#else +- return PySequence_GetItem(o, i); ++ PyErr_Clear(); + #endif ++ return __Pyx_GetBuiltinName(name); + } +-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, +- CYTHON_NCP_UNUSED int wraparound, +- CYTHON_NCP_UNUSED int boundscheck) { +-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- Py_ssize_t wrapped_i = i; +- if (wraparound & unlikely(i < 0)) { +- wrapped_i += PyTuple_GET_SIZE(o); ++ ++/* PyFunctionFastCall */ ++#if CYTHON_FAST_PYCALL ++static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, ++ PyObject *globals) { ++ PyFrameObject *f; ++ PyThreadState *tstate = __Pyx_PyThreadState_Current; ++ PyObject **fastlocals; ++ Py_ssize_t i; ++ PyObject *result; ++ assert(globals != NULL); ++ /* XXX Perhaps we should create a specialized ++ PyFrame_New() that doesn't take locals, but does ++ take builtins without sanity checking them. ++ */ ++ assert(tstate != NULL); ++ f = PyFrame_New(tstate, co, globals, NULL); ++ if (f == NULL) { ++ return NULL; + } +- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { +- PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); +- Py_INCREF(r); +- return r; ++ fastlocals = __Pyx_PyFrame_GetLocalsplus(f); ++ for (i = 0; i < na; i++) { ++ Py_INCREF(*args); ++ fastlocals[i] = *args++; + } +- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +-#else +- return PySequence_GetItem(o, i); +-#endif ++ result = PyEval_EvalFrameEx(f,0); ++ ++tstate->recursion_depth; ++ Py_DECREF(f); ++ --tstate->recursion_depth; ++ return result; + } +-static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, +- CYTHON_NCP_UNUSED int wraparound, +- CYTHON_NCP_UNUSED int boundscheck) { +-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS +- if (is_list || PyList_CheckExact(o)) { +- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); +- if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { +- PyObject *r = PyList_GET_ITEM(o, n); +- Py_INCREF(r); +- return r; ++#if 1 || PY_VERSION_HEX < 0x030600B1 ++static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { ++ PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); ++ PyObject *globals = PyFunction_GET_GLOBALS(func); ++ PyObject *argdefs = PyFunction_GET_DEFAULTS(func); ++ PyObject *closure; ++#if PY_MAJOR_VERSION >= 3 ++ PyObject *kwdefs; ++#endif ++ PyObject *kwtuple, **k; ++ PyObject **d; ++ Py_ssize_t nd; ++ Py_ssize_t nk; ++ PyObject *result; ++ assert(kwargs == NULL || PyDict_Check(kwargs)); ++ nk = kwargs ? PyDict_Size(kwargs) : 0; ++ if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { ++ return NULL; ++ } ++ if ( ++#if PY_MAJOR_VERSION >= 3 ++ co->co_kwonlyargcount == 0 && ++#endif ++ likely(kwargs == NULL || nk == 0) && ++ co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { ++ if (argdefs == NULL && co->co_argcount == nargs) { ++ result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); ++ goto done; ++ } ++ else if (nargs == 0 && argdefs != NULL ++ && co->co_argcount == Py_SIZE(argdefs)) { ++ /* function called with no arguments, but all parameters have ++ a default value: use default values as arguments .*/ ++ args = &PyTuple_GET_ITEM(argdefs, 0); ++ result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); ++ goto done; + } + } +- else if (PyTuple_CheckExact(o)) { +- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); +- if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { +- PyObject *r = PyTuple_GET_ITEM(o, n); +- Py_INCREF(r); +- return r; ++ if (kwargs != NULL) { ++ Py_ssize_t pos, i; ++ kwtuple = PyTuple_New(2 * nk); ++ if (kwtuple == NULL) { ++ result = NULL; ++ goto done; + } +- } else { +- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; +- if (likely(m && m->sq_item)) { +- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { +- Py_ssize_t l = m->sq_length(o); +- if (likely(l >= 0)) { +- i += l; +- } else { +- if (!PyErr_ExceptionMatches(PyExc_OverflowError)) +- return NULL; +- PyErr_Clear(); +- } +- } +- return m->sq_item(o, i); ++ k = &PyTuple_GET_ITEM(kwtuple, 0); ++ pos = i = 0; ++ while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { ++ Py_INCREF(k[i]); ++ Py_INCREF(k[i+1]); ++ i += 2; + } ++ nk = i / 2; + } +-#else +- if (is_list || PySequence_Check(o)) { +- return PySequence_GetItem(o, i); ++ else { ++ kwtuple = NULL; ++ k = NULL; + } ++ closure = PyFunction_GET_CLOSURE(func); ++#if PY_MAJOR_VERSION >= 3 ++ kwdefs = PyFunction_GET_KW_DEFAULTS(func); + #endif +- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +-} +- +-/* DelItemInt */ +-static int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) { +- int r; +- if (!j) return -1; +- r = PyObject_DelItem(o, j); +- Py_DECREF(j); +- return r; +-} +-static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i, +- CYTHON_UNUSED int is_list, CYTHON_NCP_UNUSED int wraparound) { +-#if !CYTHON_USE_TYPE_SLOTS +- if (is_list || PySequence_Check(o)) { +- return PySequence_DelItem(o, i); ++ if (argdefs != NULL) { ++ d = &PyTuple_GET_ITEM(argdefs, 0); ++ nd = Py_SIZE(argdefs); ++ } ++ else { ++ d = NULL; ++ nd = 0; + } ++#if PY_MAJOR_VERSION >= 3 ++ result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, ++ args, (int)nargs, ++ k, (int)nk, ++ d, (int)nd, kwdefs, closure); + #else +- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; +- if (likely(m && m->sq_ass_item)) { +- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { +- Py_ssize_t l = m->sq_length(o); +- if (likely(l >= 0)) { +- i += l; +- } else { +- if (!PyErr_ExceptionMatches(PyExc_OverflowError)) +- return -1; +- PyErr_Clear(); +- } +- } +- return m->sq_ass_item(o, i, (PyObject *)NULL); ++ result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, ++ args, (int)nargs, ++ k, (int)nk, ++ d, (int)nd, closure); ++#endif ++ Py_XDECREF(kwtuple); ++done: ++ Py_LeaveRecursiveCall(); ++ return result; ++} ++#endif ++#endif ++ ++/* PyCFunctionFastCall */ ++#if CYTHON_FAST_PYCCALL ++static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { ++ PyCFunctionObject *func = (PyCFunctionObject*)func_obj; ++ PyCFunction meth = PyCFunction_GET_FUNCTION(func); ++ PyObject *self = PyCFunction_GET_SELF(func); ++ int flags = PyCFunction_GET_FLAGS(func); ++ assert(PyCFunction_Check(func)); ++ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); ++ assert(nargs >= 0); ++ assert(nargs == 0 || args != NULL); ++ /* _PyCFunction_FastCallDict() must not be called with an exception set, ++ because it may clear it (directly or indirectly) and so the ++ caller loses its exception */ ++ assert(!PyErr_Occurred()); ++ if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { ++ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); ++ } else { ++ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); + } ++} + #endif +- return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i)); ++ ++/* PyObjectCall */ ++#if CYTHON_COMPILING_IN_CPYTHON ++static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { ++ PyObject *result; ++ ternaryfunc call = Py_TYPE(func)->tp_call; ++ if (unlikely(!call)) ++ return PyObject_Call(func, arg, kw); ++ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) ++ return NULL; ++ result = (*call)(func, arg, kw); ++ Py_LeaveRecursiveCall(); ++ if (unlikely(!result) && unlikely(!PyErr_Occurred())) { ++ PyErr_SetString( ++ PyExc_SystemError, ++ "NULL result without error in PyObject_Call"); ++ } ++ return result; + } ++#endif + +-/* KeywordStringCheck */ +-static int __Pyx_CheckKeywordStrings( +- PyObject *kwdict, +- const char* function_name, +- int kw_allowed) ++/* GetTopmostException */ ++#if CYTHON_USE_EXC_INFO_STACK ++static _PyErr_StackItem * ++__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) + { +- PyObject* key = 0; +- Py_ssize_t pos = 0; +-#if CYTHON_COMPILING_IN_PYPY +- if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) +- goto invalid_keyword; +- return 1; +-#else +- while (PyDict_Next(kwdict, &pos, &key, 0)) { +- #if PY_MAJOR_VERSION < 3 +- if (unlikely(!PyString_Check(key))) +- #endif +- if (unlikely(!PyUnicode_Check(key))) +- goto invalid_keyword_type; ++ _PyErr_StackItem *exc_info = tstate->exc_info; ++ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && ++ exc_info->previous_item != NULL) ++ { ++ exc_info = exc_info->previous_item; + } +- if ((!kw_allowed) && unlikely(key)) +- goto invalid_keyword; +- return 1; +-invalid_keyword_type: +- PyErr_Format(PyExc_TypeError, +- "%.200s() keywords must be strings", function_name); +- return 0; ++ return exc_info; ++} + #endif +-invalid_keyword: +- PyErr_Format(PyExc_TypeError, +- #if PY_MAJOR_VERSION < 3 +- "%.200s() got an unexpected keyword argument '%.200s'", +- function_name, PyString_AsString(key)); ++ ++/* SaveResetException */ ++#if CYTHON_FAST_THREAD_STATE ++static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { ++ #if CYTHON_USE_EXC_INFO_STACK ++ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); ++ *type = exc_info->exc_type; ++ *value = exc_info->exc_value; ++ *tb = exc_info->exc_traceback; + #else +- "%s() got an unexpected keyword argument '%U'", +- function_name, key); ++ *type = tstate->exc_type; ++ *value = tstate->exc_value; ++ *tb = tstate->exc_traceback; + #endif +- return 0; ++ Py_XINCREF(*type); ++ Py_XINCREF(*value); ++ Py_XINCREF(*tb); + } +- +-/* None */ +-static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) { +- PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname); ++static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { ++ PyObject *tmp_type, *tmp_value, *tmp_tb; ++ #if CYTHON_USE_EXC_INFO_STACK ++ _PyErr_StackItem *exc_info = tstate->exc_info; ++ tmp_type = exc_info->exc_type; ++ tmp_value = exc_info->exc_value; ++ tmp_tb = exc_info->exc_traceback; ++ exc_info->exc_type = type; ++ exc_info->exc_value = value; ++ exc_info->exc_traceback = tb; ++ #else ++ tmp_type = tstate->exc_type; ++ tmp_value = tstate->exc_value; ++ tmp_tb = tstate->exc_traceback; ++ tstate->exc_type = type; ++ tstate->exc_value = value; ++ tstate->exc_traceback = tb; ++ #endif ++ Py_XDECREF(tmp_type); ++ Py_XDECREF(tmp_value); ++ Py_XDECREF(tmp_tb); + } ++#endif + +-/* RaiseException */ +-#if PY_MAJOR_VERSION < 3 +-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, +- CYTHON_UNUSED PyObject *cause) { +- __Pyx_PyThreadState_declare +- Py_XINCREF(type); +- if (!value || value == Py_None) +- value = NULL; +- else +- Py_INCREF(value); +- if (!tb || tb == Py_None) +- tb = NULL; +- else { +- Py_INCREF(tb); +- if (!PyTraceBack_Check(tb)) { +- PyErr_SetString(PyExc_TypeError, +- "raise: arg 3 must be a traceback or None"); +- goto raise_error; +- } ++/* PyErrExceptionMatches */ ++#if CYTHON_FAST_THREAD_STATE ++static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { ++ Py_ssize_t i, n; ++ n = PyTuple_GET_SIZE(tuple); ++#if PY_MAJOR_VERSION >= 3 ++ for (i=0; icurexc_type; ++ if (exc_type == err) return 1; ++ if (unlikely(!exc_type)) return 0; ++ if (unlikely(PyTuple_Check(err))) ++ return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); ++ return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } ++#endif ++ ++/* GetException */ ++#if CYTHON_FAST_THREAD_STATE ++static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) + #else +-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { +- PyObject* owned_instance = NULL; +- if (tb == Py_None) { +- tb = 0; +- } else if (tb && !PyTraceBack_Check(tb)) { +- PyErr_SetString(PyExc_TypeError, +- "raise: arg 3 must be a traceback or None"); ++static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) ++#endif ++{ ++ PyObject *local_type, *local_value, *local_tb; ++#if CYTHON_FAST_THREAD_STATE ++ PyObject *tmp_type, *tmp_value, *tmp_tb; ++ local_type = tstate->curexc_type; ++ local_value = tstate->curexc_value; ++ local_tb = tstate->curexc_traceback; ++ tstate->curexc_type = 0; ++ tstate->curexc_value = 0; ++ tstate->curexc_traceback = 0; ++#else ++ PyErr_Fetch(&local_type, &local_value, &local_tb); ++#endif ++ PyErr_NormalizeException(&local_type, &local_value, &local_tb); ++#if CYTHON_FAST_THREAD_STATE ++ if (unlikely(tstate->curexc_type)) ++#else ++ if (unlikely(PyErr_Occurred())) ++#endif + goto bad; +- } +- if (value == Py_None) +- value = 0; +- if (PyExceptionInstance_Check(type)) { +- if (value) { +- PyErr_SetString(PyExc_TypeError, +- "instance exception may not have a separate value"); ++ #if PY_MAJOR_VERSION >= 3 ++ if (local_tb) { ++ if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; +- } +- value = type; +- type = (PyObject*) Py_TYPE(value); +- } else if (PyExceptionClass_Check(type)) { +- PyObject *instance_class = NULL; +- if (value && PyExceptionInstance_Check(value)) { +- instance_class = (PyObject*) Py_TYPE(value); +- if (instance_class != type) { +- int is_subclass = PyObject_IsSubclass(instance_class, type); +- if (!is_subclass) { +- instance_class = NULL; +- } else if (unlikely(is_subclass == -1)) { +- goto bad; +- } else { +- type = instance_class; +- } +- } +- } +- if (!instance_class) { +- PyObject *args; +- if (!value) +- args = PyTuple_New(0); +- else if (PyTuple_Check(value)) { +- Py_INCREF(value); +- args = value; +- } else +- args = PyTuple_Pack(1, value); +- if (!args) +- goto bad; +- owned_instance = PyObject_Call(type, args, NULL); +- Py_DECREF(args); +- if (!owned_instance) +- goto bad; +- value = owned_instance; +- if (!PyExceptionInstance_Check(value)) { +- PyErr_Format(PyExc_TypeError, +- "calling %R should have returned an instance of " +- "BaseException, not %R", +- type, Py_TYPE(value)); +- goto bad; +- } +- } +- } else { +- PyErr_SetString(PyExc_TypeError, +- "raise: exception class must be a subclass of BaseException"); +- goto bad; + } +- if (cause) { +- PyObject *fixed_cause; +- if (cause == Py_None) { +- fixed_cause = NULL; +- } else if (PyExceptionClass_Check(cause)) { +- fixed_cause = PyObject_CallObject(cause, NULL); +- if (fixed_cause == NULL) +- goto bad; +- } else if (PyExceptionInstance_Check(cause)) { +- fixed_cause = cause; +- Py_INCREF(fixed_cause); +- } else { +- PyErr_SetString(PyExc_TypeError, +- "exception causes must derive from " +- "BaseException"); +- goto bad; ++ #endif ++ Py_XINCREF(local_tb); ++ Py_XINCREF(local_type); ++ Py_XINCREF(local_value); ++ *type = local_type; ++ *value = local_value; ++ *tb = local_tb; ++#if CYTHON_FAST_THREAD_STATE ++ #if CYTHON_USE_EXC_INFO_STACK ++ { ++ _PyErr_StackItem *exc_info = tstate->exc_info; ++ tmp_type = exc_info->exc_type; ++ tmp_value = exc_info->exc_value; ++ tmp_tb = exc_info->exc_traceback; ++ exc_info->exc_type = local_type; ++ exc_info->exc_value = local_value; ++ exc_info->exc_traceback = local_tb; ++ } ++ #else ++ tmp_type = tstate->exc_type; ++ tmp_value = tstate->exc_value; ++ tmp_tb = tstate->exc_traceback; ++ tstate->exc_type = local_type; ++ tstate->exc_value = local_value; ++ tstate->exc_traceback = local_tb; ++ #endif ++ Py_XDECREF(tmp_type); ++ Py_XDECREF(tmp_value); ++ Py_XDECREF(tmp_tb); ++#else ++ PyErr_SetExcInfo(local_type, local_value, local_tb); ++#endif ++ return 0; ++bad: ++ *type = 0; ++ *value = 0; ++ *tb = 0; ++ Py_XDECREF(local_type); ++ Py_XDECREF(local_value); ++ Py_XDECREF(local_tb); ++ return -1; ++} ++ ++/* PyObjectCallMethO */ ++#if CYTHON_COMPILING_IN_CPYTHON ++static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { ++ PyObject *self, *result; ++ PyCFunction cfunc; ++ cfunc = PyCFunction_GET_FUNCTION(func); ++ self = PyCFunction_GET_SELF(func); ++ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) ++ return NULL; ++ result = cfunc(self, arg); ++ Py_LeaveRecursiveCall(); ++ if (unlikely(!result) && unlikely(!PyErr_Occurred())) { ++ PyErr_SetString( ++ PyExc_SystemError, ++ "NULL result without error in PyObject_Call"); ++ } ++ return result; ++} ++#endif ++ ++/* PyObjectCallOneArg */ ++#if CYTHON_COMPILING_IN_CPYTHON ++static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { ++ PyObject *result; ++ PyObject *args = PyTuple_New(1); ++ if (unlikely(!args)) return NULL; ++ Py_INCREF(arg); ++ PyTuple_SET_ITEM(args, 0, arg); ++ result = __Pyx_PyObject_Call(func, args, NULL); ++ Py_DECREF(args); ++ return result; ++} ++static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { ++#if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(func)) { ++ return __Pyx_PyFunction_FastCall(func, &arg, 1); ++ } ++#endif ++ if (likely(PyCFunction_Check(func))) { ++ if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { ++ return __Pyx_PyObject_CallMethO(func, arg); ++#if CYTHON_FAST_PYCCALL ++ } else if (__Pyx_PyFastCFunction_Check(func)) { ++ return __Pyx_PyCFunction_FastCall(func, &arg, 1); ++#endif + } +- PyException_SetCause(value, fixed_cause); + } +- PyErr_SetObject(type, value); +- if (tb) { +-#if CYTHON_COMPILING_IN_PYPY +- PyObject *tmp_type, *tmp_value, *tmp_tb; +- PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); +- Py_INCREF(tb); +- PyErr_Restore(tmp_type, tmp_value, tb); +- Py_XDECREF(tmp_tb); ++ return __Pyx__PyObject_CallOneArg(func, arg); ++} + #else +- PyThreadState *tstate = __Pyx_PyThreadState_Current; +- PyObject* tmp_tb = tstate->curexc_traceback; +- if (tb != tmp_tb) { +- Py_INCREF(tb); +- tstate->curexc_traceback = tb; +- Py_XDECREF(tmp_tb); +- } ++static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { ++ PyObject *result; ++ PyObject *args = PyTuple_Pack(1, arg); ++ if (unlikely(!args)) return NULL; ++ result = __Pyx_PyObject_Call(func, args, NULL); ++ Py_DECREF(args); ++ return result; ++} + #endif +- } +-bad: +- Py_XDECREF(owned_instance); +- return; ++ ++/* PyErrFetchRestore */ ++#if CYTHON_FAST_THREAD_STATE ++static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { ++ PyObject *tmp_type, *tmp_value, *tmp_tb; ++ tmp_type = tstate->curexc_type; ++ tmp_value = tstate->curexc_value; ++ tmp_tb = tstate->curexc_traceback; ++ tstate->curexc_type = type; ++ tstate->curexc_value = value; ++ tstate->curexc_traceback = tb; ++ Py_XDECREF(tmp_type); ++ Py_XDECREF(tmp_value); ++ Py_XDECREF(tmp_tb); ++} ++static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { ++ *type = tstate->curexc_type; ++ *value = tstate->curexc_value; ++ *tb = tstate->curexc_traceback; ++ tstate->curexc_type = 0; ++ tstate->curexc_value = 0; ++ tstate->curexc_traceback = 0; + } + #endif + +-/* FetchCommonType */ +-static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { +- PyObject* fake_module; +- PyTypeObject* cached_type = NULL; +- fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); +- if (!fake_module) return NULL; +- Py_INCREF(fake_module); +- cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); +- if (cached_type) { +- if (!PyType_Check((PyObject*)cached_type)) { +- PyErr_Format(PyExc_TypeError, +- "Shared Cython type %.200s is not a type object", +- type->tp_name); +- goto bad; +- } +- if (cached_type->tp_basicsize != type->tp_basicsize) { +- PyErr_Format(PyExc_TypeError, +- "Shared Cython type %.200s has the wrong size, try recompiling", +- type->tp_name); +- goto bad; +- } +- } else { +- if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; +- PyErr_Clear(); +- if (PyType_Ready(type) < 0) goto bad; +- if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) +- goto bad; +- Py_INCREF(type); +- cached_type = type; ++/* GetAttr */ ++static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { ++#if CYTHON_USE_TYPE_SLOTS ++#if PY_MAJOR_VERSION >= 3 ++ if (likely(PyUnicode_Check(n))) ++#else ++ if (likely(PyString_Check(n))) ++#endif ++ return __Pyx_PyObject_GetAttrStr(o, n); ++#endif ++ return PyObject_GetAttr(o, n); ++} ++ ++/* GetAttr3 */ ++static PyObject *__Pyx_GetAttr3Default(PyObject *d) { ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) ++ return NULL; ++ __Pyx_PyErr_Clear(); ++ Py_INCREF(d); ++ return d; ++} ++static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { ++ PyObject *r = __Pyx_GetAttr(o, n); ++ return (likely(r)) ? r : __Pyx_GetAttr3Default(d); ++} ++ ++/* PyObjectCall2Args */ ++static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { ++ PyObject *args, *result = NULL; ++ #if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(function)) { ++ PyObject *args[2] = {arg1, arg2}; ++ return __Pyx_PyFunction_FastCall(function, args, 2); ++ } ++ #endif ++ #if CYTHON_FAST_PYCCALL ++ if (__Pyx_PyFastCFunction_Check(function)) { ++ PyObject *args[2] = {arg1, arg2}; ++ return __Pyx_PyCFunction_FastCall(function, args, 2); + } ++ #endif ++ args = PyTuple_New(2); ++ if (unlikely(!args)) goto done; ++ Py_INCREF(arg1); ++ PyTuple_SET_ITEM(args, 0, arg1); ++ Py_INCREF(arg2); ++ PyTuple_SET_ITEM(args, 1, arg2); ++ Py_INCREF(function); ++ result = __Pyx_PyObject_Call(function, args, NULL); ++ Py_DECREF(args); ++ Py_DECREF(function); + done: +- Py_DECREF(fake_module); +- return cached_type; +-bad: +- Py_XDECREF(cached_type); +- cached_type = NULL; +- goto done; ++ return result; + } + +-/* CythonFunctionShared */ +-#include +-static PyObject * +-__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) +-{ +- if (unlikely(op->func_doc == NULL)) { +- if (op->func.m_ml->ml_doc) { ++/* PyObjectGetMethod */ ++static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { ++ PyObject *attr; ++#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP ++ PyTypeObject *tp = Py_TYPE(obj); ++ PyObject *descr; ++ descrgetfunc f = NULL; ++ PyObject **dictptr, *dict; ++ int meth_found = 0; ++ assert (*method == NULL); ++ if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { ++ attr = __Pyx_PyObject_GetAttrStr(obj, name); ++ goto try_unpack; ++ } ++ if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { ++ return 0; ++ } ++ descr = _PyType_Lookup(tp, name); ++ if (likely(descr != NULL)) { ++ Py_INCREF(descr); + #if PY_MAJOR_VERSION >= 3 +- op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); ++ #ifdef __Pyx_CyFunction_USED ++ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) ++ #else ++ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type))) ++ #endif + #else +- op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); ++ #ifdef __Pyx_CyFunction_USED ++ if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) ++ #else ++ if (likely(PyFunction_Check(descr))) ++ #endif + #endif +- if (unlikely(op->func_doc == NULL)) +- return NULL; ++ { ++ meth_found = 1; + } else { +- Py_INCREF(Py_None); +- return Py_None; ++ f = Py_TYPE(descr)->tp_descr_get; ++ if (f != NULL && PyDescr_IsData(descr)) { ++ attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); ++ Py_DECREF(descr); ++ goto try_unpack; ++ } ++ } ++ } ++ dictptr = _PyObject_GetDictPtr(obj); ++ if (dictptr != NULL && (dict = *dictptr) != NULL) { ++ Py_INCREF(dict); ++ attr = __Pyx_PyDict_GetItemStr(dict, name); ++ if (attr != NULL) { ++ Py_INCREF(attr); ++ Py_DECREF(dict); ++ Py_XDECREF(descr); ++ goto try_unpack; + } ++ Py_DECREF(dict); + } +- Py_INCREF(op->func_doc); +- return op->func_doc; +-} +-static int +-__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) +-{ +- PyObject *tmp = op->func_doc; +- if (value == NULL) { +- value = Py_None; ++ if (meth_found) { ++ *method = descr; ++ return 1; + } +- Py_INCREF(value); +- op->func_doc = value; +- Py_XDECREF(tmp); +- return 0; +-} +-static PyObject * +-__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) +-{ +- if (unlikely(op->func_name == NULL)) { +-#if PY_MAJOR_VERSION >= 3 +- op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); +-#else +- op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); +-#endif +- if (unlikely(op->func_name == NULL)) +- return NULL; ++ if (f != NULL) { ++ attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); ++ Py_DECREF(descr); ++ goto try_unpack; + } +- Py_INCREF(op->func_name); +- return op->func_name; +-} +-static int +-__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) +-{ +- PyObject *tmp; ++ if (descr != NULL) { ++ *method = descr; ++ return 0; ++ } ++ PyErr_Format(PyExc_AttributeError, + #if PY_MAJOR_VERSION >= 3 +- if (unlikely(value == NULL || !PyUnicode_Check(value))) ++ "'%.50s' object has no attribute '%U'", ++ tp->tp_name, name); + #else +- if (unlikely(value == NULL || !PyString_Check(value))) ++ "'%.50s' object has no attribute '%.400s'", ++ tp->tp_name, PyString_AS_STRING(name)); + #endif +- { +- PyErr_SetString(PyExc_TypeError, +- "__name__ must be set to a string object"); +- return -1; +- } +- tmp = op->func_name; +- Py_INCREF(value); +- op->func_name = value; +- Py_XDECREF(tmp); + return 0; +-} +-static PyObject * +-__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) +-{ +- Py_INCREF(op->func_qualname); +- return op->func_qualname; +-} +-static int +-__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) +-{ +- PyObject *tmp; +-#if PY_MAJOR_VERSION >= 3 +- if (unlikely(value == NULL || !PyUnicode_Check(value))) + #else +- if (unlikely(value == NULL || !PyString_Check(value))) ++ attr = __Pyx_PyObject_GetAttrStr(obj, name); ++ goto try_unpack; + #endif +- { +- PyErr_SetString(PyExc_TypeError, +- "__qualname__ must be set to a string object"); +- return -1; +- } +- tmp = op->func_qualname; +- Py_INCREF(value); +- op->func_qualname = value; +- Py_XDECREF(tmp); +- return 0; +-} +-static PyObject * +-__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) +-{ +- PyObject *self; +- self = m->func_closure; +- if (self == NULL) +- self = Py_None; +- Py_INCREF(self); +- return self; +-} +-static PyObject * +-__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) +-{ +- if (unlikely(op->func_dict == NULL)) { +- op->func_dict = PyDict_New(); +- if (unlikely(op->func_dict == NULL)) +- return NULL; +- } +- Py_INCREF(op->func_dict); +- return op->func_dict; +-} +-static int +-__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) +-{ +- PyObject *tmp; +- if (unlikely(value == NULL)) { +- PyErr_SetString(PyExc_TypeError, +- "function's dictionary may not be deleted"); +- return -1; +- } +- if (unlikely(!PyDict_Check(value))) { +- PyErr_SetString(PyExc_TypeError, +- "setting function's dictionary to a non-dict"); +- return -1; ++try_unpack: ++#if CYTHON_UNPACK_METHODS ++ if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { ++ PyObject *function = PyMethod_GET_FUNCTION(attr); ++ Py_INCREF(function); ++ Py_DECREF(attr); ++ *method = function; ++ return 1; + } +- tmp = op->func_dict; +- Py_INCREF(value); +- op->func_dict = value; +- Py_XDECREF(tmp); ++#endif ++ *method = attr; + return 0; + } +-static PyObject * +-__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) +-{ +- Py_INCREF(op->func_globals); +- return op->func_globals; +-} +-static PyObject * +-__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) +-{ +- Py_INCREF(Py_None); +- return Py_None; +-} +-static PyObject * +-__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) +-{ +- PyObject* result = (op->func_code) ? op->func_code : Py_None; +- Py_INCREF(result); +- return result; +-} +-static int +-__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { +- int result = 0; +- PyObject *res = op->defaults_getter((PyObject *) op); +- if (unlikely(!res)) +- return -1; +- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- op->defaults_tuple = PyTuple_GET_ITEM(res, 0); +- Py_INCREF(op->defaults_tuple); +- op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); +- Py_INCREF(op->defaults_kwdict); +- #else +- op->defaults_tuple = PySequence_ITEM(res, 0); +- if (unlikely(!op->defaults_tuple)) result = -1; +- else { +- op->defaults_kwdict = PySequence_ITEM(res, 1); +- if (unlikely(!op->defaults_kwdict)) result = -1; +- } +- #endif +- Py_DECREF(res); ++ ++/* PyObjectCallMethod1 */ ++static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { ++ PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); ++ Py_DECREF(method); + return result; + } +-static int +-__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { +- PyObject* tmp; +- if (!value) { +- value = Py_None; +- } else if (value != Py_None && !PyTuple_Check(value)) { +- PyErr_SetString(PyExc_TypeError, +- "__defaults__ must be set to a tuple object"); +- return -1; +- } +- Py_INCREF(value); +- tmp = op->defaults_tuple; +- op->defaults_tuple = value; +- Py_XDECREF(tmp); +- return 0; +-} +-static PyObject * +-__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { +- PyObject* result = op->defaults_tuple; +- if (unlikely(!result)) { +- if (op->defaults_getter) { +- if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; +- result = op->defaults_tuple; +- } else { +- result = Py_None; +- } ++static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { ++ PyObject *method = NULL, *result; ++ int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); ++ if (likely(is_method)) { ++ result = __Pyx_PyObject_Call2Args(method, obj, arg); ++ Py_DECREF(method); ++ return result; + } +- Py_INCREF(result); +- return result; ++ if (unlikely(!method)) return NULL; ++ return __Pyx__PyObject_CallMethod1(method, arg); + } +-static int +-__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { +- PyObject* tmp; +- if (!value) { +- value = Py_None; +- } else if (value != Py_None && !PyDict_Check(value)) { +- PyErr_SetString(PyExc_TypeError, +- "__kwdefaults__ must be set to a dict object"); +- return -1; ++ ++/* append */ ++static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { ++ if (likely(PyList_CheckExact(L))) { ++ if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; ++ } else { ++ PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); ++ if (unlikely(!retval)) ++ return -1; ++ Py_DECREF(retval); + } +- Py_INCREF(value); +- tmp = op->defaults_kwdict; +- op->defaults_kwdict = value; +- Py_XDECREF(tmp); + return 0; + } +-static PyObject * +-__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { +- PyObject* result = op->defaults_kwdict; +- if (unlikely(!result)) { +- if (op->defaults_getter) { +- if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; +- result = op->defaults_kwdict; +- } else { +- result = Py_None; ++ ++/* PyObjectCallNoArg */ ++#if CYTHON_COMPILING_IN_CPYTHON ++static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { ++#if CYTHON_FAST_PYCALL ++ if (PyFunction_Check(func)) { ++ return __Pyx_PyFunction_FastCall(func, NULL, 0); ++ } ++#endif ++#ifdef __Pyx_CyFunction_USED ++ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) ++#else ++ if (likely(PyCFunction_Check(func))) ++#endif ++ { ++ if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { ++ return __Pyx_PyObject_CallMethO(func, NULL); + } + } +- Py_INCREF(result); +- return result; ++ return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); + } +-static int +-__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { +- PyObject* tmp; +- if (!value || value == Py_None) { +- value = NULL; +- } else if (!PyDict_Check(value)) { +- PyErr_SetString(PyExc_TypeError, +- "__annotations__ must be set to a dict object"); +- return -1; ++#endif ++ ++/* GetItemInt */ ++static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { ++ PyObject *r; ++ if (!j) return NULL; ++ r = PyObject_GetItem(o, j); ++ Py_DECREF(j); ++ return r; ++} ++static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, ++ CYTHON_NCP_UNUSED int wraparound, ++ CYTHON_NCP_UNUSED int boundscheck) { ++#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ Py_ssize_t wrapped_i = i; ++ if (wraparound & unlikely(i < 0)) { ++ wrapped_i += PyList_GET_SIZE(o); + } +- Py_XINCREF(value); +- tmp = op->func_annotations; +- op->func_annotations = value; +- Py_XDECREF(tmp); +- return 0; ++ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { ++ PyObject *r = PyList_GET_ITEM(o, wrapped_i); ++ Py_INCREF(r); ++ return r; ++ } ++ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); ++#else ++ return PySequence_GetItem(o, i); ++#endif + } +-static PyObject * +-__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { +- PyObject* result = op->func_annotations; +- if (unlikely(!result)) { +- result = PyDict_New(); +- if (unlikely(!result)) return NULL; +- op->func_annotations = result; ++static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, ++ CYTHON_NCP_UNUSED int wraparound, ++ CYTHON_NCP_UNUSED int boundscheck) { ++#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ Py_ssize_t wrapped_i = i; ++ if (wraparound & unlikely(i < 0)) { ++ wrapped_i += PyTuple_GET_SIZE(o); + } +- Py_INCREF(result); +- return result; ++ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { ++ PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); ++ Py_INCREF(r); ++ return r; ++ } ++ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); ++#else ++ return PySequence_GetItem(o, i); ++#endif + } +-static PyGetSetDef __pyx_CyFunction_getsets[] = { +- {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, +- {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, +- {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, +- {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, +- {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, +- {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, +- {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, +- {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, +- {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, +- {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, +- {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, +- {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, +- {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, +- {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, +- {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, +- {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, +- {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, +- {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, +- {0, 0, 0, 0, 0} +-}; +-static PyMemberDef __pyx_CyFunction_members[] = { +- {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, +- {0, 0, 0, 0, 0} +-}; +-static PyObject * +-__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) +-{ +-#if PY_MAJOR_VERSION >= 3 +- return PyUnicode_FromString(m->func.m_ml->ml_name); ++static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, ++ CYTHON_NCP_UNUSED int wraparound, ++ CYTHON_NCP_UNUSED int boundscheck) { ++#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS ++ if (is_list || PyList_CheckExact(o)) { ++ Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); ++ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { ++ PyObject *r = PyList_GET_ITEM(o, n); ++ Py_INCREF(r); ++ return r; ++ } ++ } ++ else if (PyTuple_CheckExact(o)) { ++ Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); ++ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { ++ PyObject *r = PyTuple_GET_ITEM(o, n); ++ Py_INCREF(r); ++ return r; ++ } ++ } else { ++ PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; ++ if (likely(m && m->sq_item)) { ++ if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { ++ Py_ssize_t l = m->sq_length(o); ++ if (likely(l >= 0)) { ++ i += l; ++ } else { ++ if (!PyErr_ExceptionMatches(PyExc_OverflowError)) ++ return NULL; ++ PyErr_Clear(); ++ } ++ } ++ return m->sq_item(o, i); ++ } ++ } + #else +- return PyString_FromString(m->func.m_ml->ml_name); ++ if (is_list || PySequence_Check(o)) { ++ return PySequence_GetItem(o, i); ++ } + #endif ++ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); + } +-static PyMethodDef __pyx_CyFunction_methods[] = { +- {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, +- {0, 0, 0, 0} +-}; +-#if PY_VERSION_HEX < 0x030500A0 +-#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) ++ ++/* DelItemInt */ ++static int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) { ++ int r; ++ if (!j) return -1; ++ r = PyObject_DelItem(o, j); ++ Py_DECREF(j); ++ return r; ++} ++static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i, ++ CYTHON_UNUSED int is_list, CYTHON_NCP_UNUSED int wraparound) { ++#if !CYTHON_USE_TYPE_SLOTS ++ if (is_list || PySequence_Check(o)) { ++ return PySequence_DelItem(o, i); ++ } + #else +-#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) ++ PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; ++ if (likely(m && m->sq_ass_item)) { ++ if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { ++ Py_ssize_t l = m->sq_length(o); ++ if (likely(l >= 0)) { ++ i += l; ++ } else { ++ if (!PyErr_ExceptionMatches(PyExc_OverflowError)) ++ return -1; ++ PyErr_Clear(); ++ } ++ } ++ return m->sq_ass_item(o, i, (PyObject *)NULL); ++ } + #endif +-static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, +- PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +- if (unlikely(op == NULL)) +- return NULL; +- op->flags = flags; +- __Pyx_CyFunction_weakreflist(op) = NULL; +- op->func.m_ml = ml; +- op->func.m_self = (PyObject *) op; +- Py_XINCREF(closure); +- op->func_closure = closure; +- Py_XINCREF(module); +- op->func.m_module = module; +- op->func_dict = NULL; +- op->func_name = NULL; +- Py_INCREF(qualname); +- op->func_qualname = qualname; +- op->func_doc = NULL; +- op->func_classobj = NULL; +- op->func_globals = globals; +- Py_INCREF(op->func_globals); +- Py_XINCREF(code); +- op->func_code = code; +- op->defaults_pyobjects = 0; +- op->defaults_size = 0; +- op->defaults = NULL; +- op->defaults_tuple = NULL; +- op->defaults_kwdict = NULL; +- op->defaults_getter = NULL; +- op->func_annotations = NULL; +- return (PyObject *) op; ++ return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i)); + } +-static int +-__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) ++ ++/* KeywordStringCheck */ ++static int __Pyx_CheckKeywordStrings( ++ PyObject *kwdict, ++ const char* function_name, ++ int kw_allowed) + { +- Py_CLEAR(m->func_closure); +- Py_CLEAR(m->func.m_module); +- Py_CLEAR(m->func_dict); +- Py_CLEAR(m->func_name); +- Py_CLEAR(m->func_qualname); +- Py_CLEAR(m->func_doc); +- Py_CLEAR(m->func_globals); +- Py_CLEAR(m->func_code); +- Py_CLEAR(m->func_classobj); +- Py_CLEAR(m->defaults_tuple); +- Py_CLEAR(m->defaults_kwdict); +- Py_CLEAR(m->func_annotations); +- if (m->defaults) { +- PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); +- int i; +- for (i = 0; i < m->defaults_pyobjects; i++) +- Py_XDECREF(pydefaults[i]); +- PyObject_Free(m->defaults); +- m->defaults = NULL; ++ PyObject* key = 0; ++ Py_ssize_t pos = 0; ++#if CYTHON_COMPILING_IN_PYPY ++ if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) ++ goto invalid_keyword; ++ return 1; ++#else ++ while (PyDict_Next(kwdict, &pos, &key, 0)) { ++ #if PY_MAJOR_VERSION < 3 ++ if (unlikely(!PyString_Check(key))) ++ #endif ++ if (unlikely(!PyUnicode_Check(key))) ++ goto invalid_keyword_type; + } ++ if ((!kw_allowed) && unlikely(key)) ++ goto invalid_keyword; ++ return 1; ++invalid_keyword_type: ++ PyErr_Format(PyExc_TypeError, ++ "%.200s() keywords must be strings", function_name); ++ return 0; ++#endif ++invalid_keyword: ++ PyErr_Format(PyExc_TypeError, ++ #if PY_MAJOR_VERSION < 3 ++ "%.200s() got an unexpected keyword argument '%.200s'", ++ function_name, PyString_AsString(key)); ++ #else ++ "%s() got an unexpected keyword argument '%U'", ++ function_name, key); ++ #endif + return 0; + } +-static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +-{ +- if (__Pyx_CyFunction_weakreflist(m) != NULL) +- PyObject_ClearWeakRefs((PyObject *) m); +- __Pyx_CyFunction_clear(m); +- PyObject_GC_Del(m); +-} +-static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +-{ +- PyObject_GC_UnTrack(m); +- __Pyx__CyFunction_dealloc(m); ++ ++/* None */ ++static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) { ++ PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname); + } +-static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +-{ +- Py_VISIT(m->func_closure); +- Py_VISIT(m->func.m_module); +- Py_VISIT(m->func_dict); +- Py_VISIT(m->func_name); +- Py_VISIT(m->func_qualname); +- Py_VISIT(m->func_doc); +- Py_VISIT(m->func_globals); +- Py_VISIT(m->func_code); +- Py_VISIT(m->func_classobj); +- Py_VISIT(m->defaults_tuple); +- Py_VISIT(m->defaults_kwdict); +- if (m->defaults) { +- PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); +- int i; +- for (i = 0; i < m->defaults_pyobjects; i++) +- Py_VISIT(pydefaults[i]); ++ ++/* RaiseException */ ++#if PY_MAJOR_VERSION < 3 ++static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, ++ CYTHON_UNUSED PyObject *cause) { ++ __Pyx_PyThreadState_declare ++ Py_XINCREF(type); ++ if (!value || value == Py_None) ++ value = NULL; ++ else ++ Py_INCREF(value); ++ if (!tb || tb == Py_None) ++ tb = NULL; ++ else { ++ Py_INCREF(tb); ++ if (!PyTraceBack_Check(tb)) { ++ PyErr_SetString(PyExc_TypeError, ++ "raise: arg 3 must be a traceback or None"); ++ goto raise_error; ++ } + } +- return 0; ++ if (PyType_Check(type)) { ++#if CYTHON_COMPILING_IN_PYPY ++ if (!value) { ++ Py_INCREF(Py_None); ++ value = Py_None; ++ } ++#endif ++ PyErr_NormalizeException(&type, &value, &tb); ++ } else { ++ if (value) { ++ PyErr_SetString(PyExc_TypeError, ++ "instance exception may not have a separate value"); ++ goto raise_error; ++ } ++ value = type; ++ type = (PyObject*) Py_TYPE(type); ++ Py_INCREF(type); ++ if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { ++ PyErr_SetString(PyExc_TypeError, ++ "raise: exception class must be a subclass of BaseException"); ++ goto raise_error; ++ } ++ } ++ __Pyx_PyThreadState_assign ++ __Pyx_ErrRestore(type, value, tb); ++ return; ++raise_error: ++ Py_XDECREF(value); ++ Py_XDECREF(type); ++ Py_XDECREF(tb); ++ return; + } +-static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) +-{ +-#if PY_MAJOR_VERSION < 3 +- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; +- if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { +- Py_INCREF(func); +- return func; ++#else ++static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { ++ PyObject* owned_instance = NULL; ++ if (tb == Py_None) { ++ tb = 0; ++ } else if (tb && !PyTraceBack_Check(tb)) { ++ PyErr_SetString(PyExc_TypeError, ++ "raise: arg 3 must be a traceback or None"); ++ goto bad; + } +- if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { +- if (type == NULL) +- type = (PyObject *)(Py_TYPE(obj)); +- return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); ++ if (value == Py_None) ++ value = 0; ++ if (PyExceptionInstance_Check(type)) { ++ if (value) { ++ PyErr_SetString(PyExc_TypeError, ++ "instance exception may not have a separate value"); ++ goto bad; ++ } ++ value = type; ++ type = (PyObject*) Py_TYPE(value); ++ } else if (PyExceptionClass_Check(type)) { ++ PyObject *instance_class = NULL; ++ if (value && PyExceptionInstance_Check(value)) { ++ instance_class = (PyObject*) Py_TYPE(value); ++ if (instance_class != type) { ++ int is_subclass = PyObject_IsSubclass(instance_class, type); ++ if (!is_subclass) { ++ instance_class = NULL; ++ } else if (unlikely(is_subclass == -1)) { ++ goto bad; ++ } else { ++ type = instance_class; ++ } ++ } ++ } ++ if (!instance_class) { ++ PyObject *args; ++ if (!value) ++ args = PyTuple_New(0); ++ else if (PyTuple_Check(value)) { ++ Py_INCREF(value); ++ args = value; ++ } else ++ args = PyTuple_Pack(1, value); ++ if (!args) ++ goto bad; ++ owned_instance = PyObject_Call(type, args, NULL); ++ Py_DECREF(args); ++ if (!owned_instance) ++ goto bad; ++ value = owned_instance; ++ if (!PyExceptionInstance_Check(value)) { ++ PyErr_Format(PyExc_TypeError, ++ "calling %R should have returned an instance of " ++ "BaseException, not %R", ++ type, Py_TYPE(value)); ++ goto bad; ++ } ++ } ++ } else { ++ PyErr_SetString(PyExc_TypeError, ++ "raise: exception class must be a subclass of BaseException"); ++ goto bad; + } +- if (obj == Py_None) +- obj = NULL; ++ if (cause) { ++ PyObject *fixed_cause; ++ if (cause == Py_None) { ++ fixed_cause = NULL; ++ } else if (PyExceptionClass_Check(cause)) { ++ fixed_cause = PyObject_CallObject(cause, NULL); ++ if (fixed_cause == NULL) ++ goto bad; ++ } else if (PyExceptionInstance_Check(cause)) { ++ fixed_cause = cause; ++ Py_INCREF(fixed_cause); ++ } else { ++ PyErr_SetString(PyExc_TypeError, ++ "exception causes must derive from " ++ "BaseException"); ++ goto bad; ++ } ++ PyException_SetCause(value, fixed_cause); ++ } ++ PyErr_SetObject(type, value); ++ if (tb) { ++#if CYTHON_COMPILING_IN_PYPY ++ PyObject *tmp_type, *tmp_value, *tmp_tb; ++ PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); ++ Py_INCREF(tb); ++ PyErr_Restore(tmp_type, tmp_value, tb); ++ Py_XDECREF(tmp_tb); ++#else ++ PyThreadState *tstate = __Pyx_PyThreadState_Current; ++ PyObject* tmp_tb = tstate->curexc_traceback; ++ if (tb != tmp_tb) { ++ Py_INCREF(tb); ++ tstate->curexc_traceback = tb; ++ Py_XDECREF(tmp_tb); ++ } + #endif +- return __Pyx_PyMethod_New(func, obj, type); ++ } ++bad: ++ Py_XDECREF(owned_instance); ++ return; ++} ++#endif ++ ++/* FetchCommonType */ ++static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { ++ PyObject* fake_module; ++ PyTypeObject* cached_type = NULL; ++ fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); ++ if (!fake_module) return NULL; ++ Py_INCREF(fake_module); ++ cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); ++ if (cached_type) { ++ if (!PyType_Check((PyObject*)cached_type)) { ++ PyErr_Format(PyExc_TypeError, ++ "Shared Cython type %.200s is not a type object", ++ type->tp_name); ++ goto bad; ++ } ++ if (cached_type->tp_basicsize != type->tp_basicsize) { ++ PyErr_Format(PyExc_TypeError, ++ "Shared Cython type %.200s has the wrong size, try recompiling", ++ type->tp_name); ++ goto bad; ++ } ++ } else { ++ if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; ++ PyErr_Clear(); ++ if (PyType_Ready(type) < 0) goto bad; ++ if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) ++ goto bad; ++ Py_INCREF(type); ++ cached_type = type; ++ } ++done: ++ Py_DECREF(fake_module); ++ return cached_type; ++bad: ++ Py_XDECREF(cached_type); ++ cached_type = NULL; ++ goto done; + } +-static PyObject* +-__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) ++ ++/* CythonFunctionShared */ ++#include ++static PyObject * ++__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) + { ++ if (unlikely(op->func_doc == NULL)) { ++ if (op->func.m_ml->ml_doc) { + #if PY_MAJOR_VERSION >= 3 +- return PyUnicode_FromFormat("", +- op->func_qualname, (void *)op); ++ op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); + #else +- return PyString_FromFormat("", +- PyString_AsString(op->func_qualname), (void *)op); ++ op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); + #endif +-} +-static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +- PyCFunctionObject* f = (PyCFunctionObject*)func; +- PyCFunction meth = f->m_ml->ml_meth; +- Py_ssize_t size; +- switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { +- case METH_VARARGS: +- if (likely(kw == NULL || PyDict_Size(kw) == 0)) +- return (*meth)(self, arg); +- break; +- case METH_VARARGS | METH_KEYWORDS: +- return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); +- case METH_NOARGS: +- if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +- size = PyTuple_GET_SIZE(arg); +- if (likely(size == 0)) +- return (*meth)(self, NULL); +- PyErr_Format(PyExc_TypeError, +- "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", +- f->m_ml->ml_name, size); +- return NULL; +- } +- break; +- case METH_O: +- if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +- size = PyTuple_GET_SIZE(arg); +- if (likely(size == 1)) { +- PyObject *result, *arg0; +- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- arg0 = PyTuple_GET_ITEM(arg, 0); +- #else +- arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; +- #endif +- result = (*meth)(self, arg0); +- #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) +- Py_DECREF(arg0); +- #endif +- return result; +- } +- PyErr_Format(PyExc_TypeError, +- "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", +- f->m_ml->ml_name, size); +- return NULL; ++ if (unlikely(op->func_doc == NULL)) ++ return NULL; ++ } else { ++ Py_INCREF(Py_None); ++ return Py_None; + } +- break; +- default: +- PyErr_SetString(PyExc_SystemError, "Bad call flags in " +- "__Pyx_CyFunction_Call. METH_OLDARGS is no " +- "longer supported!"); +- return NULL; + } +- PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", +- f->m_ml->ml_name); +- return NULL; +-} +-static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { +- return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); ++ Py_INCREF(op->func_doc); ++ return op->func_doc; + } +-static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { +- PyObject *result; +- __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +- if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { +- Py_ssize_t argc; +- PyObject *new_args; +- PyObject *self; +- argc = PyTuple_GET_SIZE(args); +- new_args = PyTuple_GetSlice(args, 1, argc); +- if (unlikely(!new_args)) +- return NULL; +- self = PyTuple_GetItem(args, 0); +- if (unlikely(!self)) { +- Py_DECREF(new_args); +- return NULL; +- } +- result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); +- Py_DECREF(new_args); +- } else { +- result = __Pyx_CyFunction_Call(func, args, kw); ++static int ++__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) ++{ ++ PyObject *tmp = op->func_doc; ++ if (value == NULL) { ++ value = Py_None; + } +- return result; ++ Py_INCREF(value); ++ op->func_doc = value; ++ Py_XDECREF(tmp); ++ return 0; + } +-static PyTypeObject __pyx_CyFunctionType_type = { +- PyVarObject_HEAD_INIT(0, 0) +- "cython_function_or_method", +- sizeof(__pyx_CyFunctionObject), +- 0, +- (destructor) __Pyx_CyFunction_dealloc, +- 0, +- 0, +- 0, +-#if PY_MAJOR_VERSION < 3 +- 0, ++static PyObject * ++__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) ++{ ++ if (unlikely(op->func_name == NULL)) { ++#if PY_MAJOR_VERSION >= 3 ++ op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); + #else +- 0, ++ op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); + #endif +- (reprfunc) __Pyx_CyFunction_repr, +- 0, +- 0, +- 0, +- 0, +- __Pyx_CyFunction_CallAsMethod, +- 0, +- 0, +- 0, +- 0, +- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, +- 0, +- (traverseproc) __Pyx_CyFunction_traverse, +- (inquiry) __Pyx_CyFunction_clear, +- 0, +-#if PY_VERSION_HEX < 0x030500A0 +- offsetof(__pyx_CyFunctionObject, func_weakreflist), ++ if (unlikely(op->func_name == NULL)) ++ return NULL; ++ } ++ Py_INCREF(op->func_name); ++ return op->func_name; ++} ++static int ++__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) ++{ ++ PyObject *tmp; ++#if PY_MAJOR_VERSION >= 3 ++ if (unlikely(value == NULL || !PyUnicode_Check(value))) + #else +- offsetof(PyCFunctionObject, m_weakreflist), +-#endif +- 0, +- 0, +- __pyx_CyFunction_methods, +- __pyx_CyFunction_members, +- __pyx_CyFunction_getsets, +- 0, +- 0, +- __Pyx_CyFunction_descr_get, +- 0, +- offsetof(__pyx_CyFunctionObject, func_dict), +- 0, +- 0, +- 0, +- 0, +- 0, +- 0, +- 0, +- 0, +- 0, +- 0, +- 0, +- 0, +-#if PY_VERSION_HEX >= 0x030400a1 +- 0, +-#endif +-#if PY_VERSION_HEX >= 0x030800b1 +- 0, +-#endif +-#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 +- 0, ++ if (unlikely(value == NULL || !PyString_Check(value))) + #endif +-}; +-static int __pyx_CyFunction_init(void) { +- __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +- if (unlikely(__pyx_CyFunctionType == NULL)) { ++ { ++ PyErr_SetString(PyExc_TypeError, ++ "__name__ must be set to a string object"); + return -1; + } ++ tmp = op->func_name; ++ Py_INCREF(value); ++ op->func_name = value; ++ Py_XDECREF(tmp); + return 0; + } +-static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { +- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; +- m->defaults = PyObject_Malloc(size); +- if (unlikely(!m->defaults)) +- return PyErr_NoMemory(); +- memset(m->defaults, 0, size); +- m->defaults_pyobjects = pyobjects; +- m->defaults_size = size; +- return m->defaults; +-} +-static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { +- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; +- m->defaults_tuple = tuple; +- Py_INCREF(tuple); ++static PyObject * ++__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) ++{ ++ Py_INCREF(op->func_qualname); ++ return op->func_qualname; + } +-static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { +- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; +- m->defaults_kwdict = dict; +- Py_INCREF(dict); ++static int ++__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) ++{ ++ PyObject *tmp; ++#if PY_MAJOR_VERSION >= 3 ++ if (unlikely(value == NULL || !PyUnicode_Check(value))) ++#else ++ if (unlikely(value == NULL || !PyString_Check(value))) ++#endif ++ { ++ PyErr_SetString(PyExc_TypeError, ++ "__qualname__ must be set to a string object"); ++ return -1; ++ } ++ tmp = op->func_qualname; ++ Py_INCREF(value); ++ op->func_qualname = value; ++ Py_XDECREF(tmp); ++ return 0; + } +-static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { +- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; +- m->func_annotations = dict; +- Py_INCREF(dict); ++static PyObject * ++__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) ++{ ++ PyObject *self; ++ self = m->func_closure; ++ if (self == NULL) ++ self = Py_None; ++ Py_INCREF(self); ++ return self; + } +- +-/* CythonFunction */ +-static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, +- PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +- PyObject *op = __Pyx_CyFunction_Init( +- PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), +- ml, flags, qualname, closure, module, globals, code +- ); +- if (likely(op)) { +- PyObject_GC_Track(op); ++static PyObject * ++__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) ++{ ++ if (unlikely(op->func_dict == NULL)) { ++ op->func_dict = PyDict_New(); ++ if (unlikely(op->func_dict == NULL)) ++ return NULL; + } +- return op; ++ Py_INCREF(op->func_dict); ++ return op->func_dict; + } +- +-/* RaiseArgTupleInvalid */ +-static void __Pyx_RaiseArgtupleInvalid( +- const char* func_name, +- int exact, +- Py_ssize_t num_min, +- Py_ssize_t num_max, +- Py_ssize_t num_found) ++static int ++__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) + { +- Py_ssize_t num_expected; +- const char *more_or_less; +- if (num_found < num_min) { +- num_expected = num_min; +- more_or_less = "at least"; +- } else { +- num_expected = num_max; +- more_or_less = "at most"; ++ PyObject *tmp; ++ if (unlikely(value == NULL)) { ++ PyErr_SetString(PyExc_TypeError, ++ "function's dictionary may not be deleted"); ++ return -1; + } +- if (exact) { +- more_or_less = "exactly"; ++ if (unlikely(!PyDict_Check(value))) { ++ PyErr_SetString(PyExc_TypeError, ++ "setting function's dictionary to a non-dict"); ++ return -1; + } +- PyErr_Format(PyExc_TypeError, +- "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", +- func_name, more_or_less, num_expected, +- (num_expected == 1) ? "" : "s", num_found); ++ tmp = op->func_dict; ++ Py_INCREF(value); ++ op->func_dict = value; ++ Py_XDECREF(tmp); ++ return 0; + } +- +-/* RaiseDoubleKeywords */ +-static void __Pyx_RaiseDoubleKeywordsError( +- const char* func_name, +- PyObject* kw_name) ++static PyObject * ++__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) + { +- PyErr_Format(PyExc_TypeError, +- #if PY_MAJOR_VERSION >= 3 +- "%s() got multiple values for keyword argument '%U'", func_name, kw_name); +- #else +- "%s() got multiple values for keyword argument '%s'", func_name, +- PyString_AsString(kw_name)); +- #endif ++ Py_INCREF(op->func_globals); ++ return op->func_globals; + } +- +-/* ParseKeywords */ +-static int __Pyx_ParseOptionalKeywords( +- PyObject *kwds, +- PyObject **argnames[], +- PyObject *kwds2, +- PyObject *values[], +- Py_ssize_t num_pos_args, +- const char* function_name) ++static PyObject * ++__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) + { +- PyObject *key = 0, *value = 0; +- Py_ssize_t pos = 0; +- PyObject*** name; +- PyObject*** first_kw_arg = argnames + num_pos_args; +- while (PyDict_Next(kwds, &pos, &key, &value)) { +- name = first_kw_arg; +- while (*name && (**name != key)) name++; +- if (*name) { +- values[name-argnames] = value; +- continue; +- } +- name = first_kw_arg; +- #if PY_MAJOR_VERSION < 3 +- if (likely(PyString_Check(key))) { +- while (*name) { +- if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) +- && _PyString_Eq(**name, key)) { +- values[name-argnames] = value; +- break; +- } +- name++; +- } +- if (*name) continue; +- else { +- PyObject*** argname = argnames; +- while (argname != first_kw_arg) { +- if ((**argname == key) || ( +- (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) +- && _PyString_Eq(**argname, key))) { +- goto arg_passed_twice; +- } +- argname++; +- } +- } +- } else +- #endif +- if (likely(PyUnicode_Check(key))) { +- while (*name) { +- int cmp = (**name == key) ? 0 : +- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +- (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : +- #endif +- PyUnicode_Compare(**name, key); +- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; +- if (cmp == 0) { +- values[name-argnames] = value; +- break; +- } +- name++; +- } +- if (*name) continue; +- else { +- PyObject*** argname = argnames; +- while (argname != first_kw_arg) { +- int cmp = (**argname == key) ? 0 : +- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +- (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : +- #endif +- PyUnicode_Compare(**argname, key); +- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; +- if (cmp == 0) goto arg_passed_twice; +- argname++; +- } +- } +- } else +- goto invalid_keyword_type; +- if (kwds2) { +- if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; +- } else { +- goto invalid_keyword; +- } +- } +- return 0; +-arg_passed_twice: +- __Pyx_RaiseDoubleKeywordsError(function_name, key); +- goto bad; +-invalid_keyword_type: +- PyErr_Format(PyExc_TypeError, +- "%.200s() keywords must be strings", function_name); +- goto bad; +-invalid_keyword: +- PyErr_Format(PyExc_TypeError, +- #if PY_MAJOR_VERSION < 3 +- "%.200s() got an unexpected keyword argument '%.200s'", +- function_name, PyString_AsString(key)); ++ Py_INCREF(Py_None); ++ return Py_None; ++} ++static PyObject * ++__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) ++{ ++ PyObject* result = (op->func_code) ? op->func_code : Py_None; ++ Py_INCREF(result); ++ return result; ++} ++static int ++__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { ++ int result = 0; ++ PyObject *res = op->defaults_getter((PyObject *) op); ++ if (unlikely(!res)) ++ return -1; ++ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ op->defaults_tuple = PyTuple_GET_ITEM(res, 0); ++ Py_INCREF(op->defaults_tuple); ++ op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); ++ Py_INCREF(op->defaults_kwdict); + #else +- "%s() got an unexpected keyword argument '%U'", +- function_name, key); ++ op->defaults_tuple = PySequence_ITEM(res, 0); ++ if (unlikely(!op->defaults_tuple)) result = -1; ++ else { ++ op->defaults_kwdict = PySequence_ITEM(res, 1); ++ if (unlikely(!op->defaults_kwdict)) result = -1; ++ } + #endif +-bad: +- return -1; ++ Py_DECREF(res); ++ return result; + } +- +-/* PyObjectSetAttrStr */ +-#if CYTHON_USE_TYPE_SLOTS +-static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { +- PyTypeObject* tp = Py_TYPE(obj); +- if (likely(tp->tp_setattro)) +- return tp->tp_setattro(obj, attr_name, value); +-#if PY_MAJOR_VERSION < 3 +- if (likely(tp->tp_setattr)) +- return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); +-#endif +- return PyObject_SetAttr(obj, attr_name, value); ++static int ++__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { ++ PyObject* tmp; ++ if (!value) { ++ value = Py_None; ++ } else if (value != Py_None && !PyTuple_Check(value)) { ++ PyErr_SetString(PyExc_TypeError, ++ "__defaults__ must be set to a tuple object"); ++ return -1; ++ } ++ Py_INCREF(value); ++ tmp = op->defaults_tuple; ++ op->defaults_tuple = value; ++ Py_XDECREF(tmp); ++ return 0; + } +-#endif +- +-/* PyIntBinop */ +-#if !CYTHON_COMPILING_IN_PYPY +-static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { +- (void)inplace; +- (void)zerodivision_check; +- #if PY_MAJOR_VERSION < 3 +- if (likely(PyInt_CheckExact(op1))) { +- const long b = intval; +- long x; +- long a = PyInt_AS_LONG(op1); +- x = (long)((unsigned long)a + b); +- if (likely((x^a) >= 0 || (x^b) >= 0)) +- return PyInt_FromLong(x); +- return PyLong_Type.tp_as_number->nb_add(op1, op2); ++static PyObject * ++__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { ++ PyObject* result = op->defaults_tuple; ++ if (unlikely(!result)) { ++ if (op->defaults_getter) { ++ if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; ++ result = op->defaults_tuple; ++ } else { ++ result = Py_None; ++ } + } +- #endif +- #if CYTHON_USE_PYLONG_INTERNALS +- if (likely(PyLong_CheckExact(op1))) { +- const long b = intval; +- long a, x; +-#ifdef HAVE_LONG_LONG +- const PY_LONG_LONG llb = intval; +- PY_LONG_LONG lla, llx; +-#endif +- const digit* digits = ((PyLongObject*)op1)->ob_digit; +- const Py_ssize_t size = Py_SIZE(op1); +- if (likely(__Pyx_sst_abs(size) <= 1)) { +- a = likely(size) ? digits[0] : 0; +- if (size == -1) a = -a; ++ Py_INCREF(result); ++ return result; ++} ++static int ++__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { ++ PyObject* tmp; ++ if (!value) { ++ value = Py_None; ++ } else if (value != Py_None && !PyDict_Check(value)) { ++ PyErr_SetString(PyExc_TypeError, ++ "__kwdefaults__ must be set to a dict object"); ++ return -1; ++ } ++ Py_INCREF(value); ++ tmp = op->defaults_kwdict; ++ op->defaults_kwdict = value; ++ Py_XDECREF(tmp); ++ return 0; ++} ++static PyObject * ++__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { ++ PyObject* result = op->defaults_kwdict; ++ if (unlikely(!result)) { ++ if (op->defaults_getter) { ++ if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; ++ result = op->defaults_kwdict; + } else { +- switch (size) { +- case -2: +- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { +- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { +- lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { +- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { +- lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case -3: +- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { +- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { +- lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case 3: +- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { +- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { +- lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case -4: +- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { +- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { +- lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case 4: +- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { +- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { +- lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- default: return PyLong_Type.tp_as_number->nb_add(op1, op2); +- } ++ result = Py_None; + } +- x = a + b; +- return PyLong_FromLong(x); +-#ifdef HAVE_LONG_LONG +- long_long: +- llx = lla + llb; +- return PyLong_FromLongLong(llx); +-#endif +- +- + } +- #endif +- if (PyFloat_CheckExact(op1)) { +- const long b = intval; +- double a = PyFloat_AS_DOUBLE(op1); +- double result; +- PyFPE_START_PROTECT("add", return NULL) +- result = ((double)a) + (double)b; +- PyFPE_END_PROTECT(result) +- return PyFloat_FromDouble(result); ++ Py_INCREF(result); ++ return result; ++} ++static int ++__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { ++ PyObject* tmp; ++ if (!value || value == Py_None) { ++ value = NULL; ++ } else if (!PyDict_Check(value)) { ++ PyErr_SetString(PyExc_TypeError, ++ "__annotations__ must be set to a dict object"); ++ return -1; + } +- return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); ++ Py_XINCREF(value); ++ tmp = op->func_annotations; ++ op->func_annotations = value; ++ Py_XDECREF(tmp); ++ return 0; + } +-#endif +- +-/* PyIntBinop */ +-#if !CYTHON_COMPILING_IN_PYPY +-static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { +- (void)inplace; +- (void)zerodivision_check; +- #if PY_MAJOR_VERSION < 3 +- if (likely(PyInt_CheckExact(op1))) { +- const long b = intval; +- long x; +- long a = PyInt_AS_LONG(op1); +- x = (long)((unsigned long)a - b); +- if (likely((x^a) >= 0 || (x^~b) >= 0)) +- return PyInt_FromLong(x); +- return PyLong_Type.tp_as_number->nb_subtract(op1, op2); ++static PyObject * ++__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { ++ PyObject* result = op->func_annotations; ++ if (unlikely(!result)) { ++ result = PyDict_New(); ++ if (unlikely(!result)) return NULL; ++ op->func_annotations = result; + } +- #endif +- #if CYTHON_USE_PYLONG_INTERNALS +- if (likely(PyLong_CheckExact(op1))) { +- const long b = intval; +- long a, x; +-#ifdef HAVE_LONG_LONG +- const PY_LONG_LONG llb = intval; +- PY_LONG_LONG lla, llx; +-#endif +- const digit* digits = ((PyLongObject*)op1)->ob_digit; +- const Py_ssize_t size = Py_SIZE(op1); +- if (likely(__Pyx_sst_abs(size) <= 1)) { +- a = likely(size) ? digits[0] : 0; +- if (size == -1) a = -a; +- } else { +- switch (size) { +- case -2: +- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { +- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { +- lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case 2: +- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { +- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { +- lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case -3: +- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { +- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { +- lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case 3: +- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { +- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { +- lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case -4: +- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { +- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { +- lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; +-#endif +- } +- CYTHON_FALLTHROUGH; +- case 4: +- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { +- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); +- break; +-#ifdef HAVE_LONG_LONG +- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { +- lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); +- goto long_long; ++ Py_INCREF(result); ++ return result; ++} ++static PyGetSetDef __pyx_CyFunction_getsets[] = { ++ {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, ++ {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, ++ {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, ++ {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, ++ {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, ++ {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, ++ {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, ++ {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, ++ {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, ++ {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, ++ {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, ++ {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, ++ {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, ++ {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, ++ {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, ++ {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, ++ {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, ++ {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, ++ {0, 0, 0, 0, 0} ++}; ++static PyMemberDef __pyx_CyFunction_members[] = { ++ {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, ++ {0, 0, 0, 0, 0} ++}; ++static PyObject * ++__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) ++{ ++#if PY_MAJOR_VERSION >= 3 ++ Py_INCREF(m->func_qualname); ++ return m->func_qualname; ++#else ++ return PyString_FromString(m->func.m_ml->ml_name); + #endif +- } +- CYTHON_FALLTHROUGH; +- default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); +- } +- } +- x = a - b; +- return PyLong_FromLong(x); +-#ifdef HAVE_LONG_LONG +- long_long: +- llx = lla - llb; +- return PyLong_FromLongLong(llx); ++} ++static PyMethodDef __pyx_CyFunction_methods[] = { ++ {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, ++ {0, 0, 0, 0} ++}; ++#if PY_VERSION_HEX < 0x030500A0 ++#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) ++#else ++#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) + #endif +- +- ++static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, ++ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { ++ if (unlikely(op == NULL)) ++ return NULL; ++ op->flags = flags; ++ __Pyx_CyFunction_weakreflist(op) = NULL; ++ op->func.m_ml = ml; ++ op->func.m_self = (PyObject *) op; ++ Py_XINCREF(closure); ++ op->func_closure = closure; ++ Py_XINCREF(module); ++ op->func.m_module = module; ++ op->func_dict = NULL; ++ op->func_name = NULL; ++ Py_INCREF(qualname); ++ op->func_qualname = qualname; ++ op->func_doc = NULL; ++ op->func_classobj = NULL; ++ op->func_globals = globals; ++ Py_INCREF(op->func_globals); ++ Py_XINCREF(code); ++ op->func_code = code; ++ op->defaults_pyobjects = 0; ++ op->defaults_size = 0; ++ op->defaults = NULL; ++ op->defaults_tuple = NULL; ++ op->defaults_kwdict = NULL; ++ op->defaults_getter = NULL; ++ op->func_annotations = NULL; ++ return (PyObject *) op; ++} ++static int ++__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) ++{ ++ Py_CLEAR(m->func_closure); ++ Py_CLEAR(m->func.m_module); ++ Py_CLEAR(m->func_dict); ++ Py_CLEAR(m->func_name); ++ Py_CLEAR(m->func_qualname); ++ Py_CLEAR(m->func_doc); ++ Py_CLEAR(m->func_globals); ++ Py_CLEAR(m->func_code); ++ Py_CLEAR(m->func_classobj); ++ Py_CLEAR(m->defaults_tuple); ++ Py_CLEAR(m->defaults_kwdict); ++ Py_CLEAR(m->func_annotations); ++ if (m->defaults) { ++ PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); ++ int i; ++ for (i = 0; i < m->defaults_pyobjects; i++) ++ Py_XDECREF(pydefaults[i]); ++ PyObject_Free(m->defaults); ++ m->defaults = NULL; + } +- #endif +- if (PyFloat_CheckExact(op1)) { +- const long b = intval; +- double a = PyFloat_AS_DOUBLE(op1); +- double result; +- PyFPE_START_PROTECT("subtract", return NULL) +- result = ((double)a) - (double)b; +- PyFPE_END_PROTECT(result) +- return PyFloat_FromDouble(result); ++ return 0; ++} ++static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) ++{ ++ if (__Pyx_CyFunction_weakreflist(m) != NULL) ++ PyObject_ClearWeakRefs((PyObject *) m); ++ __Pyx_CyFunction_clear(m); ++ PyObject_GC_Del(m); ++} ++static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) ++{ ++ PyObject_GC_UnTrack(m); ++ __Pyx__CyFunction_dealloc(m); ++} ++static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) ++{ ++ Py_VISIT(m->func_closure); ++ Py_VISIT(m->func.m_module); ++ Py_VISIT(m->func_dict); ++ Py_VISIT(m->func_name); ++ Py_VISIT(m->func_qualname); ++ Py_VISIT(m->func_doc); ++ Py_VISIT(m->func_globals); ++ Py_VISIT(m->func_code); ++ Py_VISIT(m->func_classobj); ++ Py_VISIT(m->defaults_tuple); ++ Py_VISIT(m->defaults_kwdict); ++ if (m->defaults) { ++ PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); ++ int i; ++ for (i = 0; i < m->defaults_pyobjects; i++) ++ Py_VISIT(pydefaults[i]); + } +- return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); ++ return 0; + } ++static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) ++{ ++#if PY_MAJOR_VERSION < 3 ++ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; ++ if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { ++ Py_INCREF(func); ++ return func; ++ } ++ if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { ++ if (type == NULL) ++ type = (PyObject *)(Py_TYPE(obj)); ++ return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); ++ } ++ if (obj == Py_None) ++ obj = NULL; + #endif +- +-/* WriteUnraisableException */ +-static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, +- CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, +- int full_traceback, CYTHON_UNUSED int nogil) { +- PyObject *old_exc, *old_val, *old_tb; +- PyObject *ctx; +- __Pyx_PyThreadState_declare +-#ifdef WITH_THREAD +- PyGILState_STATE state; +- if (nogil) +- state = PyGILState_Ensure(); +-#ifdef _MSC_VER +- else state = (PyGILState_STATE)-1; +-#endif ++ return __Pyx_PyMethod_New(func, obj, type); ++} ++static PyObject* ++__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) ++{ ++#if PY_MAJOR_VERSION >= 3 ++ return PyUnicode_FromFormat("", ++ op->func_qualname, (void *)op); ++#else ++ return PyString_FromFormat("", ++ PyString_AsString(op->func_qualname), (void *)op); + #endif +- __Pyx_PyThreadState_assign +- __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); +- if (full_traceback) { +- Py_XINCREF(old_exc); +- Py_XINCREF(old_val); +- Py_XINCREF(old_tb); +- __Pyx_ErrRestore(old_exc, old_val, old_tb); +- PyErr_PrintEx(1); +- } +- #if PY_MAJOR_VERSION < 3 +- ctx = PyString_FromString(name); +- #else +- ctx = PyUnicode_FromString(name); +- #endif +- __Pyx_ErrRestore(old_exc, old_val, old_tb); +- if (!ctx) { +- PyErr_WriteUnraisable(Py_None); +- } else { +- PyErr_WriteUnraisable(ctx); +- Py_DECREF(ctx); ++} ++static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { ++ PyCFunctionObject* f = (PyCFunctionObject*)func; ++ PyCFunction meth = f->m_ml->ml_meth; ++ Py_ssize_t size; ++ switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { ++ case METH_VARARGS: ++ if (likely(kw == NULL || PyDict_Size(kw) == 0)) ++ return (*meth)(self, arg); ++ break; ++ case METH_VARARGS | METH_KEYWORDS: ++ return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); ++ case METH_NOARGS: ++ if (likely(kw == NULL || PyDict_Size(kw) == 0)) { ++ size = PyTuple_GET_SIZE(arg); ++ if (likely(size == 0)) ++ return (*meth)(self, NULL); ++ PyErr_Format(PyExc_TypeError, ++ "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", ++ f->m_ml->ml_name, size); ++ return NULL; ++ } ++ break; ++ case METH_O: ++ if (likely(kw == NULL || PyDict_Size(kw) == 0)) { ++ size = PyTuple_GET_SIZE(arg); ++ if (likely(size == 1)) { ++ PyObject *result, *arg0; ++ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS ++ arg0 = PyTuple_GET_ITEM(arg, 0); ++ #else ++ arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; ++ #endif ++ result = (*meth)(self, arg0); ++ #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) ++ Py_DECREF(arg0); ++ #endif ++ return result; ++ } ++ PyErr_Format(PyExc_TypeError, ++ "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", ++ f->m_ml->ml_name, size); ++ return NULL; ++ } ++ break; ++ default: ++ PyErr_SetString(PyExc_SystemError, "Bad call flags in " ++ "__Pyx_CyFunction_Call. METH_OLDARGS is no " ++ "longer supported!"); ++ return NULL; + } +-#ifdef WITH_THREAD +- if (nogil) +- PyGILState_Release(state); +-#endif +-} +- +-/* SwapException */ +-#if CYTHON_FAST_THREAD_STATE +-static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +- PyObject *tmp_type, *tmp_value, *tmp_tb; +- #if CYTHON_USE_EXC_INFO_STACK +- _PyErr_StackItem *exc_info = tstate->exc_info; +- tmp_type = exc_info->exc_type; +- tmp_value = exc_info->exc_value; +- tmp_tb = exc_info->exc_traceback; +- exc_info->exc_type = *type; +- exc_info->exc_value = *value; +- exc_info->exc_traceback = *tb; +- #else +- tmp_type = tstate->exc_type; +- tmp_value = tstate->exc_value; +- tmp_tb = tstate->exc_traceback; +- tstate->exc_type = *type; +- tstate->exc_value = *value; +- tstate->exc_traceback = *tb; +- #endif +- *type = tmp_type; +- *value = tmp_value; +- *tb = tmp_tb; +-} +-#else +-static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { +- PyObject *tmp_type, *tmp_value, *tmp_tb; +- PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); +- PyErr_SetExcInfo(*type, *value, *tb); +- *type = tmp_type; +- *value = tmp_value; +- *tb = tmp_tb; ++ PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", ++ f->m_ml->ml_name); ++ return NULL; + } +-#endif +- +-/* SetItemInt */ +-static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { +- int r; +- if (!j) return -1; +- r = PyObject_SetItem(o, j, v); +- Py_DECREF(j); +- return r; ++static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { ++ return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); + } +-static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, +- CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { +-#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS +- if (is_list || PyList_CheckExact(o)) { +- Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); +- if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { +- PyObject* old = PyList_GET_ITEM(o, n); +- Py_INCREF(v); +- PyList_SET_ITEM(o, n, v); +- Py_DECREF(old); +- return 1; ++static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { ++ PyObject *result; ++ __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; ++ if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { ++ Py_ssize_t argc; ++ PyObject *new_args; ++ PyObject *self; ++ argc = PyTuple_GET_SIZE(args); ++ new_args = PyTuple_GetSlice(args, 1, argc); ++ if (unlikely(!new_args)) ++ return NULL; ++ self = PyTuple_GetItem(args, 0); ++ if (unlikely(!self)) { ++ Py_DECREF(new_args); ++ return NULL; + } ++ result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); ++ Py_DECREF(new_args); + } else { +- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; +- if (likely(m && m->sq_ass_item)) { +- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { +- Py_ssize_t l = m->sq_length(o); +- if (likely(l >= 0)) { +- i += l; +- } else { +- if (!PyErr_ExceptionMatches(PyExc_OverflowError)) +- return -1; +- PyErr_Clear(); +- } +- } +- return m->sq_ass_item(o, i, v); +- } ++ result = __Pyx_CyFunction_Call(func, args, kw); + } ++ return result; ++} ++static PyTypeObject __pyx_CyFunctionType_type = { ++ PyVarObject_HEAD_INIT(0, 0) ++ "cython_function_or_method", ++ sizeof(__pyx_CyFunctionObject), ++ 0, ++ (destructor) __Pyx_CyFunction_dealloc, ++ 0, ++ 0, ++ 0, ++#if PY_MAJOR_VERSION < 3 ++ 0, + #else +-#if CYTHON_COMPILING_IN_PYPY +- if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) ++ 0, ++#endif ++ (reprfunc) __Pyx_CyFunction_repr, ++ 0, ++ 0, ++ 0, ++ 0, ++ __Pyx_CyFunction_CallAsMethod, ++ 0, ++ 0, ++ 0, ++ 0, ++ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, ++ 0, ++ (traverseproc) __Pyx_CyFunction_traverse, ++ (inquiry) __Pyx_CyFunction_clear, ++ 0, ++#if PY_VERSION_HEX < 0x030500A0 ++ offsetof(__pyx_CyFunctionObject, func_weakreflist), + #else +- if (is_list || PySequence_Check(o)) ++ offsetof(PyCFunctionObject, m_weakreflist), + #endif +- { +- return PySequence_SetItem(o, i, v); +- } ++ 0, ++ 0, ++ __pyx_CyFunction_methods, ++ __pyx_CyFunction_members, ++ __pyx_CyFunction_getsets, ++ 0, ++ 0, ++ __Pyx_CyFunction_descr_get, ++ 0, ++ offsetof(__pyx_CyFunctionObject, func_dict), ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++#if PY_VERSION_HEX >= 0x030400a1 ++ 0, + #endif +- return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); +-} +- +-/* FastTypeChecks */ +-#if CYTHON_COMPILING_IN_CPYTHON +-static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { +- while (a) { +- a = a->tp_base; +- if (a == b) +- return 1; ++#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) ++ 0, ++#endif ++#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 ++ 0, ++#endif ++#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, ++#endif ++}; ++static int __pyx_CyFunction_init(void) { ++ __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); ++ if (unlikely(__pyx_CyFunctionType == NULL)) { ++ return -1; + } +- return b == &PyBaseObject_Type; ++ return 0; + } +-static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { +- PyObject *mro; +- if (a == b) return 1; +- mro = a->tp_mro; +- if (likely(mro)) { +- Py_ssize_t i, n; +- n = PyTuple_GET_SIZE(mro); +- for (i = 0; i < n; i++) { +- if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) +- return 1; +- } +- return 0; ++static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { ++ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; ++ m->defaults = PyObject_Malloc(size); ++ if (unlikely(!m->defaults)) ++ return PyErr_NoMemory(); ++ memset(m->defaults, 0, size); ++ m->defaults_pyobjects = pyobjects; ++ m->defaults_size = size; ++ return m->defaults; ++} ++static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { ++ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; ++ m->defaults_tuple = tuple; ++ Py_INCREF(tuple); ++} ++static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { ++ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; ++ m->defaults_kwdict = dict; ++ Py_INCREF(dict); ++} ++static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { ++ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; ++ m->func_annotations = dict; ++ Py_INCREF(dict); ++} ++ ++/* CythonFunction */ ++static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, ++ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { ++ PyObject *op = __Pyx_CyFunction_Init( ++ PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), ++ ml, flags, qualname, closure, module, globals, code ++ ); ++ if (likely(op)) { ++ PyObject_GC_Track(op); + } +- return __Pyx_InBases(a, b); ++ return op; + } +-#if PY_MAJOR_VERSION == 2 +-static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { +- PyObject *exception, *value, *tb; +- int res; +- __Pyx_PyThreadState_declare +- __Pyx_PyThreadState_assign +- __Pyx_ErrFetch(&exception, &value, &tb); +- res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; +- if (unlikely(res == -1)) { +- PyErr_WriteUnraisable(err); +- res = 0; ++ ++/* RaiseArgTupleInvalid */ ++static void __Pyx_RaiseArgtupleInvalid( ++ const char* func_name, ++ int exact, ++ Py_ssize_t num_min, ++ Py_ssize_t num_max, ++ Py_ssize_t num_found) ++{ ++ Py_ssize_t num_expected; ++ const char *more_or_less; ++ if (num_found < num_min) { ++ num_expected = num_min; ++ more_or_less = "at least"; ++ } else { ++ num_expected = num_max; ++ more_or_less = "at most"; + } +- if (!res) { +- res = PyObject_IsSubclass(err, exc_type2); +- if (unlikely(res == -1)) { +- PyErr_WriteUnraisable(err); +- res = 0; +- } ++ if (exact) { ++ more_or_less = "exactly"; + } +- __Pyx_ErrRestore(exception, value, tb); +- return res; ++ PyErr_Format(PyExc_TypeError, ++ "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", ++ func_name, more_or_less, num_expected, ++ (num_expected == 1) ? "" : "s", num_found); + } +-#else +-static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { +- int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; +- if (!res) { +- res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); +- } +- return res; ++ ++/* RaiseDoubleKeywords */ ++static void __Pyx_RaiseDoubleKeywordsError( ++ const char* func_name, ++ PyObject* kw_name) ++{ ++ PyErr_Format(PyExc_TypeError, ++ #if PY_MAJOR_VERSION >= 3 ++ "%s() got multiple values for keyword argument '%U'", func_name, kw_name); ++ #else ++ "%s() got multiple values for keyword argument '%s'", func_name, ++ PyString_AsString(kw_name)); ++ #endif + } +-#endif +-static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { +- Py_ssize_t i, n; +- assert(PyExceptionClass_Check(exc_type)); +- n = PyTuple_GET_SIZE(tuple); +-#if PY_MAJOR_VERSION >= 3 +- for (i=0; i= 3 ++ (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : ++ #endif ++ PyUnicode_Compare(**name, key); ++ if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; ++ if (cmp == 0) { ++ values[name-argnames] = value; ++ break; ++ } ++ name++; ++ } ++ if (*name) continue; ++ else { ++ PyObject*** argname = argnames; ++ while (argname != first_kw_arg) { ++ int cmp = (**argname == key) ? 0 : ++ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 ++ (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : ++ #endif ++ PyUnicode_Compare(**argname, key); ++ if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; ++ if (cmp == 0) goto arg_passed_twice; ++ argname++; ++ } ++ } ++ } else ++ goto invalid_keyword_type; ++ if (kwds2) { ++ if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { ++ goto invalid_keyword; + } + } + return 0; ++arg_passed_twice: ++ __Pyx_RaiseDoubleKeywordsError(function_name, key); ++ goto bad; ++invalid_keyword_type: ++ PyErr_Format(PyExc_TypeError, ++ "%.200s() keywords must be strings", function_name); ++ goto bad; ++invalid_keyword: ++ PyErr_Format(PyExc_TypeError, ++ #if PY_MAJOR_VERSION < 3 ++ "%.200s() got an unexpected keyword argument '%.200s'", ++ function_name, PyString_AsString(key)); ++ #else ++ "%s() got an unexpected keyword argument '%U'", ++ function_name, key); ++ #endif ++bad: ++ return -1; + } +-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { +- if (likely(err == exc_type)) return 1; +- if (likely(PyExceptionClass_Check(err))) { +- if (likely(PyExceptionClass_Check(exc_type))) { +- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); +- } else if (likely(PyTuple_Check(exc_type))) { +- return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); +- } else { +- } +- } +- return PyErr_GivenExceptionMatches(err, exc_type); ++ ++/* PyObjectSetAttrStr */ ++#if CYTHON_USE_TYPE_SLOTS ++static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { ++ PyTypeObject* tp = Py_TYPE(obj); ++ if (likely(tp->tp_setattro)) ++ return tp->tp_setattro(obj, attr_name, value); ++#if PY_MAJOR_VERSION < 3 ++ if (likely(tp->tp_setattr)) ++ return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); ++#endif ++ return PyObject_SetAttr(obj, attr_name, value); + } +-static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { +- assert(PyExceptionClass_Check(exc_type1)); +- assert(PyExceptionClass_Check(exc_type2)); +- if (likely(err == exc_type1 || err == exc_type2)) return 1; +- if (likely(PyExceptionClass_Check(err))) { +- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); ++#endif ++ ++/* PyIntBinop */ ++#if !CYTHON_COMPILING_IN_PYPY ++static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { ++ (void)inplace; ++ (void)zerodivision_check; ++ #if PY_MAJOR_VERSION < 3 ++ if (likely(PyInt_CheckExact(op1))) { ++ const long b = intval; ++ long x; ++ long a = PyInt_AS_LONG(op1); ++ x = (long)((unsigned long)a + b); ++ if (likely((x^a) >= 0 || (x^b) >= 0)) ++ return PyInt_FromLong(x); ++ return PyLong_Type.tp_as_number->nb_add(op1, op2); + } +- return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); +-} ++ #endif ++ #if CYTHON_USE_PYLONG_INTERNALS ++ if (likely(PyLong_CheckExact(op1))) { ++ const long b = intval; ++ long a, x; ++#ifdef HAVE_LONG_LONG ++ const PY_LONG_LONG llb = intval; ++ PY_LONG_LONG lla, llx; ++#endif ++ const digit* digits = ((PyLongObject*)op1)->ob_digit; ++ const Py_ssize_t size = Py_SIZE(op1); ++ if (likely(__Pyx_sst_abs(size) <= 1)) { ++ a = likely(size) ? digits[0] : 0; ++ if (size == -1) a = -a; ++ } else { ++ switch (size) { ++ case -2: ++ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { ++ a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { ++ lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { ++ a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { ++ lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ case -3: ++ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { ++ a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { ++ lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ case 3: ++ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { ++ a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { ++ lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ case -4: ++ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { ++ a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { ++ lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; + #endif +- +-/* ExtTypeTest */ +-static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { +- if (unlikely(!type)) { +- PyErr_SetString(PyExc_SystemError, "Missing type object"); +- return 0; +- } +- if (likely(__Pyx_TypeCheck(obj, type))) +- return 1; +- PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", +- Py_TYPE(obj)->tp_name, type->tp_name); +- return 0; +-} +- +-/* DictGetItem */ +-#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +-static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { +- PyObject *value; +- value = PyDict_GetItemWithError(d, key); +- if (unlikely(!value)) { +- if (!PyErr_Occurred()) { +- if (unlikely(PyTuple_Check(key))) { +- PyObject* args = PyTuple_Pack(1, key); +- if (likely(args)) { +- PyErr_SetObject(PyExc_KeyError, args); +- Py_DECREF(args); +- } +- } else { +- PyErr_SetObject(PyExc_KeyError, key); ++ } ++ CYTHON_FALLTHROUGH; ++ case 4: ++ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { ++ a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { ++ lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } +- return NULL; +- } +- Py_INCREF(value); +- return value; +-} ++ x = a + b; ++ return PyLong_FromLong(x); ++#ifdef HAVE_LONG_LONG ++ long_long: ++ llx = lla + llb; ++ return PyLong_FromLongLong(llx); + #endif +- +-/* RaiseTooManyValuesToUnpack */ +-static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { +- PyErr_Format(PyExc_ValueError, +- "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +-} +- +-/* RaiseNeedMoreValuesToUnpack */ +-static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { +- PyErr_Format(PyExc_ValueError, +- "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", +- index, (index == 1) ? "" : "s"); +-} +- +-/* IterFinish */ +-static CYTHON_INLINE int __Pyx_IterFinish(void) { +-#if CYTHON_FAST_THREAD_STATE +- PyThreadState *tstate = __Pyx_PyThreadState_Current; +- PyObject* exc_type = tstate->curexc_type; +- if (unlikely(exc_type)) { +- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { +- PyObject *exc_value, *exc_tb; +- exc_value = tstate->curexc_value; +- exc_tb = tstate->curexc_traceback; +- tstate->curexc_type = 0; +- tstate->curexc_value = 0; +- tstate->curexc_traceback = 0; +- Py_DECREF(exc_type); +- Py_XDECREF(exc_value); +- Py_XDECREF(exc_tb); +- return 0; +- } else { +- return -1; +- } +- } +- return 0; +-#else +- if (unlikely(PyErr_Occurred())) { +- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { +- PyErr_Clear(); +- return 0; +- } else { +- return -1; +- } ++ ++ + } +- return 0; +-#endif +-} +- +-/* UnpackItemEndCheck */ +-static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { +- if (unlikely(retval)) { +- Py_DECREF(retval); +- __Pyx_RaiseTooManyValuesError(expected); +- return -1; +- } else { +- return __Pyx_IterFinish(); ++ #endif ++ if (PyFloat_CheckExact(op1)) { ++ const long b = intval; ++ double a = PyFloat_AS_DOUBLE(op1); ++ double result; ++ PyFPE_START_PROTECT("add", return NULL) ++ result = ((double)a) + (double)b; ++ PyFPE_END_PROTECT(result) ++ return PyFloat_FromDouble(result); + } +- return 0; ++ return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); + } ++#endif + +-/* Import */ +-static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { +- PyObject *empty_list = 0; +- PyObject *module = 0; +- PyObject *global_dict = 0; +- PyObject *empty_dict = 0; +- PyObject *list; ++/* PyIntBinop */ ++#if !CYTHON_COMPILING_IN_PYPY ++static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { ++ (void)inplace; ++ (void)zerodivision_check; + #if PY_MAJOR_VERSION < 3 +- PyObject *py_import; +- py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); +- if (!py_import) +- goto bad; +- #endif +- if (from_list) +- list = from_list; +- else { +- empty_list = PyList_New(0); +- if (!empty_list) +- goto bad; +- list = empty_list; ++ if (likely(PyInt_CheckExact(op1))) { ++ const long b = intval; ++ long x; ++ long a = PyInt_AS_LONG(op1); ++ x = (long)((unsigned long)a - b); ++ if (likely((x^a) >= 0 || (x^~b) >= 0)) ++ return PyInt_FromLong(x); ++ return PyLong_Type.tp_as_number->nb_subtract(op1, op2); + } +- global_dict = PyModule_GetDict(__pyx_m); +- if (!global_dict) +- goto bad; +- empty_dict = PyDict_New(); +- if (!empty_dict) +- goto bad; +- { +- #if PY_MAJOR_VERSION >= 3 +- if (level == -1) { +- if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { +- module = PyImport_ImportModuleLevelObject( +- name, global_dict, empty_dict, list, 1); +- if (!module) { +- if (!PyErr_ExceptionMatches(PyExc_ImportError)) +- goto bad; +- PyErr_Clear(); +- } ++ #endif ++ #if CYTHON_USE_PYLONG_INTERNALS ++ if (likely(PyLong_CheckExact(op1))) { ++ const long b = intval; ++ long a, x; ++#ifdef HAVE_LONG_LONG ++ const PY_LONG_LONG llb = intval; ++ PY_LONG_LONG lla, llx; ++#endif ++ const digit* digits = ((PyLongObject*)op1)->ob_digit; ++ const Py_ssize_t size = Py_SIZE(op1); ++ if (likely(__Pyx_sst_abs(size) <= 1)) { ++ a = likely(size) ? digits[0] : 0; ++ if (size == -1) a = -a; ++ } else { ++ switch (size) { ++ case -2: ++ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { ++ a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { ++ lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ case 2: ++ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { ++ a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { ++ lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ case -3: ++ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { ++ a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { ++ lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ case 3: ++ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { ++ a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { ++ lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ case -4: ++ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { ++ a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { ++ lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ case 4: ++ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { ++ a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); ++ break; ++#ifdef HAVE_LONG_LONG ++ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { ++ lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); ++ goto long_long; ++#endif ++ } ++ CYTHON_FALLTHROUGH; ++ default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); + } +- level = 0; +- } +- #endif +- if (!module) { +- #if PY_MAJOR_VERSION < 3 +- PyObject *py_level = PyInt_FromLong(level); +- if (!py_level) +- goto bad; +- module = PyObject_CallFunctionObjArgs(py_import, +- name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); +- Py_DECREF(py_level); +- #else +- module = PyImport_ImportModuleLevelObject( +- name, global_dict, empty_dict, list, level); +- #endif + } +- } +-bad: +- #if PY_MAJOR_VERSION < 3 +- Py_XDECREF(py_import); +- #endif +- Py_XDECREF(empty_list); +- Py_XDECREF(empty_dict); +- return module; +-} +- +-/* ImportFrom */ +-static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { +- PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); +- if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { +- PyErr_Format(PyExc_ImportError, +- #if PY_MAJOR_VERSION < 3 +- "cannot import name %.230s", PyString_AS_STRING(name)); +- #else +- "cannot import name %S", name); +- #endif +- } +- return value; +-} +- +-/* HasAttr */ +-static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { +- PyObject *r; +- if (unlikely(!__Pyx_PyBaseString_Check(n))) { +- PyErr_SetString(PyExc_TypeError, +- "hasattr(): attribute name must be string"); +- return -1; +- } +- r = __Pyx_GetAttr(o, n); +- if (unlikely(!r)) { +- PyErr_Clear(); +- return 0; +- } else { +- Py_DECREF(r); +- return 1; +- } +-} +- +-/* PyObject_GenericGetAttrNoDict */ +-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +-static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { +- PyErr_Format(PyExc_AttributeError, +-#if PY_MAJOR_VERSION >= 3 +- "'%.50s' object has no attribute '%U'", +- tp->tp_name, attr_name); +-#else +- "'%.50s' object has no attribute '%.400s'", +- tp->tp_name, PyString_AS_STRING(attr_name)); ++ x = a - b; ++ return PyLong_FromLong(x); ++#ifdef HAVE_LONG_LONG ++ long_long: ++ llx = lla - llb; ++ return PyLong_FromLongLong(llx); + #endif +- return NULL; +-} +-static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { +- PyObject *descr; +- PyTypeObject *tp = Py_TYPE(obj); +- if (unlikely(!PyString_Check(attr_name))) { +- return PyObject_GenericGetAttr(obj, attr_name); +- } +- assert(!tp->tp_dictoffset); +- descr = _PyType_Lookup(tp, attr_name); +- if (unlikely(!descr)) { +- return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); ++ ++ + } +- Py_INCREF(descr); +- #if PY_MAJOR_VERSION < 3 +- if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif +- { +- descrgetfunc f = Py_TYPE(descr)->tp_descr_get; +- if (unlikely(f)) { +- PyObject *res = f(descr, obj, (PyObject *)tp); +- Py_DECREF(descr); +- return res; +- } ++ if (PyFloat_CheckExact(op1)) { ++ const long b = intval; ++ double a = PyFloat_AS_DOUBLE(op1); ++ double result; ++ PyFPE_START_PROTECT("subtract", return NULL) ++ result = ((double)a) - (double)b; ++ PyFPE_END_PROTECT(result) ++ return PyFloat_FromDouble(result); + } +- return descr; ++ return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); + } + #endif + +-/* PyObject_GenericGetAttr */ +-#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +-static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { +- if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { +- return PyObject_GenericGetAttr(obj, attr_name); +- } +- return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); +-} ++/* WriteUnraisableException */ ++static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, ++ CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, ++ int full_traceback, CYTHON_UNUSED int nogil) { ++ PyObject *old_exc, *old_val, *old_tb; ++ PyObject *ctx; ++ __Pyx_PyThreadState_declare ++#ifdef WITH_THREAD ++ PyGILState_STATE state; ++ if (nogil) ++ state = PyGILState_Ensure(); ++#ifdef _MSC_VER ++ else state = (PyGILState_STATE)-1; + #endif +- +-/* SetVTable */ +-static int __Pyx_SetVtable(PyObject *dict, void *vtable) { +-#if PY_VERSION_HEX >= 0x02070000 +- PyObject *ob = PyCapsule_New(vtable, 0, 0); +-#else +- PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); + #endif +- if (!ob) +- goto bad; +- if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) +- goto bad; +- Py_DECREF(ob); +- return 0; +-bad: +- Py_XDECREF(ob); +- return -1; +-} +- +-/* PyObjectGetAttrStrNoError */ +-static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { +- __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign +- if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) +- __Pyx_PyErr_Clear(); +-} +-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { +- PyObject *result; +-#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 +- PyTypeObject* tp = Py_TYPE(obj); +- if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { +- return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); ++ __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); ++ if (full_traceback) { ++ Py_XINCREF(old_exc); ++ Py_XINCREF(old_val); ++ Py_XINCREF(old_tb); ++ __Pyx_ErrRestore(old_exc, old_val, old_tb); ++ PyErr_PrintEx(1); + } +-#endif +- result = __Pyx_PyObject_GetAttrStr(obj, attr_name); +- if (unlikely(!result)) { +- __Pyx_PyObject_GetAttrStr_ClearAttributeError(); ++ #if PY_MAJOR_VERSION < 3 ++ ctx = PyString_FromString(name); ++ #else ++ ctx = PyUnicode_FromString(name); ++ #endif ++ __Pyx_ErrRestore(old_exc, old_val, old_tb); ++ if (!ctx) { ++ PyErr_WriteUnraisable(Py_None); ++ } else { ++ PyErr_WriteUnraisable(ctx); ++ Py_DECREF(ctx); + } +- return result; ++#ifdef WITH_THREAD ++ if (nogil) ++ PyGILState_Release(state); ++#endif + } + +-/* SetupReduce */ +-static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { +- int ret; +- PyObject *name_attr; +- name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name); +- if (likely(name_attr)) { +- ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); +- } else { +- ret = -1; +- } +- if (unlikely(ret < 0)) { +- PyErr_Clear(); +- ret = 0; +- } +- Py_XDECREF(name_attr); +- return ret; ++/* SwapException */ ++#if CYTHON_FAST_THREAD_STATE ++static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { ++ PyObject *tmp_type, *tmp_value, *tmp_tb; ++ #if CYTHON_USE_EXC_INFO_STACK ++ _PyErr_StackItem *exc_info = tstate->exc_info; ++ tmp_type = exc_info->exc_type; ++ tmp_value = exc_info->exc_value; ++ tmp_tb = exc_info->exc_traceback; ++ exc_info->exc_type = *type; ++ exc_info->exc_value = *value; ++ exc_info->exc_traceback = *tb; ++ #else ++ tmp_type = tstate->exc_type; ++ tmp_value = tstate->exc_value; ++ tmp_tb = tstate->exc_traceback; ++ tstate->exc_type = *type; ++ tstate->exc_value = *value; ++ tstate->exc_traceback = *tb; ++ #endif ++ *type = tmp_type; ++ *value = tmp_value; ++ *tb = tmp_tb; + } +-static int __Pyx_setup_reduce(PyObject* type_obj) { +- int ret = 0; +- PyObject *object_reduce = NULL; +- PyObject *object_reduce_ex = NULL; +- PyObject *reduce = NULL; +- PyObject *reduce_ex = NULL; +- PyObject *reduce_cython = NULL; +- PyObject *setstate = NULL; +- PyObject *setstate_cython = NULL; +-#if CYTHON_USE_PYTYPE_LOOKUP +- if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; +-#else +- if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; +-#endif +-#if CYTHON_USE_PYTYPE_LOOKUP +- object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +-#else +- object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +-#endif +- reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; +- if (reduce_ex == object_reduce_ex) { +-#if CYTHON_USE_PYTYPE_LOOKUP +- object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; + #else +- object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; ++static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { ++ PyObject *tmp_type, *tmp_value, *tmp_tb; ++ PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); ++ PyErr_SetExcInfo(*type, *value, *tb); ++ *type = tmp_type; ++ *value = tmp_value; ++ *tb = tmp_tb; ++} + #endif +- reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; +- if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { +- reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); +- if (likely(reduce_cython)) { +- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; +- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; +- } else if (reduce == object_reduce || PyErr_Occurred()) { +- goto __PYX_BAD; +- } +- setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); +- if (!setstate) PyErr_Clear(); +- if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { +- setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); +- if (likely(setstate_cython)) { +- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; +- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; +- } else if (!setstate || PyErr_Occurred()) { +- goto __PYX_BAD; ++ ++/* SetItemInt */ ++static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { ++ int r; ++ if (!j) return -1; ++ r = PyObject_SetItem(o, j, v); ++ Py_DECREF(j); ++ return r; ++} ++static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, ++ CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { ++#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS ++ if (is_list || PyList_CheckExact(o)) { ++ Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); ++ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { ++ PyObject* old = PyList_GET_ITEM(o, n); ++ Py_INCREF(v); ++ PyList_SET_ITEM(o, n, v); ++ Py_DECREF(old); ++ return 1; ++ } ++ } else { ++ PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; ++ if (likely(m && m->sq_ass_item)) { ++ if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { ++ Py_ssize_t l = m->sq_length(o); ++ if (likely(l >= 0)) { ++ i += l; ++ } else { ++ if (!PyErr_ExceptionMatches(PyExc_OverflowError)) ++ return -1; ++ PyErr_Clear(); + } + } +- PyType_Modified((PyTypeObject*)type_obj); ++ return m->sq_ass_item(o, i, v); + } + } +- goto __PYX_GOOD; +-__PYX_BAD: +- if (!PyErr_Occurred()) +- PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); +- ret = -1; +-__PYX_GOOD: +-#if !CYTHON_USE_PYTYPE_LOOKUP +- Py_XDECREF(object_reduce); +- Py_XDECREF(object_reduce_ex); ++#else ++#if CYTHON_COMPILING_IN_PYPY ++ if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) ++#else ++ if (is_list || PySequence_Check(o)) + #endif +- Py_XDECREF(reduce); +- Py_XDECREF(reduce_ex); +- Py_XDECREF(reduce_cython); +- Py_XDECREF(setstate); +- Py_XDECREF(setstate_cython); +- return ret; ++ { ++ return PySequence_SetItem(o, i, v); ++ } ++#endif ++ return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); + } + +-/* CalculateMetaclass */ +-static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { +- Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); +- for (i=0; i < nbases; i++) { +- PyTypeObject *tmptype; +- PyObject *tmp = PyTuple_GET_ITEM(bases, i); +- tmptype = Py_TYPE(tmp); +-#if PY_MAJOR_VERSION < 3 +- if (tmptype == &PyClass_Type) +- continue; +-#endif +- if (!metaclass) { +- metaclass = tmptype; +- continue; ++/* FastTypeChecks */ ++#if CYTHON_COMPILING_IN_CPYTHON ++static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { ++ while (a) { ++ a = a->tp_base; ++ if (a == b) ++ return 1; ++ } ++ return b == &PyBaseObject_Type; ++} ++static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { ++ PyObject *mro; ++ if (a == b) return 1; ++ mro = a->tp_mro; ++ if (likely(mro)) { ++ Py_ssize_t i, n; ++ n = PyTuple_GET_SIZE(mro); ++ for (i = 0; i < n; i++) { ++ if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) ++ return 1; + } +- if (PyType_IsSubtype(metaclass, tmptype)) +- continue; +- if (PyType_IsSubtype(tmptype, metaclass)) { +- metaclass = tmptype; +- continue; ++ return 0; ++ } ++ return __Pyx_InBases(a, b); ++} ++#if PY_MAJOR_VERSION == 2 ++static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { ++ PyObject *exception, *value, *tb; ++ int res; ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ __Pyx_ErrFetch(&exception, &value, &tb); ++ res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; ++ if (unlikely(res == -1)) { ++ PyErr_WriteUnraisable(err); ++ res = 0; ++ } ++ if (!res) { ++ res = PyObject_IsSubclass(err, exc_type2); ++ if (unlikely(res == -1)) { ++ PyErr_WriteUnraisable(err); ++ res = 0; + } +- PyErr_SetString(PyExc_TypeError, +- "metaclass conflict: " +- "the metaclass of a derived class " +- "must be a (non-strict) subclass " +- "of the metaclasses of all its bases"); +- return NULL; + } +- if (!metaclass) { +-#if PY_MAJOR_VERSION < 3 +- metaclass = &PyClass_Type; ++ __Pyx_ErrRestore(exception, value, tb); ++ return res; ++} + #else +- metaclass = &PyType_Type; +-#endif ++static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { ++ int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; ++ if (!res) { ++ res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +- Py_INCREF((PyObject*) metaclass); +- return (PyObject*) metaclass; ++ return res; + } +- +-/* Py3ClassCreate */ +-static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, +- PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { +- PyObject *ns; +- if (metaclass) { +- PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); +- if (prep) { +- PyObject *pargs = PyTuple_Pack(2, name, bases); +- if (unlikely(!pargs)) { +- Py_DECREF(prep); +- return NULL; +- } +- ns = PyObject_Call(prep, pargs, mkw); +- Py_DECREF(prep); +- Py_DECREF(pargs); ++#endif ++static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { ++ Py_ssize_t i, n; ++ assert(PyExceptionClass_Check(exc_type)); ++ n = PyTuple_GET_SIZE(tuple); ++#if PY_MAJOR_VERSION >= 3 ++ for (i=0; itp_name, type->tp_name); ++ return 0; + } + +-/* CLineInTraceback */ +-#ifndef CYTHON_CLINE_IN_TRACEBACK +-static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { +- PyObject *use_cline; +- PyObject *ptype, *pvalue, *ptraceback; +-#if CYTHON_COMPILING_IN_CPYTHON +- PyObject **cython_runtime_dict; +-#endif +- if (unlikely(!__pyx_cython_runtime)) { +- return c_line; +- } +- __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +-#if CYTHON_COMPILING_IN_CPYTHON +- cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); +- if (likely(cython_runtime_dict)) { +- __PYX_PY_DICT_LOOKUP_IF_MODIFIED( +- use_cline, *cython_runtime_dict, +- __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) +- } else +-#endif +- { +- PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); +- if (use_cline_obj) { +- use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; +- Py_DECREF(use_cline_obj); +- } else { +- PyErr_Clear(); +- use_cline = NULL; +- } +- } +- if (!use_cline) { +- c_line = 0; +- PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); +- } +- else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { +- c_line = 0; ++/* DictGetItem */ ++#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY ++static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { ++ PyObject *value; ++ value = PyDict_GetItemWithError(d, key); ++ if (unlikely(!value)) { ++ if (!PyErr_Occurred()) { ++ if (unlikely(PyTuple_Check(key))) { ++ PyObject* args = PyTuple_Pack(1, key); ++ if (likely(args)) { ++ PyErr_SetObject(PyExc_KeyError, args); ++ Py_DECREF(args); ++ } ++ } else { ++ PyErr_SetObject(PyExc_KeyError, key); ++ } ++ } ++ return NULL; + } +- __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); +- return c_line; ++ Py_INCREF(value); ++ return value; + } + #endif + +-/* CodeObjectCache */ +-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { +- int start = 0, mid = 0, end = count - 1; +- if (end >= 0 && code_line > entries[end].code_line) { +- return count; +- } +- while (start < end) { +- mid = start + (end - start) / 2; +- if (code_line < entries[mid].code_line) { +- end = mid; +- } else if (code_line > entries[mid].code_line) { +- start = mid + 1; ++/* RaiseTooManyValuesToUnpack */ ++static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { ++ PyErr_Format(PyExc_ValueError, ++ "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); ++} ++ ++/* RaiseNeedMoreValuesToUnpack */ ++static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { ++ PyErr_Format(PyExc_ValueError, ++ "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", ++ index, (index == 1) ? "" : "s"); ++} ++ ++/* IterFinish */ ++static CYTHON_INLINE int __Pyx_IterFinish(void) { ++#if CYTHON_FAST_THREAD_STATE ++ PyThreadState *tstate = __Pyx_PyThreadState_Current; ++ PyObject* exc_type = tstate->curexc_type; ++ if (unlikely(exc_type)) { ++ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { ++ PyObject *exc_value, *exc_tb; ++ exc_value = tstate->curexc_value; ++ exc_tb = tstate->curexc_traceback; ++ tstate->curexc_type = 0; ++ tstate->curexc_value = 0; ++ tstate->curexc_traceback = 0; ++ Py_DECREF(exc_type); ++ Py_XDECREF(exc_value); ++ Py_XDECREF(exc_tb); ++ return 0; + } else { +- return mid; ++ return -1; + } + } +- if (code_line <= entries[mid].code_line) { +- return mid; +- } else { +- return mid + 1; ++ return 0; ++#else ++ if (unlikely(PyErr_Occurred())) { ++ if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { ++ PyErr_Clear(); ++ return 0; ++ } else { ++ return -1; ++ } + } ++ return 0; ++#endif + } +-static PyCodeObject *__pyx_find_code_object(int code_line) { +- PyCodeObject* code_object; +- int pos; +- if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { +- return NULL; +- } +- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); +- if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { +- return NULL; ++ ++/* UnpackItemEndCheck */ ++static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { ++ if (unlikely(retval)) { ++ Py_DECREF(retval); ++ __Pyx_RaiseTooManyValuesError(expected); ++ return -1; ++ } else { ++ return __Pyx_IterFinish(); + } +- code_object = __pyx_code_cache.entries[pos].code_object; +- Py_INCREF(code_object); +- return code_object; ++ return 0; + } +-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { +- int pos, i; +- __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; +- if (unlikely(!code_line)) { +- return; ++ ++/* Import */ ++static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { ++ PyObject *empty_list = 0; ++ PyObject *module = 0; ++ PyObject *global_dict = 0; ++ PyObject *empty_dict = 0; ++ PyObject *list; ++ #if PY_MAJOR_VERSION < 3 ++ PyObject *py_import; ++ py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); ++ if (!py_import) ++ goto bad; ++ #endif ++ if (from_list) ++ list = from_list; ++ else { ++ empty_list = PyList_New(0); ++ if (!empty_list) ++ goto bad; ++ list = empty_list; + } +- if (unlikely(!entries)) { +- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); +- if (likely(entries)) { +- __pyx_code_cache.entries = entries; +- __pyx_code_cache.max_count = 64; +- __pyx_code_cache.count = 1; +- entries[0].code_line = code_line; +- entries[0].code_object = code_object; +- Py_INCREF(code_object); ++ global_dict = PyModule_GetDict(__pyx_m); ++ if (!global_dict) ++ goto bad; ++ empty_dict = PyDict_New(); ++ if (!empty_dict) ++ goto bad; ++ { ++ #if PY_MAJOR_VERSION >= 3 ++ if (level == -1) { ++ if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { ++ module = PyImport_ImportModuleLevelObject( ++ name, global_dict, empty_dict, list, 1); ++ if (!module) { ++ if (!PyErr_ExceptionMatches(PyExc_ImportError)) ++ goto bad; ++ PyErr_Clear(); ++ } ++ } ++ level = 0; + } +- return; +- } +- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); +- if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { +- PyCodeObject* tmp = entries[pos].code_object; +- entries[pos].code_object = code_object; +- Py_DECREF(tmp); +- return; +- } +- if (__pyx_code_cache.count == __pyx_code_cache.max_count) { +- int new_max = __pyx_code_cache.max_count + 64; +- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( +- __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); +- if (unlikely(!entries)) { +- return; ++ #endif ++ if (!module) { ++ #if PY_MAJOR_VERSION < 3 ++ PyObject *py_level = PyInt_FromLong(level); ++ if (!py_level) ++ goto bad; ++ module = PyObject_CallFunctionObjArgs(py_import, ++ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); ++ Py_DECREF(py_level); ++ #else ++ module = PyImport_ImportModuleLevelObject( ++ name, global_dict, empty_dict, list, level); ++ #endif + } +- __pyx_code_cache.entries = entries; +- __pyx_code_cache.max_count = new_max; +- } +- for (i=__pyx_code_cache.count; i>pos; i--) { +- entries[i] = entries[i-1]; + } +- entries[pos].code_line = code_line; +- entries[pos].code_object = code_object; +- __pyx_code_cache.count++; +- Py_INCREF(code_object); +-} +- +-/* AddTraceback */ +-#include "compile.h" +-#include "frameobject.h" +-#include "traceback.h" +-static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( +- const char *funcname, int c_line, +- int py_line, const char *filename) { +- PyCodeObject *py_code = 0; +- PyObject *py_srcfile = 0; +- PyObject *py_funcname = 0; ++bad: + #if PY_MAJOR_VERSION < 3 +- py_srcfile = PyString_FromString(filename); +- #else +- py_srcfile = PyUnicode_FromString(filename); ++ Py_XDECREF(py_import); + #endif +- if (!py_srcfile) goto bad; +- if (c_line) { +- #if PY_MAJOR_VERSION < 3 +- py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); +- #else +- py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); +- #endif +- } +- else { ++ Py_XDECREF(empty_list); ++ Py_XDECREF(empty_dict); ++ return module; ++} ++ ++/* ImportFrom */ ++static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { ++ PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); ++ if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { ++ PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 +- py_funcname = PyString_FromString(funcname); ++ "cannot import name %.230s", PyString_AS_STRING(name)); + #else +- py_funcname = PyUnicode_FromString(funcname); ++ "cannot import name %S", name); + #endif + } +- if (!py_funcname) goto bad; +- py_code = __Pyx_PyCode_New( +- 0, +- 0, +- 0, +- 0, +- 0, +- __pyx_empty_bytes, /*PyObject *code,*/ +- __pyx_empty_tuple, /*PyObject *consts,*/ +- __pyx_empty_tuple, /*PyObject *names,*/ +- __pyx_empty_tuple, /*PyObject *varnames,*/ +- __pyx_empty_tuple, /*PyObject *freevars,*/ +- __pyx_empty_tuple, /*PyObject *cellvars,*/ +- py_srcfile, /*PyObject *filename,*/ +- py_funcname, /*PyObject *name,*/ +- py_line, +- __pyx_empty_bytes /*PyObject *lnotab*/ +- ); +- Py_DECREF(py_srcfile); +- Py_DECREF(py_funcname); +- return py_code; +-bad: +- Py_XDECREF(py_srcfile); +- Py_XDECREF(py_funcname); +- return NULL; ++ return value; + } +-static void __Pyx_AddTraceback(const char *funcname, int c_line, +- int py_line, const char *filename) { +- PyCodeObject *py_code = 0; +- PyFrameObject *py_frame = 0; +- PyThreadState *tstate = __Pyx_PyThreadState_Current; +- if (c_line) { +- c_line = __Pyx_CLineForTraceback(tstate, c_line); ++ ++/* HasAttr */ ++static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { ++ PyObject *r; ++ if (unlikely(!__Pyx_PyBaseString_Check(n))) { ++ PyErr_SetString(PyExc_TypeError, ++ "hasattr(): attribute name must be string"); ++ return -1; + } +- py_code = __pyx_find_code_object(c_line ? -c_line : py_line); +- if (!py_code) { +- py_code = __Pyx_CreateCodeObjectForTraceback( +- funcname, c_line, py_line, filename); +- if (!py_code) goto bad; +- __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); ++ r = __Pyx_GetAttr(o, n); ++ if (unlikely(!r)) { ++ PyErr_Clear(); ++ return 0; ++ } else { ++ Py_DECREF(r); ++ return 1; + } +- py_frame = PyFrame_New( +- tstate, /*PyThreadState *tstate,*/ +- py_code, /*PyCodeObject *code,*/ +- __pyx_d, /*PyObject *globals,*/ +- 0 /*PyObject *locals*/ +- ); +- if (!py_frame) goto bad; +- __Pyx_PyFrame_SetLineNumber(py_frame, py_line); +- PyTraceBack_Here(py_frame); +-bad: +- Py_XDECREF(py_code); +- Py_XDECREF(py_frame); + } + +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { +- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(int) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(int) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(int) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); ++/* PyObject_GenericGetAttrNoDict */ ++#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 ++static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { ++ PyErr_Format(PyExc_AttributeError, ++#if PY_MAJOR_VERSION >= 3 ++ "'%.50s' object has no attribute '%U'", ++ tp->tp_name, attr_name); ++#else ++ "'%.50s' object has no attribute '%.400s'", ++ tp->tp_name, PyString_AS_STRING(attr_name)); + #endif +- } ++ return NULL; ++} ++static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { ++ PyObject *descr; ++ PyTypeObject *tp = Py_TYPE(obj); ++ if (unlikely(!PyString_Check(attr_name))) { ++ return PyObject_GenericGetAttr(obj, attr_name); ++ } ++ assert(!tp->tp_dictoffset); ++ descr = _PyType_Lookup(tp, attr_name); ++ if (unlikely(!descr)) { ++ return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } ++ Py_INCREF(descr); ++ #if PY_MAJOR_VERSION < 3 ++ if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) ++ #endif + { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(int), +- little, !is_unsigned); ++ descrgetfunc f = Py_TYPE(descr)->tp_descr_get; ++ if (unlikely(f)) { ++ PyObject *res = f(descr, obj, (PyObject *)tp); ++ Py_DECREF(descr); ++ return res; ++ } + } ++ return descr; + } ++#endif + +-/* CIntFromPyVerify */ +-#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ +- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +-#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ +- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +-#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ +- {\ +- func_type value = func_value;\ +- if (sizeof(target_type) < sizeof(func_type)) {\ +- if (unlikely(value != (func_type) (target_type) value)) {\ +- func_type zero = 0;\ +- if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ +- return (target_type) -1;\ +- if (is_unsigned && unlikely(value < zero))\ +- goto raise_neg_overflow;\ +- else\ +- goto raise_overflow;\ +- }\ +- }\ +- return (target_type) value;\ ++/* PyObject_GenericGetAttr */ ++#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 ++static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { ++ if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { ++ return PyObject_GenericGetAttr(obj, attr_name); + } ++ return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); ++} ++#endif + +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_event_id(enum mpv_event_id value) { +- const enum mpv_event_id neg_one = (enum mpv_event_id) ((enum mpv_event_id) 0 - (enum mpv_event_id) 1), const_zero = (enum mpv_event_id) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(enum mpv_event_id) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(enum mpv_event_id) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_event_id) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++/* SetVTable */ ++static int __Pyx_SetVtable(PyObject *dict, void *vtable) { ++#if PY_VERSION_HEX >= 0x02070000 ++ PyObject *ob = PyCapsule_New(vtable, 0, 0); ++#else ++ PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); ++#endif ++ if (!ob) ++ goto bad; ++ if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) ++ goto bad; ++ Py_DECREF(ob); ++ return 0; ++bad: ++ Py_XDECREF(ob); ++ return -1; ++} ++ ++/* PyObjectGetAttrStrNoError */ ++static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) ++ __Pyx_PyErr_Clear(); ++} ++static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { ++ PyObject *result; ++#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 ++ PyTypeObject* tp = Py_TYPE(obj); ++ if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { ++ return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); ++ } ++#endif ++ result = __Pyx_PyObject_GetAttrStr(obj, attr_name); ++ if (unlikely(!result)) { ++ __Pyx_PyObject_GetAttrStr_ClearAttributeError(); ++ } ++ return result; ++} ++ ++/* SetupReduce */ ++static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { ++ int ret; ++ PyObject *name_attr; ++ name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name); ++ if (likely(name_attr)) { ++ ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); ++ } else { ++ ret = -1; ++ } ++ if (unlikely(ret < 0)) { ++ PyErr_Clear(); ++ ret = 0; ++ } ++ Py_XDECREF(name_attr); ++ return ret; ++} ++static int __Pyx_setup_reduce(PyObject* type_obj) { ++ int ret = 0; ++ PyObject *object_reduce = NULL; ++ PyObject *object_reduce_ex = NULL; ++ PyObject *reduce = NULL; ++ PyObject *reduce_ex = NULL; ++ PyObject *reduce_cython = NULL; ++ PyObject *setstate = NULL; ++ PyObject *setstate_cython = NULL; ++#if CYTHON_USE_PYTYPE_LOOKUP ++ if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; ++#else ++ if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; + #endif +- } +- } else { +- if (sizeof(enum mpv_event_id) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_event_id) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); ++#if CYTHON_USE_PYTYPE_LOOKUP ++ object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; ++#else ++ object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; ++#endif ++ reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; ++ if (reduce_ex == object_reduce_ex) { ++#if CYTHON_USE_PYTYPE_LOOKUP ++ object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; ++#else ++ object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; + #endif ++ reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; ++ if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { ++ reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); ++ if (likely(reduce_cython)) { ++ ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ++ ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ++ } else if (reduce == object_reduce || PyErr_Occurred()) { ++ goto __PYX_BAD; ++ } ++ setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); ++ if (!setstate) PyErr_Clear(); ++ if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { ++ setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); ++ if (likely(setstate_cython)) { ++ ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ++ ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ++ } else if (!setstate || PyErr_Occurred()) { ++ goto __PYX_BAD; ++ } ++ } ++ PyType_Modified((PyTypeObject*)type_obj); + } + } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_event_id), +- little, !is_unsigned); +- } ++ goto __PYX_GOOD; ++__PYX_BAD: ++ if (!PyErr_Occurred()) ++ PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); ++ ret = -1; ++__PYX_GOOD: ++#if !CYTHON_USE_PYTYPE_LOOKUP ++ Py_XDECREF(object_reduce); ++ Py_XDECREF(object_reduce_ex); ++#endif ++ Py_XDECREF(reduce); ++ Py_XDECREF(reduce_ex); ++ Py_XDECREF(reduce_cython); ++ Py_XDECREF(setstate); ++ Py_XDECREF(setstate_cython); ++ return ret; + } + +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) { +- const unsigned long neg_one = (unsigned long) ((unsigned long) 0 - (unsigned long) 1), const_zero = (unsigned long) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(unsigned long) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(unsigned long) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++/* CalculateMetaclass */ ++static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { ++ Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); ++ for (i=0; i < nbases; i++) { ++ PyTypeObject *tmptype; ++ PyObject *tmp = PyTuple_GET_ITEM(bases, i); ++ tmptype = Py_TYPE(tmp); ++#if PY_MAJOR_VERSION < 3 ++ if (tmptype == &PyClass_Type) ++ continue; + #endif ++ if (!metaclass) { ++ metaclass = tmptype; ++ continue; + } +- } else { +- if (sizeof(unsigned long) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif ++ if (PyType_IsSubtype(metaclass, tmptype)) ++ continue; ++ if (PyType_IsSubtype(tmptype, metaclass)) { ++ metaclass = tmptype; ++ continue; + } ++ PyErr_SetString(PyExc_TypeError, ++ "metaclass conflict: " ++ "the metaclass of a derived class " ++ "must be a (non-strict) subclass " ++ "of the metaclasses of all its bases"); ++ return NULL; + } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(unsigned long), +- little, !is_unsigned); ++ if (!metaclass) { ++#if PY_MAJOR_VERSION < 3 ++ metaclass = &PyClass_Type; ++#else ++ metaclass = &PyType_Type; ++#endif + } ++ Py_INCREF((PyObject*) metaclass); ++ return (PyObject*) metaclass; + } + +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_error(enum mpv_error value) { +- const enum mpv_error neg_one = (enum mpv_error) ((enum mpv_error) 0 - (enum mpv_error) 1), const_zero = (enum mpv_error) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(enum mpv_error) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(enum mpv_error) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_error) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif ++/* Py3ClassCreate */ ++static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, ++ PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { ++ PyObject *ns; ++ if (metaclass) { ++ PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); ++ if (prep) { ++ PyObject *pargs = PyTuple_Pack(2, name, bases); ++ if (unlikely(!pargs)) { ++ Py_DECREF(prep); ++ return NULL; ++ } ++ ns = PyObject_Call(prep, pargs, mkw); ++ Py_DECREF(prep); ++ Py_DECREF(pargs); ++ } else { ++ if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) ++ return NULL; ++ PyErr_Clear(); ++ ns = PyDict_New(); + } + } else { +- if (sizeof(enum mpv_error) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_error) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } +- } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_error), +- little, !is_unsigned); ++ ns = PyDict_New(); + } ++ if (unlikely(!ns)) ++ return NULL; ++ if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; ++ if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; ++ if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; ++ return ns; ++bad: ++ Py_DECREF(ns); ++ return NULL; + } +- +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_log_level(enum mpv_log_level value) { +- const enum mpv_log_level neg_one = (enum mpv_log_level) ((enum mpv_log_level) 0 - (enum mpv_log_level) 1), const_zero = (enum mpv_log_level) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(enum mpv_log_level) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(enum mpv_log_level) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_log_level) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif ++static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, ++ PyObject *dict, PyObject *mkw, ++ int calculate_metaclass, int allow_py2_metaclass) { ++ PyObject *result, *margs; ++ PyObject *owned_metaclass = NULL; ++ if (allow_py2_metaclass) { ++ owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); ++ if (owned_metaclass) { ++ metaclass = owned_metaclass; ++ } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { ++ PyErr_Clear(); ++ } else { ++ return NULL; + } ++ } ++ if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { ++ metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); ++ Py_XDECREF(owned_metaclass); ++ if (unlikely(!metaclass)) ++ return NULL; ++ owned_metaclass = metaclass; ++ } ++ margs = PyTuple_Pack(3, name, bases, dict); ++ if (unlikely(!margs)) { ++ result = NULL; + } else { +- if (sizeof(enum mpv_log_level) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_log_level) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } ++ result = PyObject_Call(metaclass, margs, mkw); ++ Py_DECREF(margs); + } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_log_level), +- little, !is_unsigned); ++ Py_XDECREF(owned_metaclass); ++ return result; ++} ++ ++/* GetNameInClass */ ++static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) { ++ PyObject *result; ++ __Pyx_PyThreadState_declare ++ __Pyx_PyThreadState_assign ++ if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) ++ return NULL; ++ __Pyx_PyErr_Clear(); ++ __Pyx_GetModuleGlobalNameUncached(result, name); ++ return result; ++} ++static PyObject *__Pyx__GetNameInClass(PyObject *nmspace, PyObject *name) { ++ PyObject *result; ++ result = __Pyx_PyObject_GetAttrStr(nmspace, name); ++ if (!result) { ++ result = __Pyx_GetGlobalNameAfterAttributeLookup(name); + } ++ return result; + } + +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_end_file_reason(enum mpv_end_file_reason value) { +- const enum mpv_end_file_reason neg_one = (enum mpv_end_file_reason) ((enum mpv_end_file_reason) 0 - (enum mpv_end_file_reason) 1), const_zero = (enum mpv_end_file_reason) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(enum mpv_end_file_reason) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(enum mpv_end_file_reason) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_end_file_reason) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(enum mpv_end_file_reason) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_end_file_reason) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); ++/* CLineInTraceback */ ++#ifndef CYTHON_CLINE_IN_TRACEBACK ++static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { ++ PyObject *use_cline; ++ PyObject *ptype, *pvalue, *ptraceback; ++#if CYTHON_COMPILING_IN_CPYTHON ++ PyObject **cython_runtime_dict; + #endif +- } ++ if (unlikely(!__pyx_cython_runtime)) { ++ return c_line; + } ++ __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); ++#if CYTHON_COMPILING_IN_CPYTHON ++ cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); ++ if (likely(cython_runtime_dict)) { ++ __PYX_PY_DICT_LOOKUP_IF_MODIFIED( ++ use_cline, *cython_runtime_dict, ++ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) ++ } else ++#endif + { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_end_file_reason), +- little, !is_unsigned); ++ PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); ++ if (use_cline_obj) { ++ use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; ++ Py_DECREF(use_cline_obj); ++ } else { ++ PyErr_Clear(); ++ use_cline = NULL; ++ } ++ } ++ if (!use_cline) { ++ c_line = 0; ++ (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); ++ } ++ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { ++ c_line = 0; + } ++ __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); ++ return c_line; + } +- +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_render_update_flag(enum mpv_render_update_flag value) { +- const enum mpv_render_update_flag neg_one = (enum mpv_render_update_flag) ((enum mpv_render_update_flag) 0 - (enum mpv_render_update_flag) 1), const_zero = (enum mpv_render_update_flag) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(enum mpv_render_update_flag) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(enum mpv_render_update_flag) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_render_update_flag) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + #endif ++ ++/* CodeObjectCache */ ++static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { ++ int start = 0, mid = 0, end = count - 1; ++ if (end >= 0 && code_line > entries[end].code_line) { ++ return count; ++ } ++ while (start < end) { ++ mid = start + (end - start) / 2; ++ if (code_line < entries[mid].code_line) { ++ end = mid; ++ } else if (code_line > entries[mid].code_line) { ++ start = mid + 1; ++ } else { ++ return mid; + } ++ } ++ if (code_line <= entries[mid].code_line) { ++ return mid; + } else { +- if (sizeof(enum mpv_render_update_flag) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_render_update_flag) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } ++ return mid + 1; + } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_render_update_flag), +- little, !is_unsigned); ++} ++static PyCodeObject *__pyx_find_code_object(int code_line) { ++ PyCodeObject* code_object; ++ int pos; ++ if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { ++ return NULL; ++ } ++ pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); ++ if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { ++ return NULL; + } ++ code_object = __pyx_code_cache.entries[pos].code_object; ++ Py_INCREF(code_object); ++ return code_object; + } +- +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) { +- const int64_t neg_one = (int64_t) ((int64_t) 0 - (int64_t) 1), const_zero = (int64_t) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(int64_t) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(int64_t) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif ++static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { ++ int pos, i; ++ __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; ++ if (unlikely(!code_line)) { ++ return; ++ } ++ if (unlikely(!entries)) { ++ entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); ++ if (likely(entries)) { ++ __pyx_code_cache.entries = entries; ++ __pyx_code_cache.max_count = 64; ++ __pyx_code_cache.count = 1; ++ entries[0].code_line = code_line; ++ entries[0].code_object = code_object; ++ Py_INCREF(code_object); + } +- } else { +- if (sizeof(int64_t) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif ++ return; ++ } ++ pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); ++ if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { ++ PyCodeObject* tmp = entries[pos].code_object; ++ entries[pos].code_object = code_object; ++ Py_DECREF(tmp); ++ return; ++ } ++ if (__pyx_code_cache.count == __pyx_code_cache.max_count) { ++ int new_max = __pyx_code_cache.max_count + 64; ++ entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( ++ __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); ++ if (unlikely(!entries)) { ++ return; + } ++ __pyx_code_cache.entries = entries; ++ __pyx_code_cache.max_count = new_max; + } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(int64_t), +- little, !is_unsigned); ++ for (i=__pyx_code_cache.count; i>pos; i--) { ++ entries[i] = entries[i-1]; + } ++ entries[pos].code_line = code_line; ++ entries[pos].code_object = code_object; ++ __pyx_code_cache.count++; ++ Py_INCREF(code_object); + } + +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) { +- const uint64_t neg_one = (uint64_t) ((uint64_t) 0 - (uint64_t) 1), const_zero = (uint64_t) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(uint64_t) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(uint64_t) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(uint64_t) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } ++/* AddTraceback */ ++#include "compile.h" ++#include "frameobject.h" ++#include "traceback.h" ++static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( ++ const char *funcname, int c_line, ++ int py_line, const char *filename) { ++ PyCodeObject *py_code = NULL; ++ PyObject *py_funcname = NULL; ++ #if PY_MAJOR_VERSION < 3 ++ PyObject *py_srcfile = NULL; ++ py_srcfile = PyString_FromString(filename); ++ if (!py_srcfile) goto bad; ++ #endif ++ if (c_line) { ++ #if PY_MAJOR_VERSION < 3 ++ py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); ++ if (!py_funcname) goto bad; ++ #else ++ py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); ++ if (!py_funcname) goto bad; ++ funcname = PyUnicode_AsUTF8(py_funcname); ++ if (!funcname) goto bad; ++ #endif ++ } ++ else { ++ #if PY_MAJOR_VERSION < 3 ++ py_funcname = PyString_FromString(funcname); ++ if (!py_funcname) goto bad; ++ #endif ++ } ++ #if PY_MAJOR_VERSION < 3 ++ py_code = __Pyx_PyCode_New( ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ __pyx_empty_bytes, /*PyObject *code,*/ ++ __pyx_empty_tuple, /*PyObject *consts,*/ ++ __pyx_empty_tuple, /*PyObject *names,*/ ++ __pyx_empty_tuple, /*PyObject *varnames,*/ ++ __pyx_empty_tuple, /*PyObject *freevars,*/ ++ __pyx_empty_tuple, /*PyObject *cellvars,*/ ++ py_srcfile, /*PyObject *filename,*/ ++ py_funcname, /*PyObject *name,*/ ++ py_line, ++ __pyx_empty_bytes /*PyObject *lnotab*/ ++ ); ++ Py_DECREF(py_srcfile); ++ #else ++ py_code = PyCode_NewEmpty(filename, funcname, py_line); ++ #endif ++ Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline ++ return py_code; ++bad: ++ Py_XDECREF(py_funcname); ++ #if PY_MAJOR_VERSION < 3 ++ Py_XDECREF(py_srcfile); ++ #endif ++ return NULL; ++} ++static void __Pyx_AddTraceback(const char *funcname, int c_line, ++ int py_line, const char *filename) { ++ PyCodeObject *py_code = 0; ++ PyFrameObject *py_frame = 0; ++ PyThreadState *tstate = __Pyx_PyThreadState_Current; ++ if (c_line) { ++ c_line = __Pyx_CLineForTraceback(tstate, c_line); + } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(uint64_t), +- little, !is_unsigned); ++ py_code = __pyx_find_code_object(c_line ? -c_line : py_line); ++ if (!py_code) { ++ py_code = __Pyx_CreateCodeObjectForTraceback( ++ funcname, c_line, py_line, filename); ++ if (!py_code) goto bad; ++ __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } ++ py_frame = PyFrame_New( ++ tstate, /*PyThreadState *tstate,*/ ++ py_code, /*PyCodeObject *code,*/ ++ __pyx_d, /*PyObject *globals,*/ ++ 0 /*PyObject *locals*/ ++ ); ++ if (!py_frame) goto bad; ++ __Pyx_PyFrame_SetLineNumber(py_frame, py_line); ++ PyTraceBack_Here(py_frame); ++bad: ++ Py_XDECREF(py_code); ++ Py_XDECREF(py_frame); + } + +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_format(enum mpv_format value) { +- const enum mpv_format neg_one = (enum mpv_format) ((enum mpv_format) 0 - (enum mpv_format) 1), const_zero = (enum mpv_format) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(enum mpv_format) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(enum mpv_format) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_format) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(enum mpv_format) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_format) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } +- } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_format), +- little, !is_unsigned); ++/* CIntFromPyVerify */ ++#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ ++ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) ++#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ ++ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) ++#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ ++ {\ ++ func_type value = func_value;\ ++ if (sizeof(target_type) < sizeof(func_type)) {\ ++ if (unlikely(value != (func_type) (target_type) value)) {\ ++ func_type zero = 0;\ ++ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ ++ return (target_type) -1;\ ++ if (is_unsigned && unlikely(value < zero))\ ++ goto raise_neg_overflow;\ ++ else\ ++ goto raise_overflow;\ ++ }\ ++ }\ ++ return (target_type) value;\ + } +-} + + /* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const int neg_one = (int) -1, const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { +- if (sizeof(long) < sizeof(long)) { ++ if (sizeof(int) < sizeof(long)) { + return PyInt_FromLong((long) value); +- } else if (sizeof(long) <= sizeof(unsigned long)) { ++ } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); + #ifdef HAVE_LONG_LONG +- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { ++ } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + #endif + } + } else { +- if (sizeof(long) <= sizeof(long)) { ++ if (sizeof(int) <= sizeof(long)) { + return PyInt_FromLong((long) value); + #ifdef HAVE_LONG_LONG +- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { ++ } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + #endif + } +@@ -33617,14 +30212,21 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(long), ++ return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); + } + } + + /* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const int neg_one = (int) -1, const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -33811,9 +30413,54 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + return (int) -1; + } + ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_event_id(enum mpv_event_id value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const enum mpv_event_id neg_one = (enum mpv_event_id) -1, const_zero = (enum mpv_event_id) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(enum mpv_event_id) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(enum mpv_event_id) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_event_id) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(enum mpv_event_id) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_event_id) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_event_id), ++ little, !is_unsigned); ++ } ++} ++ + /* CIntFromPy */ + static CYTHON_INLINE enum mpv_event_id __Pyx_PyInt_As_enum__mpv_event_id(PyObject *x) { +- const enum mpv_event_id neg_one = (enum mpv_event_id) ((enum mpv_event_id) 0 - (enum mpv_event_id) 1), const_zero = (enum mpv_event_id) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const enum mpv_event_id neg_one = (enum mpv_event_id) -1, const_zero = (enum mpv_event_id) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -33947,62 +30594,259 @@ static CYTHON_INLINE enum mpv_event_id __Pyx_PyInt_As_enum__mpv_event_id(PyObjec + break; + } + #endif +- if (sizeof(enum mpv_event_id) <= sizeof(long)) { +- __PYX_VERIFY_RETURN_INT_EXC(enum mpv_event_id, long, PyLong_AsLong(x)) ++ if (sizeof(enum mpv_event_id) <= sizeof(long)) { ++ __PYX_VERIFY_RETURN_INT_EXC(enum mpv_event_id, long, PyLong_AsLong(x)) ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_event_id) <= sizeof(PY_LONG_LONG)) { ++ __PYX_VERIFY_RETURN_INT_EXC(enum mpv_event_id, PY_LONG_LONG, PyLong_AsLongLong(x)) ++#endif ++ } ++ } ++ { ++#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) ++ PyErr_SetString(PyExc_RuntimeError, ++ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); ++#else ++ enum mpv_event_id val; ++ PyObject *v = __Pyx_PyNumber_IntOrLong(x); ++ #if PY_MAJOR_VERSION < 3 ++ if (likely(v) && !PyLong_Check(v)) { ++ PyObject *tmp = v; ++ v = PyNumber_Long(tmp); ++ Py_DECREF(tmp); ++ } ++ #endif ++ if (likely(v)) { ++ int one = 1; int is_little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&val; ++ int ret = _PyLong_AsByteArray((PyLongObject *)v, ++ bytes, sizeof(val), ++ is_little, !is_unsigned); ++ Py_DECREF(v); ++ if (likely(!ret)) ++ return val; ++ } ++#endif ++ return (enum mpv_event_id) -1; ++ } ++ } else { ++ enum mpv_event_id val; ++ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); ++ if (!tmp) return (enum mpv_event_id) -1; ++ val = __Pyx_PyInt_As_enum__mpv_event_id(tmp); ++ Py_DECREF(tmp); ++ return val; ++ } ++raise_overflow: ++ PyErr_SetString(PyExc_OverflowError, ++ "value too large to convert to enum mpv_event_id"); ++ return (enum mpv_event_id) -1; ++raise_neg_overflow: ++ PyErr_SetString(PyExc_OverflowError, ++ "can't convert negative value to enum mpv_event_id"); ++ return (enum mpv_event_id) -1; ++} ++ ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(unsigned long) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(unsigned long) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(unsigned long) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(unsigned long), ++ little, !is_unsigned); ++ } ++} ++ ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_error(enum mpv_error value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const enum mpv_error neg_one = (enum mpv_error) -1, const_zero = (enum mpv_error) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(enum mpv_error) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(enum mpv_error) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_error) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(enum mpv_error) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_error) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_error), ++ little, !is_unsigned); ++ } ++} ++ ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_log_level(enum mpv_log_level value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const enum mpv_log_level neg_one = (enum mpv_log_level) -1, const_zero = (enum mpv_log_level) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(enum mpv_log_level) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(enum mpv_log_level) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_log_level) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(enum mpv_log_level) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); + #ifdef HAVE_LONG_LONG +- } else if (sizeof(enum mpv_event_id) <= sizeof(PY_LONG_LONG)) { +- __PYX_VERIFY_RETURN_INT_EXC(enum mpv_event_id, PY_LONG_LONG, PyLong_AsLongLong(x)) ++ } else if (sizeof(enum mpv_log_level) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); + #endif +- } + } +- { +-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) +- PyErr_SetString(PyExc_RuntimeError, +- "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +-#else +- enum mpv_event_id val; +- PyObject *v = __Pyx_PyNumber_IntOrLong(x); +- #if PY_MAJOR_VERSION < 3 +- if (likely(v) && !PyLong_Check(v)) { +- PyObject *tmp = v; +- v = PyNumber_Long(tmp); +- Py_DECREF(tmp); +- } +- #endif +- if (likely(v)) { +- int one = 1; int is_little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&val; +- int ret = _PyLong_AsByteArray((PyLongObject *)v, +- bytes, sizeof(val), +- is_little, !is_unsigned); +- Py_DECREF(v); +- if (likely(!ret)) +- return val; +- } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_log_level), ++ little, !is_unsigned); ++ } ++} ++ ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_end_file_reason(enum mpv_end_file_reason value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const enum mpv_end_file_reason neg_one = (enum mpv_end_file_reason) -1, const_zero = (enum mpv_end_file_reason) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(enum mpv_end_file_reason) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(enum mpv_end_file_reason) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_end_file_reason) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + #endif +- return (enum mpv_event_id) -1; + } + } else { +- enum mpv_event_id val; +- PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); +- if (!tmp) return (enum mpv_event_id) -1; +- val = __Pyx_PyInt_As_enum__mpv_event_id(tmp); +- Py_DECREF(tmp); +- return val; ++ if (sizeof(enum mpv_end_file_reason) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_end_file_reason) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_end_file_reason), ++ little, !is_unsigned); ++ } ++} ++ ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_render_update_flag(enum mpv_render_update_flag value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const enum mpv_render_update_flag neg_one = (enum mpv_render_update_flag) -1, const_zero = (enum mpv_render_update_flag) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(enum mpv_render_update_flag) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(enum mpv_render_update_flag) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_render_update_flag) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(enum mpv_render_update_flag) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_render_update_flag) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_render_update_flag), ++ little, !is_unsigned); + } +-raise_overflow: +- PyErr_SetString(PyExc_OverflowError, +- "value too large to convert to enum mpv_event_id"); +- return (enum mpv_event_id) -1; +-raise_neg_overflow: +- PyErr_SetString(PyExc_OverflowError, +- "can't convert negative value to enum mpv_event_id"); +- return (enum mpv_event_id) -1; + } + + /* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const long neg_one = (long) -1, const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -34189,9 +31033,92 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + return (long) -1; + } + ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(int64_t) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(int64_t) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(int64_t) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(int64_t), ++ little, !is_unsigned); ++ } ++} ++ ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(uint64_t) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(uint64_t) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(uint64_t) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(uint64_t), ++ little, !is_unsigned); ++ } ++} ++ + /* CIntFromPy */ + static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) { +- const uint64_t neg_one = (uint64_t) ((uint64_t) 0 - (uint64_t) 1), const_zero = (uint64_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -34378,9 +31305,54 @@ static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) { + return (uint64_t) -1; + } + ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_format(enum mpv_format value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const enum mpv_format neg_one = (enum mpv_format) -1, const_zero = (enum mpv_format) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(enum mpv_format) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(enum mpv_format) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_format) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(enum mpv_format) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(enum mpv_format) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_format), ++ little, !is_unsigned); ++ } ++} ++ + /* CIntFromPy */ + static CYTHON_INLINE enum mpv_format __Pyx_PyInt_As_enum__mpv_format(PyObject *x) { +- const enum mpv_format neg_one = (enum mpv_format) ((enum mpv_format) 0 - (enum mpv_format) 1), const_zero = (enum mpv_format) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const enum mpv_format neg_one = (enum mpv_format) -1, const_zero = (enum mpv_format) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -34569,7 +31541,14 @@ static CYTHON_INLINE enum mpv_format __Pyx_PyInt_As_enum__mpv_format(PyObject *x + + /* CIntFromPy */ + static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) { +- const int64_t neg_one = (int64_t) ((int64_t) 0 - (int64_t) 1), const_zero = (int64_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -34758,7 +31737,14 @@ static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) { + + /* CIntFromPy */ + static CYTHON_INLINE intptr_t __Pyx_PyInt_As_intptr_t(PyObject *x) { +- const intptr_t neg_one = (intptr_t) ((intptr_t) 0 - (intptr_t) 1), const_zero = (intptr_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const intptr_t neg_one = (intptr_t) -1, const_zero = (intptr_t) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -34945,6 +31931,44 @@ static CYTHON_INLINE intptr_t __Pyx_PyInt_As_intptr_t(PyObject *x) { + return (intptr_t) -1; + } + ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const long neg_one = (long) -1, const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(long) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(long) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(long) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(long), ++ little, !is_unsigned); ++ } ++} ++ + /* CheckBinaryVersion */ + static int __Pyx_check_binary_version(void) { + char ctversion[4], rtversion[4]; +@@ -35211,7 +32235,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + } + static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { +- return __Pyx_PyIndex_AsSsize_t(o); ++ return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); + #if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +diff --git a/vidcutter/libs/pympv/mpv.pyx b/vidcutter/libs/pympv/mpv.pyx +index 540ea649..8af2dcc7 100644 +--- a/vidcutter/libs/pympv/mpv.pyx ++++ b/vidcutter/libs/pympv/mpv.pyx +@@ -30,8 +30,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: +@@ -47,7 +47,7 @@ if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: + ) + + cdef extern from "Python.h": +- void PyEval_InitThreads() ++ void Py_Initialize() + + _is_py3 = sys.version_info >= (3,) + _strdec_err = "surrogateescape" if _is_py3 else "strict" +@@ -67,7 +67,7 @@ def _strenc(s): + # In python2, assume bytes and walk right through + return s + +-PyEval_InitThreads() ++Py_Initialize() + + class Errors: + """Set of known error codes from MpvError and Event responses. +@@ -114,21 +114,21 @@ 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 ++ # tracks_changed = MPV_EVENT_TRACKS_CHANGED ++ # tracks_switched = MPV_EVENT_TRACK_SWITCHED + idle = MPV_EVENT_IDLE +- pause = MPV_EVENT_PAUSE +- unpause = MPV_EVENT_UNPAUSE ++ # pause = MPV_EVENT_PAUSE ++ # unpause = MPV_EVENT_UNPAUSE + tick = MPV_EVENT_TICK +- script_input_dispatch = MPV_EVENT_SCRIPT_INPUT_DISPATCH ++ # 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 ++ # 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 ++ # chapter_change = MPV_EVENT_CHAPTER_CHANGE + + + class LogLevels: +@@ -166,17 +166,17 @@ cdef class EndOfFileReached(object): + return self + + +-cdef class InputDispatch(object): +- """Data field for MPV_EVENT_SCRIPT_INPUT_DISPATCH events. ++# cdef class InputDispatch(object): ++# """Data field for MPV_EVENT_SCRIPT_INPUT_DISPATCH events. + +- Wraps: mpv_event_script_input_dispatch +- """ +- cdef public object arg0, type ++# 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 _init(self, mpv_event_script_input_dispatch* input): ++# self.arg0 = input.arg0 ++# self.type = _strdec(input.type) ++# return self + + + cdef class LogMessage(object): +@@ -276,8 +276,8 @@ cdef class Event(object): + return Property()._init(data) + elif self.id == MPV_EVENT_LOG_MESSAGE: + return LogMessage()._init(data) +- elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: +- return InputDispatch()._init(data) ++ # elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: ++ # return InputDispatch()._init(data) + elif self.id == MPV_EVENT_CLIENT_MESSAGE: + climsg = data + args = [] +@@ -396,17 +396,17 @@ 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 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) ++ # def resume(self): ++ # """Wraps: mpv_resume""" ++ # assert self._ctx ++ # with nogil: ++ # mpv_resume(self._ctx) + + @_errors + def request_event(self, event, enable): +@@ -798,17 +798,17 @@ cdef class Context(object): + self.reply_userdata = None + self._ctx = NULL + +- def opengl_cb_api(self): +- cdef void *cb ++ # 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 = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB) ++ # if not _ctx: ++ # raise MPVError("OpenGL API not available") + +- ctx = OpenGLContext() +- ctx._ctx = _ctx ++ # ctx = OpenGLContext() ++ # ctx._ctx = _ctx + +- return ctx ++ # return ctx + + def __dealloc__(self): + self.shutdown() +@@ -819,62 +819,62 @@ cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: + cdef void _c_updatecb(void *ctx) with gil: + (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, +- 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, 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() ++# 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, ++# 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, 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 + diff --git a/srcpkgs/vidcutter/patches/mpv-0.35-2.patch b/srcpkgs/vidcutter/patches/mpv-0.35-2.patch new file mode 100644 index 000000000000..c982ded8475a --- /dev/null +++ b/srcpkgs/vidcutter/patches/mpv-0.35-2.patch @@ -0,0 +1,24 @@ +https://github.com/ozmartian/vidcutter/commit/8010f5c64efe68d8130a036f976d2d2ff1c868ad.patch + +From 8010f5c64efe68d8130a036f976d2d2ff1c868ad Mon Sep 17 00:00:00 2001 +From: Pete Alexandrou +Date: Tue, 22 Feb 2022 16:08:24 +1100 +Subject: [PATCH] fix libmpv version number format + +--- + vidcutter/libs/mpvwidget.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/vidcutter/libs/mpvwidget.py b/vidcutter/libs/mpvwidget.py +index 239b6c9c..6661ad85 100644 +--- a/vidcutter/libs/mpvwidget.py ++++ b/vidcutter/libs/mpvwidget.py +@@ -247,7 +247,7 @@ def format(self, stream: str='video') -> str: + + def version(self) -> str: + ver = self.mpv.api_version +- return '{0}.{1}'.format(ver[0], ver[1]) ++ return '{0}.{1}'.format(ver[1], ver[0]) + + def option(self, option: str, val): + if isinstance(val, bool): diff --git a/srcpkgs/vidcutter/patches/mpv-0.35-3.patch b/srcpkgs/vidcutter/patches/mpv-0.35-3.patch new file mode 100644 index 000000000000..7a1b2909b4c4 --- /dev/null +++ b/srcpkgs/vidcutter/patches/mpv-0.35-3.patch @@ -0,0 +1,13289 @@ +https://github.com/ozmartian/vidcutter/commit/4cf1458d832e6ac7a824d7963c6dc3a0e5c17574.patch + +From 4cf1458d832e6ac7a824d7963c6dc3a0e5c17574 Mon Sep 17 00:00:00 2001 +From: Pete Alexandrou +Date: Sat, 30 Apr 2022 15:49:17 +1000 +Subject: [PATCH] pympv updates + +--- + vidcutter/libs/pympv/mpv.c | 3792 +++++++++++++++++----------------- + vidcutter/libs/pympv/mpv.pyx | 6 +- + 2 files changed, 1900 insertions(+), 1898 deletions(-) + +diff --git a/vidcutter/libs/pympv/mpv.c b/vidcutter/libs/pympv/mpv.c +index a3522ef5..26838a03 100644 +--- a/vidcutter/libs/pympv/mpv.c ++++ b/vidcutter/libs/pympv/mpv.c +@@ -944,7 +944,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext; + struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors; + struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp; + +-/* "vidcutter/libs/pympv/mpv.pyx":890 ++/* "vidcutter/libs/pympv/mpv.pyx":892 + * self.params[0].type = MPV_RENDER_PARAM_INVALID + * + * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< +@@ -956,7 +956,7 @@ struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp { + int owned; + }; + +-/* "vidcutter/libs/pympv/mpv.pyx":156 ++/* "vidcutter/libs/pympv/mpv.pyx":158 + * + * + * cdef class EndOfFileReached(object): # <<<<<<<<<<<<<< +@@ -971,7 +971,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":182 ++/* "vidcutter/libs/pympv/mpv.pyx":184 + * + * + * cdef class LogMessage(object): # <<<<<<<<<<<<<< +@@ -988,7 +988,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":243 ++/* "vidcutter/libs/pympv/mpv.pyx":245 + * + * + * cdef class Property(object): # <<<<<<<<<<<<<< +@@ -1003,7 +1003,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_Property { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":256 ++/* "vidcutter/libs/pympv/mpv.pyx":258 + * + * + * cdef class Event(object): # <<<<<<<<<<<<<< +@@ -1020,7 +1020,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_Event { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":359 ++/* "vidcutter/libs/pympv/mpv.pyx":361 + * + * + * cdef class Context(object): # <<<<<<<<<<<<<< +@@ -1037,7 +1037,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_Context { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":881 ++/* "vidcutter/libs/pympv/mpv.pyx":883 + * DEF MAX_RENDER_PARAMS = 32 + * + * cdef class _RenderParams(object): # <<<<<<<<<<<<<< +@@ -1052,7 +1052,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":928 ++/* "vidcutter/libs/pympv/mpv.pyx":930 + * + * @cython.internal + * cdef class RenderFrameInfo(object): # <<<<<<<<<<<<<< +@@ -1065,7 +1065,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":937 ++/* "vidcutter/libs/pympv/mpv.pyx":939 + * return self + * + * cdef class RenderContext(object): # <<<<<<<<<<<<<< +@@ -1084,7 +1084,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":1122 ++/* "vidcutter/libs/pympv/mpv.pyx":1124 + * self.close() + * + * cdef class OpenGLRenderContext(RenderContext): # <<<<<<<<<<<<<< +@@ -1096,7 +1096,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext { + }; + + +-/* "vidcutter/libs/pympv/mpv.pyx":318 ++/* "vidcutter/libs/pympv/mpv.pyx":320 + * + * + * def _errors(fn): # <<<<<<<<<<<<<< +@@ -1110,7 +1110,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors { + + + +-/* "vidcutter/libs/pympv/mpv.pyx":156 ++/* "vidcutter/libs/pympv/mpv.pyx":158 + * + * + * cdef class EndOfFileReached(object): # <<<<<<<<<<<<<< +@@ -1124,7 +1124,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached { + static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached; + + +-/* "vidcutter/libs/pympv/mpv.pyx":182 ++/* "vidcutter/libs/pympv/mpv.pyx":184 + * + * + * cdef class LogMessage(object): # <<<<<<<<<<<<<< +@@ -1138,7 +1138,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage { + static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *__pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage; + + +-/* "vidcutter/libs/pympv/mpv.pyx":243 ++/* "vidcutter/libs/pympv/mpv.pyx":245 + * + * + * cdef class Property(object): # <<<<<<<<<<<<<< +@@ -1152,7 +1152,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property { + static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *__pyx_vtabptr_9vidcutter_4libs_3mpv_Property; + + +-/* "vidcutter/libs/pympv/mpv.pyx":256 ++/* "vidcutter/libs/pympv/mpv.pyx":258 + * + * + * cdef class Event(object): # <<<<<<<<<<<<<< +@@ -1167,7 +1167,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event { + static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *__pyx_vtabptr_9vidcutter_4libs_3mpv_Event; + + +-/* "vidcutter/libs/pympv/mpv.pyx":359 ++/* "vidcutter/libs/pympv/mpv.pyx":361 + * + * + * cdef class Context(object): # <<<<<<<<<<<<<< +@@ -1184,7 +1184,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context { + static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *__pyx_vtabptr_9vidcutter_4libs_3mpv_Context; + + +-/* "vidcutter/libs/pympv/mpv.pyx":881 ++/* "vidcutter/libs/pympv/mpv.pyx":883 + * DEF MAX_RENDER_PARAMS = 32 + * + * cdef class _RenderParams(object): # <<<<<<<<<<<<<< +@@ -1200,7 +1200,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams { + static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *__pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams; + + +-/* "vidcutter/libs/pympv/mpv.pyx":928 ++/* "vidcutter/libs/pympv/mpv.pyx":930 + * + * @cython.internal + * cdef class RenderFrameInfo(object): # <<<<<<<<<<<<<< +@@ -2522,9 +2522,9 @@ static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext(PyTypeOb + static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ + static PyObject *__pyx_int_0; + static PyObject *__pyx_int_1; +-static PyObject *__pyx_int_2; + static PyObject *__pyx_int_3; + static PyObject *__pyx_int_32; ++static PyObject *__pyx_int_109; + static PyObject *__pyx_int_5713169; + static PyObject *__pyx_int_90958262; + static PyObject *__pyx_int_142036910; +@@ -2588,7 +2588,7 @@ static PyObject *__pyx_codeobj__53; + static PyObject *__pyx_codeobj__55; + /* Late includes */ + +-/* "vidcutter/libs/pympv/mpv.pyx":55 ++/* "vidcutter/libs/pympv/mpv.pyx":57 + * _strdec_err = "surrogateescape" if _is_py3 else "strict" + * # mpv -> Python + * def _strdec(s): # <<<<<<<<<<<<<< +@@ -2627,7 +2627,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_strdec", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":56 ++ /* "vidcutter/libs/pympv/mpv.pyx":58 + * # mpv -> Python + * def _strdec(s): + * try: # <<<<<<<<<<<<<< +@@ -2643,7 +2643,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":57 ++ /* "vidcutter/libs/pympv/mpv.pyx":59 + * def _strdec(s): + * try: + * return s.decode("utf-8", _strdec_err) # <<<<<<<<<<<<<< +@@ -2651,9 +2651,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + * # In python2, bail to bytes on failure + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 57, __pyx_L3_error) ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 59, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L3_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 59, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; +@@ -2670,7 +2670,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_kp_s_utf_8, __pyx_t_6}; +- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L3_error) ++ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L3_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +@@ -2679,14 +2679,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_kp_s_utf_8, __pyx_t_6}; +- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L3_error) ++ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L3_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { +- __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 57, __pyx_L3_error) ++ __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 59, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; +@@ -2697,7 +2697,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6); + __pyx_t_6 = 0; +- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L3_error) ++ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } +@@ -2706,7 +2706,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + __pyx_t_4 = 0; + goto __pyx_L7_try_return; + +- /* "vidcutter/libs/pympv/mpv.pyx":56 ++ /* "vidcutter/libs/pympv/mpv.pyx":58 + * # mpv -> Python + * def _strdec(s): + * try: # <<<<<<<<<<<<<< +@@ -2721,7 +2721,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":58 ++ /* "vidcutter/libs/pympv/mpv.pyx":60 + * try: + * return s.decode("utf-8", _strdec_err) + * except UnicodeDecodeError: # <<<<<<<<<<<<<< +@@ -2731,12 +2731,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError); + if (__pyx_t_8) { + __Pyx_AddTraceback("vidcutter.libs.mpv._strdec", __pyx_clineno, __pyx_lineno, __pyx_filename); +- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 58, __pyx_L5_except_error) ++ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 60, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_9); + +- /* "vidcutter/libs/pympv/mpv.pyx":60 ++ /* "vidcutter/libs/pympv/mpv.pyx":62 + * except UnicodeDecodeError: + * # In python2, bail to bytes on failure + * return bytes(s) # <<<<<<<<<<<<<< +@@ -2744,7 +2744,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + * # Python -> mpv + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_s); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 60, __pyx_L5_except_error) ++ __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_s); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 62, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; +@@ -2756,7 +2756,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + +- /* "vidcutter/libs/pympv/mpv.pyx":56 ++ /* "vidcutter/libs/pympv/mpv.pyx":58 + * # mpv -> Python + * def _strdec(s): + * try: # <<<<<<<<<<<<<< +@@ -2782,7 +2782,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + goto __pyx_L0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":55 ++ /* "vidcutter/libs/pympv/mpv.pyx":57 + * _strdec_err = "surrogateescape" if _is_py3 else "strict" + * # mpv -> Python + * def _strdec(s): # <<<<<<<<<<<<<< +@@ -2805,7 +2805,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":63 ++/* "vidcutter/libs/pympv/mpv.pyx":65 + * + * # Python -> mpv + * def _strenc(s): # <<<<<<<<<<<<<< +@@ -2844,7 +2844,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_strenc", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":64 ++ /* "vidcutter/libs/pympv/mpv.pyx":66 + * # Python -> mpv + * def _strenc(s): + * try: # <<<<<<<<<<<<<< +@@ -2860,7 +2860,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":65 ++ /* "vidcutter/libs/pympv/mpv.pyx":67 + * def _strenc(s): + * try: + * return s.encode("utf-8", _strdec_err) # <<<<<<<<<<<<<< +@@ -2868,9 +2868,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + * # In python2, assume bytes and walk right through + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 65, __pyx_L3_error) ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 67, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 65, __pyx_L3_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 67, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; +@@ -2887,7 +2887,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_kp_s_utf_8, __pyx_t_6}; +- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L3_error) ++ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L3_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +@@ -2896,14 +2896,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_kp_s_utf_8, __pyx_t_6}; +- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L3_error) ++ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L3_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { +- __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 65, __pyx_L3_error) ++ __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 67, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; +@@ -2914,7 +2914,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6); + __pyx_t_6 = 0; +- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L3_error) ++ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } +@@ -2923,7 +2923,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + __pyx_t_4 = 0; + goto __pyx_L7_try_return; + +- /* "vidcutter/libs/pympv/mpv.pyx":64 ++ /* "vidcutter/libs/pympv/mpv.pyx":66 + * # Python -> mpv + * def _strenc(s): + * try: # <<<<<<<<<<<<<< +@@ -2938,7 +2938,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":66 ++ /* "vidcutter/libs/pympv/mpv.pyx":68 + * try: + * return s.encode("utf-8", _strdec_err) + * except UnicodeEncodeError: # <<<<<<<<<<<<<< +@@ -2948,12 +2948,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeEncodeError); + if (__pyx_t_8) { + __Pyx_AddTraceback("vidcutter.libs.mpv._strenc", __pyx_clineno, __pyx_lineno, __pyx_filename); +- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 66, __pyx_L5_except_error) ++ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 68, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_9); + +- /* "vidcutter/libs/pympv/mpv.pyx":68 ++ /* "vidcutter/libs/pympv/mpv.pyx":70 + * except UnicodeEncodeError: + * # In python2, assume bytes and walk right through + * return s # <<<<<<<<<<<<<< +@@ -2971,7 +2971,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + +- /* "vidcutter/libs/pympv/mpv.pyx":64 ++ /* "vidcutter/libs/pympv/mpv.pyx":66 + * # Python -> mpv + * def _strenc(s): + * try: # <<<<<<<<<<<<<< +@@ -2997,7 +2997,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + goto __pyx_L0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":63 ++ /* "vidcutter/libs/pympv/mpv.pyx":65 + * + * # Python -> mpv + * def _strenc(s): # <<<<<<<<<<<<<< +@@ -3020,7 +3020,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":163 ++/* "vidcutter/libs/pympv/mpv.pyx":165 + * cdef public object reason, error + * + * cdef _init(self, mpv_event_end_file* eof): # <<<<<<<<<<<<<< +@@ -3037,14 +3037,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_init", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":164 ++ /* "vidcutter/libs/pympv/mpv.pyx":166 + * + * cdef _init(self, mpv_event_end_file* eof): + * self.reason = eof.reason # <<<<<<<<<<<<<< + * self.error = eof.error + * return self + */ +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_eof->reason); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_eof->reason); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->reason); +@@ -3052,14 +3052,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ + __pyx_v_self->reason = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":165 ++ /* "vidcutter/libs/pympv/mpv.pyx":167 + * cdef _init(self, mpv_event_end_file* eof): + * self.reason = eof.reason + * self.error = eof.error # <<<<<<<<<<<<<< + * return self + * + */ +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_eof->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_eof->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->error); +@@ -3067,7 +3067,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ + __pyx_v_self->error = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":166 ++ /* "vidcutter/libs/pympv/mpv.pyx":168 + * self.reason = eof.reason + * self.error = eof.error + * return self # <<<<<<<<<<<<<< +@@ -3079,7 +3079,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":163 ++ /* "vidcutter/libs/pympv/mpv.pyx":165 + * cdef public object reason, error + * + * cdef _init(self, mpv_event_end_file* eof): # <<<<<<<<<<<<<< +@@ -3098,7 +3098,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":161 ++/* "vidcutter/libs/pympv/mpv.pyx":163 + * Wraps: mpv_event_end_file + * """ + * cdef public object reason, error # <<<<<<<<<<<<<< +@@ -3587,7 +3587,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_2__setstate_c + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":189 ++/* "vidcutter/libs/pympv/mpv.pyx":191 + * cdef public object prefix, level, text, log_level + * + * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< +@@ -3607,16 +3607,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_init", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":190 ++ /* "vidcutter/libs/pympv/mpv.pyx":192 + * + * cdef _init(self, mpv_event_log_message* msg): + * self.level = _strdec(msg.level) # <<<<<<<<<<<<<< + * self.prefix = _strdec(msg.prefix) + * self.text = _strdec(msg.text) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -3631,7 +3631,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); +@@ -3640,16 +3640,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + __pyx_v_self->level = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":191 ++ /* "vidcutter/libs/pympv/mpv.pyx":193 + * cdef _init(self, mpv_event_log_message* msg): + * self.level = _strdec(msg.level) + * self.prefix = _strdec(msg.prefix) # <<<<<<<<<<<<<< + * self.text = _strdec(msg.text) + * self.log_level = msg.log_level + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -3664,7 +3664,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); +@@ -3673,16 +3673,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + __pyx_v_self->prefix = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":192 ++ /* "vidcutter/libs/pympv/mpv.pyx":194 + * self.level = _strdec(msg.level) + * self.prefix = _strdec(msg.prefix) + * self.text = _strdec(msg.text) # <<<<<<<<<<<<<< + * self.log_level = msg.log_level + * return self + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -3697,7 +3697,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); +@@ -3706,14 +3706,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + __pyx_v_self->text = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":193 ++ /* "vidcutter/libs/pympv/mpv.pyx":195 + * self.prefix = _strdec(msg.prefix) + * self.text = _strdec(msg.text) + * self.log_level = msg.log_level # <<<<<<<<<<<<<< + * return self + * + */ +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_msg->log_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_msg->log_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->log_level); +@@ -3721,7 +3721,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + __pyx_v_self->log_level = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":194 ++ /* "vidcutter/libs/pympv/mpv.pyx":196 + * self.text = _strdec(msg.text) + * self.log_level = msg.log_level + * return self # <<<<<<<<<<<<<< +@@ -3733,7 +3733,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":189 ++ /* "vidcutter/libs/pympv/mpv.pyx":191 + * cdef public object prefix, level, text, log_level + * + * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< +@@ -3755,7 +3755,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":187 ++/* "vidcutter/libs/pympv/mpv.pyx":189 + * Wraps: mpv_event_log_message + * """ + * cdef public object prefix, level, text, log_level # <<<<<<<<<<<<<< +@@ -4438,7 +4438,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython_ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":197 ++/* "vidcutter/libs/pympv/mpv.pyx":199 + * + * + * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< +@@ -4459,7 +4459,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_convert_node_value", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":198 ++ /* "vidcutter/libs/pympv/mpv.pyx":200 + * + * cdef _convert_node_value(mpv_node node): + * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +@@ -4469,7 +4469,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + switch (__pyx_v_node.format) { + case MPV_FORMAT_STRING: + +- /* "vidcutter/libs/pympv/mpv.pyx":199 ++ /* "vidcutter/libs/pympv/mpv.pyx":201 + * cdef _convert_node_value(mpv_node node): + * if node.format == MPV_FORMAT_STRING: + * return _strdec(node.u.string) # <<<<<<<<<<<<<< +@@ -4477,9 +4477,9 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + * return not not int(node.u.flag) + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_node.u.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_node.u.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -4494,14 +4494,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":198 ++ /* "vidcutter/libs/pympv/mpv.pyx":200 + * + * cdef _convert_node_value(mpv_node node): + * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +@@ -4511,7 +4511,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + break; + case MPV_FORMAT_FLAG: + +- /* "vidcutter/libs/pympv/mpv.pyx":201 ++ /* "vidcutter/libs/pympv/mpv.pyx":203 + * return _strdec(node.u.string) + * elif node.format == MPV_FORMAT_FLAG: + * return not not int(node.u.flag) # <<<<<<<<<<<<<< +@@ -4519,20 +4519,20 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + * return int(node.u.int64) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_node.u.flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_node.u.flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 201, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_2 = __Pyx_PyBool_FromLong((!((!__pyx_t_5) != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyBool_FromLong((!((!__pyx_t_5) != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":200 ++ /* "vidcutter/libs/pympv/mpv.pyx":202 + * if node.format == MPV_FORMAT_STRING: + * return _strdec(node.u.string) + * elif node.format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< +@@ -4542,7 +4542,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + break; + case MPV_FORMAT_INT64: + +- /* "vidcutter/libs/pympv/mpv.pyx":203 ++ /* "vidcutter/libs/pympv/mpv.pyx":205 + * return not not int(node.u.flag) + * elif node.format == MPV_FORMAT_INT64: + * return int(node.u.int64) # <<<<<<<<<<<<<< +@@ -4550,16 +4550,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + * return float(node.u.double_) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyInt_From_int64_t(__pyx_v_node.u.int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_From_int64_t(__pyx_v_node.u.int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":202 ++ /* "vidcutter/libs/pympv/mpv.pyx":204 + * elif node.format == MPV_FORMAT_FLAG: + * return not not int(node.u.flag) + * elif node.format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< +@@ -4569,7 +4569,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + break; + case MPV_FORMAT_DOUBLE: + +- /* "vidcutter/libs/pympv/mpv.pyx":205 ++ /* "vidcutter/libs/pympv/mpv.pyx":207 + * return int(node.u.int64) + * elif node.format == MPV_FORMAT_DOUBLE: + * return float(node.u.double_) # <<<<<<<<<<<<<< +@@ -4577,13 +4577,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + * return _convert_value(node.u.list, node.format) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = PyFloat_FromDouble(__pyx_v_node.u.double_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) ++ __pyx_t_1 = PyFloat_FromDouble(__pyx_v_node.u.double_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":204 ++ /* "vidcutter/libs/pympv/mpv.pyx":206 + * elif node.format == MPV_FORMAT_INT64: + * return int(node.u.int64) + * elif node.format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< +@@ -4593,7 +4593,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + break; + case MPV_FORMAT_NODE_MAP: + +- /* "vidcutter/libs/pympv/mpv.pyx":207 ++ /* "vidcutter/libs/pympv/mpv.pyx":209 + * return float(node.u.double_) + * elif node.format == MPV_FORMAT_NODE_MAP: + * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< +@@ -4601,13 +4601,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + * return _convert_value(node.u.list, node.format) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":206 ++ /* "vidcutter/libs/pympv/mpv.pyx":208 + * elif node.format == MPV_FORMAT_DOUBLE: + * return float(node.u.double_) + * elif node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +@@ -4617,7 +4617,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + break; + case MPV_FORMAT_NODE_ARRAY: + +- /* "vidcutter/libs/pympv/mpv.pyx":209 ++ /* "vidcutter/libs/pympv/mpv.pyx":211 + * return _convert_value(node.u.list, node.format) + * elif node.format == MPV_FORMAT_NODE_ARRAY: + * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< +@@ -4625,13 +4625,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + * + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":208 ++ /* "vidcutter/libs/pympv/mpv.pyx":210 + * elif node.format == MPV_FORMAT_NODE_MAP: + * return _convert_value(node.u.list, node.format) + * elif node.format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< +@@ -4642,7 +4642,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + default: break; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":210 ++ /* "vidcutter/libs/pympv/mpv.pyx":212 + * elif node.format == MPV_FORMAT_NODE_ARRAY: + * return _convert_value(node.u.list, node.format) + * return None # <<<<<<<<<<<<<< +@@ -4653,7 +4653,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":197 ++ /* "vidcutter/libs/pympv/mpv.pyx":199 + * + * + * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< +@@ -4675,7 +4675,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":213 ++/* "vidcutter/libs/pympv/mpv.pyx":215 + * + * + * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< +@@ -4704,7 +4704,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_convert_value", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":216 ++ /* "vidcutter/libs/pympv/mpv.pyx":218 + * cdef mpv_node node + * cdef mpv_node_list nodelist + * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< +@@ -4714,7 +4714,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + switch (__pyx_v_format) { + case MPV_FORMAT_NODE: + +- /* "vidcutter/libs/pympv/mpv.pyx":217 ++ /* "vidcutter/libs/pympv/mpv.pyx":219 + * cdef mpv_node_list nodelist + * if format == MPV_FORMAT_NODE: + * node = (data)[0] # <<<<<<<<<<<<<< +@@ -4723,7 +4723,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + */ + __pyx_v_node = (((struct mpv_node *)__pyx_v_data)[0]); + +- /* "vidcutter/libs/pympv/mpv.pyx":218 ++ /* "vidcutter/libs/pympv/mpv.pyx":220 + * if format == MPV_FORMAT_NODE: + * node = (data)[0] + * return _convert_node_value(node) # <<<<<<<<<<<<<< +@@ -4731,13 +4731,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + * nodelist = (data)[0] + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":216 ++ /* "vidcutter/libs/pympv/mpv.pyx":218 + * cdef mpv_node node + * cdef mpv_node_list nodelist + * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< +@@ -4747,7 +4747,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + break; + case MPV_FORMAT_NODE_ARRAY: + +- /* "vidcutter/libs/pympv/mpv.pyx":220 ++ /* "vidcutter/libs/pympv/mpv.pyx":222 + * return _convert_node_value(node) + * elif format == MPV_FORMAT_NODE_ARRAY: + * nodelist = (data)[0] # <<<<<<<<<<<<<< +@@ -4756,19 +4756,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + */ + __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); + +- /* "vidcutter/libs/pympv/mpv.pyx":221 ++ /* "vidcutter/libs/pympv/mpv.pyx":223 + * elif format == MPV_FORMAT_NODE_ARRAY: + * nodelist = (data)[0] + * values = [] # <<<<<<<<<<<<<< + * for i in range(nodelist.num): + * values.append(_convert_node_value(nodelist.values[i])) + */ +- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) ++ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_values = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":222 ++ /* "vidcutter/libs/pympv/mpv.pyx":224 + * nodelist = (data)[0] + * values = [] + * for i in range(nodelist.num): # <<<<<<<<<<<<<< +@@ -4780,20 +4780,20 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":223 ++ /* "vidcutter/libs/pympv/mpv.pyx":225 + * values = [] + * for i in range(nodelist.num): + * values.append(_convert_node_value(nodelist.values[i])) # <<<<<<<<<<<<<< + * return values + * elif format == MPV_FORMAT_NODE_MAP: + */ +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_values, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 223, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_values, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 225, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":224 ++ /* "vidcutter/libs/pympv/mpv.pyx":226 + * for i in range(nodelist.num): + * values.append(_convert_node_value(nodelist.values[i])) + * return values # <<<<<<<<<<<<<< +@@ -4805,7 +4805,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + __pyx_r = __pyx_v_values; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":219 ++ /* "vidcutter/libs/pympv/mpv.pyx":221 + * node = (data)[0] + * return _convert_node_value(node) + * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< +@@ -4815,7 +4815,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + break; + case MPV_FORMAT_NODE_MAP: + +- /* "vidcutter/libs/pympv/mpv.pyx":226 ++ /* "vidcutter/libs/pympv/mpv.pyx":228 + * return values + * elif format == MPV_FORMAT_NODE_MAP: + * nodelist = (data)[0] # <<<<<<<<<<<<<< +@@ -4824,19 +4824,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + */ + __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); + +- /* "vidcutter/libs/pympv/mpv.pyx":227 ++ /* "vidcutter/libs/pympv/mpv.pyx":229 + * elif format == MPV_FORMAT_NODE_MAP: + * nodelist = (data)[0] + * values = {} # <<<<<<<<<<<<<< + * for i in range(nodelist.num): + * value = _convert_node_value(nodelist.values[i]) + */ +- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_values = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":228 ++ /* "vidcutter/libs/pympv/mpv.pyx":230 + * nodelist = (data)[0] + * values = {} + * for i in range(nodelist.num): # <<<<<<<<<<<<<< +@@ -4848,28 +4848,28 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":229 ++ /* "vidcutter/libs/pympv/mpv.pyx":231 + * values = {} + * for i in range(nodelist.num): + * value = _convert_node_value(nodelist.values[i]) # <<<<<<<<<<<<<< + * values[_strdec(nodelist.keys[i])] = value + * return values + */ +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":230 ++ /* "vidcutter/libs/pympv/mpv.pyx":232 + * for i in range(nodelist.num): + * value = _convert_node_value(nodelist.values[i]) + * values[_strdec(nodelist.keys[i])] = value # <<<<<<<<<<<<<< + * return values + * elif format == MPV_FORMAT_STRING: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 230, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = __Pyx_PyBytes_FromString((__pyx_v_nodelist.keys[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyBytes_FromString((__pyx_v_nodelist.keys[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -4884,14 +4884,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(PyObject_SetItem(__pyx_v_values, __pyx_t_1, __pyx_v_value) < 0)) __PYX_ERR(0, 230, __pyx_L1_error) ++ if (unlikely(PyObject_SetItem(__pyx_v_values, __pyx_t_1, __pyx_v_value) < 0)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":231 ++ /* "vidcutter/libs/pympv/mpv.pyx":233 + * value = _convert_node_value(nodelist.values[i]) + * values[_strdec(nodelist.keys[i])] = value + * return values # <<<<<<<<<<<<<< +@@ -4903,7 +4903,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + __pyx_r = __pyx_v_values; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":225 ++ /* "vidcutter/libs/pympv/mpv.pyx":227 + * values.append(_convert_node_value(nodelist.values[i])) + * return values + * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +@@ -4913,7 +4913,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + break; + case MPV_FORMAT_STRING: + +- /* "vidcutter/libs/pympv/mpv.pyx":233 ++ /* "vidcutter/libs/pympv/mpv.pyx":235 + * return values + * elif format == MPV_FORMAT_STRING: + * return _strdec(((data)[0])) # <<<<<<<<<<<<<< +@@ -4921,9 +4921,9 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + * return not not (data)[0] + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 233, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = __Pyx_PyBytes_FromString((((char **)__pyx_v_data)[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyBytes_FromString((((char **)__pyx_v_data)[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -4938,14 +4938,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":232 ++ /* "vidcutter/libs/pympv/mpv.pyx":234 + * values[_strdec(nodelist.keys[i])] = value + * return values + * elif format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +@@ -4955,7 +4955,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + break; + case MPV_FORMAT_FLAG: + +- /* "vidcutter/libs/pympv/mpv.pyx":235 ++ /* "vidcutter/libs/pympv/mpv.pyx":237 + * return _strdec(((data)[0])) + * elif format == MPV_FORMAT_FLAG: + * return not not (data)[0] # <<<<<<<<<<<<<< +@@ -4963,13 +4963,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + * return int((data)[0]) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyBool_FromLong((!((!((((uint64_t *)__pyx_v_data)[0]) != 0)) != 0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!((!((((uint64_t *)__pyx_v_data)[0]) != 0)) != 0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":234 ++ /* "vidcutter/libs/pympv/mpv.pyx":236 + * elif format == MPV_FORMAT_STRING: + * return _strdec(((data)[0])) + * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< +@@ -4979,7 +4979,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + break; + case MPV_FORMAT_INT64: + +- /* "vidcutter/libs/pympv/mpv.pyx":237 ++ /* "vidcutter/libs/pympv/mpv.pyx":239 + * return not not (data)[0] + * elif format == MPV_FORMAT_INT64: + * return int((data)[0]) # <<<<<<<<<<<<<< +@@ -4987,16 +4987,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + * return float((data)[0]) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t((((uint64_t *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t((((uint64_t *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 237, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":236 ++ /* "vidcutter/libs/pympv/mpv.pyx":238 + * elif format == MPV_FORMAT_FLAG: + * return not not (data)[0] + * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< +@@ -5006,7 +5006,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + break; + case MPV_FORMAT_DOUBLE: + +- /* "vidcutter/libs/pympv/mpv.pyx":239 ++ /* "vidcutter/libs/pympv/mpv.pyx":241 + * return int((data)[0]) + * elif format == MPV_FORMAT_DOUBLE: + * return float((data)[0]) # <<<<<<<<<<<<<< +@@ -5014,13 +5014,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + * + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_6 = PyFloat_FromDouble((((double *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 239, __pyx_L1_error) ++ __pyx_t_6 = PyFloat_FromDouble((((double *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":238 ++ /* "vidcutter/libs/pympv/mpv.pyx":240 + * elif format == MPV_FORMAT_INT64: + * return int((data)[0]) + * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< +@@ -5031,7 +5031,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + default: break; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":240 ++ /* "vidcutter/libs/pympv/mpv.pyx":242 + * elif format == MPV_FORMAT_DOUBLE: + * return float((data)[0]) + * return None # <<<<<<<<<<<<<< +@@ -5042,7 +5042,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":213 ++ /* "vidcutter/libs/pympv/mpv.pyx":215 + * + * + * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< +@@ -5066,7 +5066,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":250 ++/* "vidcutter/libs/pympv/mpv.pyx":252 + * cdef public object name, data + * + * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< +@@ -5086,16 +5086,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_init", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":251 ++ /* "vidcutter/libs/pympv/mpv.pyx":253 + * + * cdef _init(self, mpv_event_property* prop): + * self.name = _strdec(prop.name) # <<<<<<<<<<<<<< + * self.data = _convert_value(prop.data, prop.format) + * return self + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_prop->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_prop->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -5110,7 +5110,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GIVEREF(__pyx_t_1); +@@ -5119,14 +5119,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ + __pyx_v_self->name = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":252 ++ /* "vidcutter/libs/pympv/mpv.pyx":254 + * cdef _init(self, mpv_event_property* prop): + * self.name = _strdec(prop.name) + * self.data = _convert_value(prop.data, prop.format) # <<<<<<<<<<<<<< + * return self + * + */ +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_prop->data, __pyx_v_prop->format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_prop->data, __pyx_v_prop->format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->data); +@@ -5134,7 +5134,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ + __pyx_v_self->data = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":253 ++ /* "vidcutter/libs/pympv/mpv.pyx":255 + * self.name = _strdec(prop.name) + * self.data = _convert_value(prop.data, prop.format) + * return self # <<<<<<<<<<<<<< +@@ -5146,7 +5146,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":250 ++ /* "vidcutter/libs/pympv/mpv.pyx":252 + * cdef public object name, data + * + * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< +@@ -5168,7 +5168,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":248 ++/* "vidcutter/libs/pympv/mpv.pyx":250 + * Wraps: mpv_event_property + * """ + * cdef public object name, data # <<<<<<<<<<<<<< +@@ -5657,7 +5657,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(s + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":263 ++/* "vidcutter/libs/pympv/mpv.pyx":265 + * + * @property + * def error_str(self): # <<<<<<<<<<<<<< +@@ -5691,7 +5691,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":266 ++ /* "vidcutter/libs/pympv/mpv.pyx":268 + * """mpv_error_string of the error proeprty""" + * cdef const char* err_c + * with nogil: # <<<<<<<<<<<<<< +@@ -5706,7 +5706,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":267 ++ /* "vidcutter/libs/pympv/mpv.pyx":269 + * cdef const char* err_c + * with nogil: + * err_c = mpv_error_string(self.error) # <<<<<<<<<<<<<< +@@ -5716,7 +5716,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct + __pyx_v_err_c = mpv_error_string(__pyx_v_self->error); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":266 ++ /* "vidcutter/libs/pympv/mpv.pyx":268 + * """mpv_error_string of the error proeprty""" + * cdef const char* err_c + * with nogil: # <<<<<<<<<<<<<< +@@ -5735,7 +5735,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":268 ++ /* "vidcutter/libs/pympv/mpv.pyx":270 + * with nogil: + * err_c = mpv_error_string(self.error) + * return _strdec(err_c) # <<<<<<<<<<<<<< +@@ -5743,9 +5743,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct + * cdef _data(self, mpv_event* event): + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -5760,14 +5760,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":263 ++ /* "vidcutter/libs/pympv/mpv.pyx":265 + * + * @property + * def error_str(self): # <<<<<<<<<<<<<< +@@ -5789,7 +5789,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":270 ++/* "vidcutter/libs/pympv/mpv.pyx":272 + * return _strdec(err_c) + * + * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< +@@ -5819,7 +5819,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_data", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":271 ++ /* "vidcutter/libs/pympv/mpv.pyx":273 + * + * cdef _data(self, mpv_event* event): + * cdef void* data = event.data # <<<<<<<<<<<<<< +@@ -5829,7 +5829,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + __pyx_t_1 = __pyx_v_event->data; + __pyx_v_data = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":273 ++ /* "vidcutter/libs/pympv/mpv.pyx":275 + * cdef void* data = event.data + * cdef mpv_event_client_message* climsg + * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< +@@ -5839,7 +5839,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + switch (__pyx_v_self->id) { + case MPV_EVENT_GET_PROPERTY_REPLY: + +- /* "vidcutter/libs/pympv/mpv.pyx":274 ++ /* "vidcutter/libs/pympv/mpv.pyx":276 + * cdef mpv_event_client_message* climsg + * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: + * return Property()._init(data) # <<<<<<<<<<<<<< +@@ -5847,16 +5847,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + * return Property()._init(data) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) ++ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":273 ++ /* "vidcutter/libs/pympv/mpv.pyx":275 + * cdef void* data = event.data + * cdef mpv_event_client_message* climsg + * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< +@@ -5866,7 +5866,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + break; + case MPV_EVENT_PROPERTY_CHANGE: + +- /* "vidcutter/libs/pympv/mpv.pyx":276 ++ /* "vidcutter/libs/pympv/mpv.pyx":278 + * return Property()._init(data) + * elif self.id == MPV_EVENT_PROPERTY_CHANGE: + * return Property()._init(data) # <<<<<<<<<<<<<< +@@ -5874,16 +5874,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + * return LogMessage()._init(data) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":275 ++ /* "vidcutter/libs/pympv/mpv.pyx":277 + * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: + * return Property()._init(data) + * elif self.id == MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< +@@ -5893,7 +5893,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + break; + case MPV_EVENT_LOG_MESSAGE: + +- /* "vidcutter/libs/pympv/mpv.pyx":278 ++ /* "vidcutter/libs/pympv/mpv.pyx":280 + * return Property()._init(data) + * elif self.id == MPV_EVENT_LOG_MESSAGE: + * return LogMessage()._init(data) # <<<<<<<<<<<<<< +@@ -5901,16 +5901,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + * # return InputDispatch()._init(data) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *)((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2), ((struct mpv_event_log_message *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) ++ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *)((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2), ((struct mpv_event_log_message *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 280, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":277 ++ /* "vidcutter/libs/pympv/mpv.pyx":279 + * elif self.id == MPV_EVENT_PROPERTY_CHANGE: + * return Property()._init(data) + * elif self.id == MPV_EVENT_LOG_MESSAGE: # <<<<<<<<<<<<<< +@@ -5920,7 +5920,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + break; + case MPV_EVENT_CLIENT_MESSAGE: + +- /* "vidcutter/libs/pympv/mpv.pyx":282 ++ /* "vidcutter/libs/pympv/mpv.pyx":284 + * # return InputDispatch()._init(data) + * elif self.id == MPV_EVENT_CLIENT_MESSAGE: + * climsg = data # <<<<<<<<<<<<<< +@@ -5929,19 +5929,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + */ + __pyx_v_climsg = ((struct mpv_event_client_message *)__pyx_v_data); + +- /* "vidcutter/libs/pympv/mpv.pyx":283 ++ /* "vidcutter/libs/pympv/mpv.pyx":285 + * elif self.id == MPV_EVENT_CLIENT_MESSAGE: + * climsg = data + * args = [] # <<<<<<<<<<<<<< + * num_args = climsg.num_args + * for i in range(num_args): + */ +- __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 283, __pyx_L1_error) ++ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_args = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":284 ++ /* "vidcutter/libs/pympv/mpv.pyx":286 + * climsg = data + * args = [] + * num_args = climsg.num_args # <<<<<<<<<<<<<< +@@ -5951,7 +5951,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + __pyx_t_4 = __pyx_v_climsg->num_args; + __pyx_v_num_args = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":285 ++ /* "vidcutter/libs/pympv/mpv.pyx":287 + * args = [] + * num_args = climsg.num_args + * for i in range(num_args): # <<<<<<<<<<<<<< +@@ -5963,26 +5963,26 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_i = __pyx_t_6; + +- /* "vidcutter/libs/pympv/mpv.pyx":286 ++ /* "vidcutter/libs/pympv/mpv.pyx":288 + * num_args = climsg.num_args + * for i in range(num_args): + * arg = climsg.args[i] # <<<<<<<<<<<<<< + * arg = _strdec(arg) + * args.append(arg) + */ +- __pyx_t_3 = __Pyx_PyBytes_FromString(((char *)(__pyx_v_climsg->args[__pyx_v_i]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(((char *)(__pyx_v_climsg->args[__pyx_v_i]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_3); + __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":287 ++ /* "vidcutter/libs/pympv/mpv.pyx":289 + * for i in range(num_args): + * arg = climsg.args[i] + * arg = _strdec(arg) # <<<<<<<<<<<<<< + * args.append(arg) + * return args + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 287, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -5996,23 +5996,23 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + } + __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_arg) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_arg); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L1_error) ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 289, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_arg, __pyx_t_3); + __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":288 ++ /* "vidcutter/libs/pympv/mpv.pyx":290 + * arg = climsg.args[i] + * arg = _strdec(arg) + * args.append(arg) # <<<<<<<<<<<<<< + * return args + * elif self.id == MPV_EVENT_END_FILE: + */ +- __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_args, __pyx_v_arg); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 288, __pyx_L1_error) ++ __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_args, __pyx_v_arg); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 290, __pyx_L1_error) + } + +- /* "vidcutter/libs/pympv/mpv.pyx":289 ++ /* "vidcutter/libs/pympv/mpv.pyx":291 + * arg = _strdec(arg) + * args.append(arg) + * return args # <<<<<<<<<<<<<< +@@ -6024,7 +6024,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + __pyx_r = __pyx_v_args; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":281 ++ /* "vidcutter/libs/pympv/mpv.pyx":283 + * # elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: + * # return InputDispatch()._init(data) + * elif self.id == MPV_EVENT_CLIENT_MESSAGE: # <<<<<<<<<<<<<< +@@ -6034,7 +6034,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + break; + case MPV_EVENT_END_FILE: + +- /* "vidcutter/libs/pympv/mpv.pyx":291 ++ /* "vidcutter/libs/pympv/mpv.pyx":293 + * return args + * elif self.id == MPV_EVENT_END_FILE: + * return EndOfFileReached()._init(data) # <<<<<<<<<<<<<< +@@ -6042,16 +6042,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + * + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *)((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3), ((struct mpv_event_end_file *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error) ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *)((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3), ((struct mpv_event_end_file *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 293, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":290 ++ /* "vidcutter/libs/pympv/mpv.pyx":292 + * args.append(arg) + * return args + * elif self.id == MPV_EVENT_END_FILE: # <<<<<<<<<<<<<< +@@ -6062,7 +6062,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + default: break; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":292 ++ /* "vidcutter/libs/pympv/mpv.pyx":294 + * elif self.id == MPV_EVENT_END_FILE: + * return EndOfFileReached()._init(data) + * return None # <<<<<<<<<<<<<< +@@ -6073,7 +6073,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":270 ++ /* "vidcutter/libs/pympv/mpv.pyx":272 + * return _strdec(err_c) + * + * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< +@@ -6096,7 +6096,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":295 ++/* "vidcutter/libs/pympv/mpv.pyx":297 + * + * @property + * def name(self): # <<<<<<<<<<<<<< +@@ -6130,7 +6130,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":298 ++ /* "vidcutter/libs/pympv/mpv.pyx":300 + * """mpv_event_name of the event id""" + * cdef const char* name_c + * with nogil: # <<<<<<<<<<<<<< +@@ -6145,7 +6145,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":299 ++ /* "vidcutter/libs/pympv/mpv.pyx":301 + * cdef const char* name_c + * with nogil: + * name_c = mpv_event_name(self.id) # <<<<<<<<<<<<<< +@@ -6155,7 +6155,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py + __pyx_v_name_c = mpv_event_name(__pyx_v_self->id); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":298 ++ /* "vidcutter/libs/pympv/mpv.pyx":300 + * """mpv_event_name of the event id""" + * cdef const char* name_c + * with nogil: # <<<<<<<<<<<<<< +@@ -6174,7 +6174,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":300 ++ /* "vidcutter/libs/pympv/mpv.pyx":302 + * with nogil: + * name_c = mpv_event_name(self.id) + * return _strdec(name_c) # <<<<<<<<<<<<<< +@@ -6182,9 +6182,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py + * cdef _init(self, mpv_event* event, ctx): + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -6199,14 +6199,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":295 ++ /* "vidcutter/libs/pympv/mpv.pyx":297 + * + * @property + * def name(self): # <<<<<<<<<<<<<< +@@ -6228,7 +6228,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":302 ++/* "vidcutter/libs/pympv/mpv.pyx":304 + * return _strdec(name_c) + * + * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< +@@ -6257,20 +6257,20 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_init", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":303 ++ /* "vidcutter/libs/pympv/mpv.pyx":305 + * + * cdef _init(self, mpv_event* event, ctx): + * cdef uint64_t ctxid = id(ctx) # <<<<<<<<<<<<<< + * self.id = event.event_id + * self.data = self._data(event) + */ +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 303, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_ctxid = ((uint64_t)__pyx_t_2); + +- /* "vidcutter/libs/pympv/mpv.pyx":304 ++ /* "vidcutter/libs/pympv/mpv.pyx":306 + * cdef _init(self, mpv_event* event, ctx): + * cdef uint64_t ctxid = id(ctx) + * self.id = event.event_id # <<<<<<<<<<<<<< +@@ -6280,14 +6280,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __pyx_t_3 = __pyx_v_event->event_id; + __pyx_v_self->id = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":305 ++ /* "vidcutter/libs/pympv/mpv.pyx":307 + * cdef uint64_t ctxid = id(ctx) + * self.id = event.event_id + * self.data = self._data(event) # <<<<<<<<<<<<<< + * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) + * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)__pyx_v_self->__pyx_vtab)->_data(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)__pyx_v_self->__pyx_vtab)->_data(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 307, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->data); +@@ -6295,19 +6295,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __pyx_v_self->data = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":306 ++ /* "vidcutter/libs/pympv/mpv.pyx":308 + * self.id = event.event_id + * self.data = self._data(event) + * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) # <<<<<<<<<<<<<< + * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: + * userdata.remove() + */ +- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_event->reply_userdata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_event->reply_userdata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = NULL; + __pyx_t_7 = 0; +@@ -6324,7 +6324,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; +- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -6333,14 +6333,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; +- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { +- __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 308, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; +@@ -6351,7 +6351,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, Py_None); + __pyx_t_4 = 0; +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } +@@ -6359,7 +6359,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __pyx_v_userdata = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":307 ++ /* "vidcutter/libs/pympv/mpv.pyx":309 + * self.data = self._data(event) + * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) + * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< +@@ -6378,14 +6378,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __pyx_L4_bool_binop_done:; + if (__pyx_t_9) { + +- /* "vidcutter/libs/pympv/mpv.pyx":308 ++ /* "vidcutter/libs/pympv/mpv.pyx":310 + * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) + * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: + * userdata.remove() # <<<<<<<<<<<<<< + * if not userdata.observed and userdata.counter <= 0: + * del _reply_userdatas[ctxid][event.reply_userdata] + */ +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { +@@ -6399,21 +6399,21 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + } + __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":309 ++ /* "vidcutter/libs/pympv/mpv.pyx":311 + * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: + * userdata.remove() + * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< + * del _reply_userdatas[ctxid][event.reply_userdata] + * if userdata is not None: + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_observed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_observed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 311, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_10 = ((!__pyx_t_11) != 0); + if (__pyx_t_10) { +@@ -6421,29 +6421,29 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __pyx_t_9 = __pyx_t_10; + goto __pyx_L7_bool_binop_done; + } +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 311, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) ++ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 311, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_9 = __pyx_t_10; + __pyx_L7_bool_binop_done:; + if (__pyx_t_9) { + +- /* "vidcutter/libs/pympv/mpv.pyx":310 ++ /* "vidcutter/libs/pympv/mpv.pyx":312 + * userdata.remove() + * if not userdata.observed and userdata.counter <= 0: + * del _reply_userdatas[ctxid][event.reply_userdata] # <<<<<<<<<<<<<< + * if userdata is not None: + * userdata = userdata.data + */ +- __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 312, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); +- if (unlikely(__Pyx_DelItemInt(__pyx_t_5, __pyx_v_event->reply_userdata, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 310, __pyx_L1_error) ++ if (unlikely(__Pyx_DelItemInt(__pyx_t_5, __pyx_v_event->reply_userdata, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 312, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":309 ++ /* "vidcutter/libs/pympv/mpv.pyx":311 + * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: + * userdata.remove() + * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< +@@ -6452,7 +6452,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":307 ++ /* "vidcutter/libs/pympv/mpv.pyx":309 + * self.data = self._data(event) + * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) + * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< +@@ -6461,7 +6461,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":311 ++ /* "vidcutter/libs/pympv/mpv.pyx":313 + * if not userdata.observed and userdata.counter <= 0: + * del _reply_userdatas[ctxid][event.reply_userdata] + * if userdata is not None: # <<<<<<<<<<<<<< +@@ -6472,19 +6472,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __pyx_t_10 = (__pyx_t_9 != 0); + if (__pyx_t_10) { + +- /* "vidcutter/libs/pympv/mpv.pyx":312 ++ /* "vidcutter/libs/pympv/mpv.pyx":314 + * del _reply_userdatas[ctxid][event.reply_userdata] + * if userdata is not None: + * userdata = userdata.data # <<<<<<<<<<<<<< + * self.reply_userdata = userdata + * self.error = event.error + */ +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 312, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 314, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF_SET(__pyx_v_userdata, __pyx_t_5); + __pyx_t_5 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":311 ++ /* "vidcutter/libs/pympv/mpv.pyx":313 + * if not userdata.observed and userdata.counter <= 0: + * del _reply_userdatas[ctxid][event.reply_userdata] + * if userdata is not None: # <<<<<<<<<<<<<< +@@ -6493,7 +6493,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":313 ++ /* "vidcutter/libs/pympv/mpv.pyx":315 + * if userdata is not None: + * userdata = userdata.data + * self.reply_userdata = userdata # <<<<<<<<<<<<<< +@@ -6506,7 +6506,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __Pyx_DECREF(__pyx_v_self->reply_userdata); + __pyx_v_self->reply_userdata = __pyx_v_userdata; + +- /* "vidcutter/libs/pympv/mpv.pyx":314 ++ /* "vidcutter/libs/pympv/mpv.pyx":316 + * userdata = userdata.data + * self.reply_userdata = userdata + * self.error = event.error # <<<<<<<<<<<<<< +@@ -6516,7 +6516,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __pyx_t_7 = __pyx_v_event->error; + __pyx_v_self->error = __pyx_t_7; + +- /* "vidcutter/libs/pympv/mpv.pyx":315 ++ /* "vidcutter/libs/pympv/mpv.pyx":317 + * self.reply_userdata = userdata + * self.error = event.error + * return self # <<<<<<<<<<<<<< +@@ -6528,7 +6528,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":302 ++ /* "vidcutter/libs/pympv/mpv.pyx":304 + * return _strdec(name_c) + * + * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< +@@ -6552,7 +6552,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":258 ++/* "vidcutter/libs/pympv/mpv.pyx":260 + * cdef class Event(object): + * """Wraps: mpv_event""" + * cdef public mpv_event_id id # <<<<<<<<<<<<<< +@@ -6582,7 +6582,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(struct __pyx_ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; +@@ -6620,7 +6620,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(struct __pyx_obj_9 + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); +- __pyx_t_1 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_value)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) ++ __pyx_t_1 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_value)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error) + __pyx_v_self->id = __pyx_t_1; + + /* function exit code */ +@@ -6634,7 +6634,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(struct __pyx_obj_9 + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":259 ++/* "vidcutter/libs/pympv/mpv.pyx":261 + * """Wraps: mpv_event""" + * cdef public mpv_event_id id + * cdef public int error # <<<<<<<<<<<<<< +@@ -6664,7 +6664,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(struct __p + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; +@@ -6702,7 +6702,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(struct __pyx_ob + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__set__", 0); +- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 261, __pyx_L1_error) + __pyx_v_self->error = __pyx_t_1; + + /* function exit code */ +@@ -6716,7 +6716,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(struct __pyx_ob + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":260 ++/* "vidcutter/libs/pympv/mpv.pyx":262 + * cdef public mpv_event_id id + * cdef public int error + * cdef public object data, reply_userdata # <<<<<<<<<<<<<< +@@ -7215,7 +7215,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(stru + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":318 ++/* "vidcutter/libs/pympv/mpv.pyx":320 + * + * + * def _errors(fn): # <<<<<<<<<<<<<< +@@ -7237,7 +7237,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, P + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":319 ++/* "vidcutter/libs/pympv/mpv.pyx":321 + * + * def _errors(fn): + * def wrapped(*k, **kw): # <<<<<<<<<<<<<< +@@ -7285,42 +7285,42 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx + __pyx_outer_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *) __Pyx_CyFunction_GetClosure(__pyx_self); + __pyx_cur_scope = __pyx_outer_scope; + +- /* "vidcutter/libs/pympv/mpv.pyx":320 ++ /* "vidcutter/libs/pympv/mpv.pyx":322 + * def _errors(fn): + * def wrapped(*k, **kw): + * v = fn(*k, **kw) # <<<<<<<<<<<<<< + * if v < 0: + * raise MPVError(v) + */ +- if (unlikely(!__pyx_cur_scope->__pyx_v_fn)) { __Pyx_RaiseClosureNameError("fn"); __PYX_ERR(0, 320, __pyx_L1_error) } +- __pyx_t_1 = PyDict_Copy(__pyx_v_kw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) ++ if (unlikely(!__pyx_cur_scope->__pyx_v_fn)) { __Pyx_RaiseClosureNameError("fn"); __PYX_ERR(0, 322, __pyx_L1_error) } ++ __pyx_t_1 = PyDict_Copy(__pyx_v_kw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_fn, __pyx_v_k, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_fn, __pyx_v_k, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_v = __pyx_t_2; + __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":321 ++ /* "vidcutter/libs/pympv/mpv.pyx":323 + * def wrapped(*k, **kw): + * v = fn(*k, **kw) + * if v < 0: # <<<<<<<<<<<<<< + * raise MPVError(v) + * return wrapped + */ +- __pyx_t_2 = PyObject_RichCompare(__pyx_v_v, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error) +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 321, __pyx_L1_error) ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_v, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 323, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":322 ++ /* "vidcutter/libs/pympv/mpv.pyx":324 + * v = fn(*k, **kw) + * if v < 0: + * raise MPVError(v) # <<<<<<<<<<<<<< + * return wrapped + * + */ +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { +@@ -7334,14 +7334,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx + } + __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_v) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_v); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __PYX_ERR(0, 322, __pyx_L1_error) ++ __PYX_ERR(0, 324, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":321 ++ /* "vidcutter/libs/pympv/mpv.pyx":323 + * def wrapped(*k, **kw): + * v = fn(*k, **kw) + * if v < 0: # <<<<<<<<<<<<<< +@@ -7350,7 +7350,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":319 ++ /* "vidcutter/libs/pympv/mpv.pyx":321 + * + * def _errors(fn): + * def wrapped(*k, **kw): # <<<<<<<<<<<<<< +@@ -7374,7 +7374,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":318 ++/* "vidcutter/libs/pympv/mpv.pyx":320 + * + * + * def _errors(fn): # <<<<<<<<<<<<<< +@@ -7396,7 +7396,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject + if (unlikely(!__pyx_cur_scope)) { + __pyx_cur_scope = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)Py_None); + __Pyx_INCREF(Py_None); +- __PYX_ERR(0, 318, __pyx_L1_error) ++ __PYX_ERR(0, 320, __pyx_L1_error) + } else { + __Pyx_GOTREF(__pyx_cur_scope); + } +@@ -7404,19 +7404,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject + __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fn); + __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fn); + +- /* "vidcutter/libs/pympv/mpv.pyx":319 ++ /* "vidcutter/libs/pympv/mpv.pyx":321 + * + * def _errors(fn): + * def wrapped(*k, **kw): # <<<<<<<<<<<<<< + * v = fn(*k, **kw) + * if v < 0: + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped, 0, __pyx_n_s_errors_locals_wrapped, ((PyObject*)__pyx_cur_scope), __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped, 0, __pyx_n_s_errors_locals_wrapped, ((PyObject*)__pyx_cur_scope), __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_wrapped = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":323 ++ /* "vidcutter/libs/pympv/mpv.pyx":325 + * if v < 0: + * raise MPVError(v) + * return wrapped # <<<<<<<<<<<<<< +@@ -7428,7 +7428,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject + __pyx_r = __pyx_v_wrapped; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":318 ++ /* "vidcutter/libs/pympv/mpv.pyx":320 + * + * + * def _errors(fn): # <<<<<<<<<<<<<< +@@ -7449,7 +7449,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":329 ++/* "vidcutter/libs/pympv/mpv.pyx":331 + * code = None + * + * def __init__(self, e): # <<<<<<<<<<<<<< +@@ -7492,11 +7492,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__ + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_e)) != 0)) kw_args--; + else { +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 329, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 331, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 329, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 331, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; +@@ -7509,7 +7509,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__ + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 329, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 331, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -7540,16 +7540,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + __Pyx_RefNannySetupContext("__init__", 0); + __Pyx_INCREF(__pyx_v_e); + +- /* "vidcutter/libs/pympv/mpv.pyx":330 ++ /* "vidcutter/libs/pympv/mpv.pyx":332 + * + * def __init__(self, e): + * self.code = e # <<<<<<<<<<<<<< + * cdef const char* err_c + * cdef int e_i + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_e) < 0) __PYX_ERR(0, 330, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_e) < 0) __PYX_ERR(0, 332, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":333 ++ /* "vidcutter/libs/pympv/mpv.pyx":335 + * cdef const char* err_c + * cdef int e_i + * if not isinstance(e, basestring): # <<<<<<<<<<<<<< +@@ -7560,17 +7560,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":334 ++ /* "vidcutter/libs/pympv/mpv.pyx":336 + * cdef int e_i + * if not isinstance(e, basestring): + * e_i = e # <<<<<<<<<<<<<< + * with nogil: + * err_c = mpv_error_string(e_i) + */ +- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_e); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_e); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_v_e_i = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":335 ++ /* "vidcutter/libs/pympv/mpv.pyx":337 + * if not isinstance(e, basestring): + * e_i = e + * with nogil: # <<<<<<<<<<<<<< +@@ -7585,7 +7585,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":336 ++ /* "vidcutter/libs/pympv/mpv.pyx":338 + * e_i = e + * with nogil: + * err_c = mpv_error_string(e_i) # <<<<<<<<<<<<<< +@@ -7595,7 +7595,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + __pyx_v_err_c = mpv_error_string(__pyx_v_e_i); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":335 ++ /* "vidcutter/libs/pympv/mpv.pyx":337 + * if not isinstance(e, basestring): + * e_i = e + * with nogil: # <<<<<<<<<<<<<< +@@ -7614,16 +7614,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":337 ++ /* "vidcutter/libs/pympv/mpv.pyx":339 + * with nogil: + * err_c = mpv_error_string(e_i) + * e = _strdec(err_c) # <<<<<<<<<<<<<< + * Exception.__init__(self, e) + * + */ +- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_strdec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_strdec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { +@@ -7638,13 +7638,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error) ++ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 339, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF_SET(__pyx_v_e, __pyx_t_4); + __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":333 ++ /* "vidcutter/libs/pympv/mpv.pyx":335 + * cdef const char* err_c + * cdef int e_i + * if not isinstance(e, basestring): # <<<<<<<<<<<<<< +@@ -7653,14 +7653,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":338 ++ /* "vidcutter/libs/pympv/mpv.pyx":340 + * err_c = mpv_error_string(e_i) + * e = _strdec(err_c) + * Exception.__init__(self, e) # <<<<<<<<<<<<<< + * + * class PyMPVError(Exception): + */ +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + __pyx_t_3 = 0; +@@ -7677,7 +7677,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; +- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else +@@ -7685,13 +7685,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; +- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + { +- __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_6) { + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; +@@ -7702,14 +7702,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + __Pyx_INCREF(__pyx_v_e); + __Pyx_GIVEREF(__pyx_v_e); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_v_e); +- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":329 ++ /* "vidcutter/libs/pympv/mpv.pyx":331 + * code = None + * + * def __init__(self, e): # <<<<<<<<<<<<<< +@@ -7734,7 +7734,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":347 ++/* "vidcutter/libs/pympv/mpv.pyx":349 + * + * class _ReplyUserData(object): + * def __init__(self, data): # <<<<<<<<<<<<<< +@@ -7777,11 +7777,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObj + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; + else { +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 347, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 349, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 347, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 349, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; +@@ -7794,7 +7794,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObj + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 347, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 349, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -7815,34 +7815,34 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":348 ++ /* "vidcutter/libs/pympv/mpv.pyx":350 + * class _ReplyUserData(object): + * def __init__(self, data): + * self.counter = 0 # <<<<<<<<<<<<<< + * self.data = data + * self.observed = False + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_int_0) < 0) __PYX_ERR(0, 348, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_int_0) < 0) __PYX_ERR(0, 350, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":349 ++ /* "vidcutter/libs/pympv/mpv.pyx":351 + * def __init__(self, data): + * self.counter = 0 + * self.data = data # <<<<<<<<<<<<<< + * self.observed = False + * + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 349, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 351, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":350 ++ /* "vidcutter/libs/pympv/mpv.pyx":352 + * self.counter = 0 + * self.data = data + * self.observed = False # <<<<<<<<<<<<<< + * + * def add(self): + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 350, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 352, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":347 ++ /* "vidcutter/libs/pympv/mpv.pyx":349 + * + * class _ReplyUserData(object): + * def __init__(self, data): # <<<<<<<<<<<<<< +@@ -7862,7 +7862,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":352 ++/* "vidcutter/libs/pympv/mpv.pyx":354 + * self.observed = False + * + * def add(self): # <<<<<<<<<<<<<< +@@ -7894,22 +7894,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(CYTHON_UNU + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("add", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":353 ++ /* "vidcutter/libs/pympv/mpv.pyx":355 + * + * def add(self): + * self.counter += 1 # <<<<<<<<<<<<<< + * + * def remove(self): + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 355, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 353, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 355, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":352 ++ /* "vidcutter/libs/pympv/mpv.pyx":354 + * self.observed = False + * + * def add(self): # <<<<<<<<<<<<<< +@@ -7931,7 +7931,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(CYTHON_UNU + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":355 ++/* "vidcutter/libs/pympv/mpv.pyx":357 + * self.counter += 1 + * + * def remove(self): # <<<<<<<<<<<<<< +@@ -7963,22 +7963,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("remove", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":356 ++ /* "vidcutter/libs/pympv/mpv.pyx":358 + * + * def remove(self): + * self.counter -= 1 # <<<<<<<<<<<<<< + * + * + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 356, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 358, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":355 ++ /* "vidcutter/libs/pympv/mpv.pyx":357 + * self.counter += 1 + * + * def remove(self): # <<<<<<<<<<<<<< +@@ -8000,7 +8000,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":370 ++/* "vidcutter/libs/pympv/mpv.pyx":372 + * + * @property + * def api_version(self): # <<<<<<<<<<<<<< +@@ -8033,7 +8033,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(C + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":371 ++ /* "vidcutter/libs/pympv/mpv.pyx":373 + * @property + * def api_version(self): + * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION # <<<<<<<<<<<<<< +@@ -8041,13 +8041,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(C + * @property + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 373, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) ++ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 373, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); +@@ -8062,7 +8062,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(C + __pyx_t_4 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":370 ++ /* "vidcutter/libs/pympv/mpv.pyx":372 + * + * @property + * def api_version(self): # <<<<<<<<<<<<<< +@@ -8084,7 +8084,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(C + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":374 ++/* "vidcutter/libs/pympv/mpv.pyx":376 + * + * @property + * def name(self): # <<<<<<<<<<<<<< +@@ -8118,7 +8118,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":380 ++ /* "vidcutter/libs/pympv/mpv.pyx":382 + * """ + * cdef const char* name + * assert self._ctx # <<<<<<<<<<<<<< +@@ -8129,12 +8129,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 380, __pyx_L1_error) ++ __PYX_ERR(0, 382, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":381 ++ /* "vidcutter/libs/pympv/mpv.pyx":383 + * cdef const char* name + * assert self._ctx + * with nogil: # <<<<<<<<<<<<<< +@@ -8149,7 +8149,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":382 ++ /* "vidcutter/libs/pympv/mpv.pyx":384 + * assert self._ctx + * with nogil: + * name = mpv_client_name(self._ctx) # <<<<<<<<<<<<<< +@@ -8159,7 +8159,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ + __pyx_v_name = mpv_client_name(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":381 ++ /* "vidcutter/libs/pympv/mpv.pyx":383 + * cdef const char* name + * assert self._ctx + * with nogil: # <<<<<<<<<<<<<< +@@ -8178,7 +8178,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":383 ++ /* "vidcutter/libs/pympv/mpv.pyx":385 + * with nogil: + * name = mpv_client_name(self._ctx) + * return _strdec(name) # <<<<<<<<<<<<<< +@@ -8186,9 +8186,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ + * @property + */ + __Pyx_XDECREF(__pyx_r); +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 383, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 383, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -8203,14 +8203,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 383, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":374 ++ /* "vidcutter/libs/pympv/mpv.pyx":376 + * + * @property + * def name(self): # <<<<<<<<<<<<<< +@@ -8232,7 +8232,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":386 ++/* "vidcutter/libs/pympv/mpv.pyx":388 + * + * @property + * def time(self): # <<<<<<<<<<<<<< +@@ -8263,7 +8263,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":394 ++ /* "vidcutter/libs/pympv/mpv.pyx":396 + * """ + * cdef int64_t time + * assert self._ctx # <<<<<<<<<<<<<< +@@ -8274,12 +8274,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 394, __pyx_L1_error) ++ __PYX_ERR(0, 396, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":395 ++ /* "vidcutter/libs/pympv/mpv.pyx":397 + * cdef int64_t time + * assert self._ctx + * with nogil: # <<<<<<<<<<<<<< +@@ -8294,7 +8294,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":396 ++ /* "vidcutter/libs/pympv/mpv.pyx":398 + * assert self._ctx + * with nogil: + * time = mpv_get_time_us(self._ctx) # <<<<<<<<<<<<<< +@@ -8304,7 +8304,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ + __pyx_v_time = mpv_get_time_us(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":395 ++ /* "vidcutter/libs/pympv/mpv.pyx":397 + * cdef int64_t time + * assert self._ctx + * with nogil: # <<<<<<<<<<<<<< +@@ -8323,7 +8323,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":397 ++ /* "vidcutter/libs/pympv/mpv.pyx":399 + * with nogil: + * time = mpv_get_time_us(self._ctx) + * return time # <<<<<<<<<<<<<< +@@ -8331,13 +8331,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ + * # def suspend(self): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_v_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_v_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":386 ++ /* "vidcutter/libs/pympv/mpv.pyx":388 + * + * @property + * def time(self): # <<<<<<<<<<<<<< +@@ -8356,7 +8356,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":412 ++/* "vidcutter/libs/pympv/mpv.pyx":414 + * + * @_errors + * def request_event(self, event, enable): # <<<<<<<<<<<<<< +@@ -8399,11 +8399,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event(PyObject + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable)) != 0)) kw_args--; + else { +- __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, 1); __PYX_ERR(0, 412, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, 1); __PYX_ERR(0, 414, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "request_event") < 0)) __PYX_ERR(0, 412, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "request_event") < 0)) __PYX_ERR(0, 414, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; +@@ -8416,7 +8416,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event(PyObject + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 412, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 414, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -8444,7 +8444,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("request_event", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":421 ++ /* "vidcutter/libs/pympv/mpv.pyx":423 + * Wraps: mpv_request_event + * """ + * assert self._ctx # <<<<<<<<<<<<<< +@@ -8455,19 +8455,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 421, __pyx_L1_error) ++ __PYX_ERR(0, 423, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":422 ++ /* "vidcutter/libs/pympv/mpv.pyx":424 + * """ + * assert self._ctx + * cdef int enable_i = 1 if enable else 0 # <<<<<<<<<<<<<< + * cdef int err + * cdef mpv_event_id event_id = event + */ +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_enable); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 422, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_enable); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 424, __pyx_L1_error) + if (__pyx_t_2) { + __pyx_t_1 = 1; + } else { +@@ -8475,17 +8475,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ + } + __pyx_v_enable_i = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":424 ++ /* "vidcutter/libs/pympv/mpv.pyx":426 + * cdef int enable_i = 1 if enable else 0 + * cdef int err + * cdef mpv_event_id event_id = event # <<<<<<<<<<<<<< + * with nogil: + * err = mpv_request_event(self._ctx, event_id, enable_i) + */ +- __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_event)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 424, __pyx_L1_error) ++ __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_event)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 426, __pyx_L1_error) + __pyx_v_event_id = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":425 ++ /* "vidcutter/libs/pympv/mpv.pyx":427 + * cdef int err + * cdef mpv_event_id event_id = event + * with nogil: # <<<<<<<<<<<<<< +@@ -8500,7 +8500,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":426 ++ /* "vidcutter/libs/pympv/mpv.pyx":428 + * cdef mpv_event_id event_id = event + * with nogil: + * err = mpv_request_event(self._ctx, event_id, enable_i) # <<<<<<<<<<<<<< +@@ -8510,7 +8510,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ + __pyx_v_err = mpv_request_event(__pyx_v_self->_ctx, __pyx_v_event_id, __pyx_v_enable_i); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":425 ++ /* "vidcutter/libs/pympv/mpv.pyx":427 + * cdef int err + * cdef mpv_event_id event_id = event + * with nogil: # <<<<<<<<<<<<<< +@@ -8529,7 +8529,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":427 ++ /* "vidcutter/libs/pympv/mpv.pyx":429 + * with nogil: + * err = mpv_request_event(self._ctx, event_id, enable_i) + * return err # <<<<<<<<<<<<<< +@@ -8537,13 +8537,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ + * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":412 ++ /* "vidcutter/libs/pympv/mpv.pyx":414 + * + * @_errors + * def request_event(self, event, enable): # <<<<<<<<<<<<<< +@@ -8562,7 +8562,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":430 ++/* "vidcutter/libs/pympv/mpv.pyx":432 + * + * @_errors + * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< +@@ -8599,7 +8599,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ + __Pyx_RefNannySetupContext("set_log_level", 0); + __Pyx_INCREF(__pyx_v_loglevel); + +- /* "vidcutter/libs/pympv/mpv.pyx":432 ++ /* "vidcutter/libs/pympv/mpv.pyx":434 + * def set_log_level(self, loglevel): + * """Wraps: mpv_request_log_messages""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -8610,19 +8610,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 432, __pyx_L1_error) ++ __PYX_ERR(0, 434, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":433 ++ /* "vidcutter/libs/pympv/mpv.pyx":435 + * """Wraps: mpv_request_log_messages""" + * assert self._ctx + * loglevel = _strenc(loglevel) # <<<<<<<<<<<<<< + * cdef const char* loglevel_c = loglevel + * cdef int err + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 433, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -8636,23 +8636,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_loglevel) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_loglevel); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_loglevel, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":434 ++ /* "vidcutter/libs/pympv/mpv.pyx":436 + * assert self._ctx + * loglevel = _strenc(loglevel) + * cdef const char* loglevel_c = loglevel # <<<<<<<<<<<<<< + * cdef int err + * with nogil: + */ +- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_loglevel); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 434, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_loglevel); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L1_error) + __pyx_v_loglevel_c = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":436 ++ /* "vidcutter/libs/pympv/mpv.pyx":438 + * cdef const char* loglevel_c = loglevel + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -8667,7 +8667,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":437 ++ /* "vidcutter/libs/pympv/mpv.pyx":439 + * cdef int err + * with nogil: + * err = mpv_request_log_messages(self._ctx, loglevel_c) # <<<<<<<<<<<<<< +@@ -8677,7 +8677,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ + __pyx_v_err = mpv_request_log_messages(__pyx_v_self->_ctx, __pyx_v_loglevel_c); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":436 ++ /* "vidcutter/libs/pympv/mpv.pyx":438 + * cdef const char* loglevel_c = loglevel + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -8696,7 +8696,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":438 ++ /* "vidcutter/libs/pympv/mpv.pyx":440 + * with nogil: + * err = mpv_request_log_messages(self._ctx, loglevel_c) + * return err # <<<<<<<<<<<<<< +@@ -8704,13 +8704,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ + * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":430 ++ /* "vidcutter/libs/pympv/mpv.pyx":432 + * + * @_errors + * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< +@@ -8732,7 +8732,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":441 ++/* "vidcutter/libs/pympv/mpv.pyx":443 + * + * @_errors + * def load_config(self, filename): # <<<<<<<<<<<<<< +@@ -8769,7 +8769,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p + __Pyx_RefNannySetupContext("load_config", 0); + __Pyx_INCREF(__pyx_v_filename); + +- /* "vidcutter/libs/pympv/mpv.pyx":443 ++ /* "vidcutter/libs/pympv/mpv.pyx":445 + * def load_config(self, filename): + * """Wraps: mpv_load_config_file""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -8780,19 +8780,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 443, __pyx_L1_error) ++ __PYX_ERR(0, 445, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":444 ++ /* "vidcutter/libs/pympv/mpv.pyx":446 + * """Wraps: mpv_load_config_file""" + * assert self._ctx + * filename = _strenc(filename) # <<<<<<<<<<<<<< + * cdef const char* _filename = filename + * cdef int err + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 444, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 446, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -8806,23 +8806,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 446, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":445 ++ /* "vidcutter/libs/pympv/mpv.pyx":447 + * assert self._ctx + * filename = _strenc(filename) + * cdef const char* _filename = filename # <<<<<<<<<<<<<< + * cdef int err + * with nogil: + */ +- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 445, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 447, __pyx_L1_error) + __pyx_v__filename = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":447 ++ /* "vidcutter/libs/pympv/mpv.pyx":449 + * cdef const char* _filename = filename + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -8837,7 +8837,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":448 ++ /* "vidcutter/libs/pympv/mpv.pyx":450 + * cdef int err + * with nogil: + * err = mpv_load_config_file(self._ctx, _filename) # <<<<<<<<<<<<<< +@@ -8847,7 +8847,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p + __pyx_v_err = mpv_load_config_file(__pyx_v_self->_ctx, __pyx_v__filename); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":447 ++ /* "vidcutter/libs/pympv/mpv.pyx":449 + * cdef const char* _filename = filename + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -8866,7 +8866,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":449 ++ /* "vidcutter/libs/pympv/mpv.pyx":451 + * with nogil: + * err = mpv_load_config_file(self._ctx, _filename) + * return err # <<<<<<<<<<<<<< +@@ -8874,13 +8874,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p + * def _format_for(self, value): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 451, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":441 ++ /* "vidcutter/libs/pympv/mpv.pyx":443 + * + * @_errors + * def load_config(self, filename): # <<<<<<<<<<<<<< +@@ -8902,7 +8902,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":451 ++/* "vidcutter/libs/pympv/mpv.pyx":453 + * return err + * + * def _format_for(self, value): # <<<<<<<<<<<<<< +@@ -8935,7 +8935,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_format_for", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":452 ++ /* "vidcutter/libs/pympv/mpv.pyx":454 + * + * def _format_for(self, value): + * if isinstance(value, basestring): # <<<<<<<<<<<<<< +@@ -8946,7 +8946,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":453 ++ /* "vidcutter/libs/pympv/mpv.pyx":455 + * def _format_for(self, value): + * if isinstance(value, basestring): + * return MPV_FORMAT_STRING # <<<<<<<<<<<<<< +@@ -8954,13 +8954,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + * return MPV_FORMAT_FLAG + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":452 ++ /* "vidcutter/libs/pympv/mpv.pyx":454 + * + * def _format_for(self, value): + * if isinstance(value, basestring): # <<<<<<<<<<<<<< +@@ -8969,7 +8969,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":454 ++ /* "vidcutter/libs/pympv/mpv.pyx":456 + * if isinstance(value, basestring): + * return MPV_FORMAT_STRING + * elif isinstance(value, bool): # <<<<<<<<<<<<<< +@@ -8978,12 +8978,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + */ + __pyx_t_3 = ((PyObject*)&PyBool_Type); + __Pyx_INCREF(__pyx_t_3); +- __pyx_t_2 = PyObject_IsInstance(__pyx_v_value, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 454, __pyx_L1_error) ++ __pyx_t_2 = PyObject_IsInstance(__pyx_v_value, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 456, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":455 ++ /* "vidcutter/libs/pympv/mpv.pyx":457 + * return MPV_FORMAT_STRING + * elif isinstance(value, bool): + * return MPV_FORMAT_FLAG # <<<<<<<<<<<<<< +@@ -8991,13 +8991,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + * return MPV_FORMAT_INT64 + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":454 ++ /* "vidcutter/libs/pympv/mpv.pyx":456 + * if isinstance(value, basestring): + * return MPV_FORMAT_STRING + * elif isinstance(value, bool): # <<<<<<<<<<<<<< +@@ -9006,7 +9006,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":456 ++ /* "vidcutter/libs/pympv/mpv.pyx":458 + * elif isinstance(value, bool): + * return MPV_FORMAT_FLAG + * elif isinstance(value, int): # <<<<<<<<<<<<<< +@@ -9017,7 +9017,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":457 ++ /* "vidcutter/libs/pympv/mpv.pyx":459 + * return MPV_FORMAT_FLAG + * elif isinstance(value, int): + * return MPV_FORMAT_INT64 # <<<<<<<<<<<<<< +@@ -9025,13 +9025,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + * return MPV_FORMAT_DOUBLE + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":456 ++ /* "vidcutter/libs/pympv/mpv.pyx":458 + * elif isinstance(value, bool): + * return MPV_FORMAT_FLAG + * elif isinstance(value, int): # <<<<<<<<<<<<<< +@@ -9040,7 +9040,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":458 ++ /* "vidcutter/libs/pympv/mpv.pyx":460 + * elif isinstance(value, int): + * return MPV_FORMAT_INT64 + * elif isinstance(value, float): # <<<<<<<<<<<<<< +@@ -9051,7 +9051,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":459 ++ /* "vidcutter/libs/pympv/mpv.pyx":461 + * return MPV_FORMAT_INT64 + * elif isinstance(value, float): + * return MPV_FORMAT_DOUBLE # <<<<<<<<<<<<<< +@@ -9059,13 +9059,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + * return MPV_FORMAT_NODE_ARRAY + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":458 ++ /* "vidcutter/libs/pympv/mpv.pyx":460 + * elif isinstance(value, int): + * return MPV_FORMAT_INT64 + * elif isinstance(value, float): # <<<<<<<<<<<<<< +@@ -9074,7 +9074,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":460 ++ /* "vidcutter/libs/pympv/mpv.pyx":462 + * elif isinstance(value, float): + * return MPV_FORMAT_DOUBLE + * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< +@@ -9095,7 +9095,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":461 ++ /* "vidcutter/libs/pympv/mpv.pyx":463 + * return MPV_FORMAT_DOUBLE + * elif isinstance(value, (tuple, list)): + * return MPV_FORMAT_NODE_ARRAY # <<<<<<<<<<<<<< +@@ -9103,13 +9103,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + * return MPV_FORMAT_NODE_MAP + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":460 ++ /* "vidcutter/libs/pympv/mpv.pyx":462 + * elif isinstance(value, float): + * return MPV_FORMAT_DOUBLE + * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< +@@ -9118,7 +9118,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":462 ++ /* "vidcutter/libs/pympv/mpv.pyx":464 + * elif isinstance(value, (tuple, list)): + * return MPV_FORMAT_NODE_ARRAY + * elif isinstance(value, dict): # <<<<<<<<<<<<<< +@@ -9129,7 +9129,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":463 ++ /* "vidcutter/libs/pympv/mpv.pyx":465 + * return MPV_FORMAT_NODE_ARRAY + * elif isinstance(value, dict): + * return MPV_FORMAT_NODE_MAP # <<<<<<<<<<<<<< +@@ -9137,13 +9137,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + * + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 465, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":462 ++ /* "vidcutter/libs/pympv/mpv.pyx":464 + * elif isinstance(value, (tuple, list)): + * return MPV_FORMAT_NODE_ARRAY + * elif isinstance(value, dict): # <<<<<<<<<<<<<< +@@ -9152,7 +9152,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":464 ++ /* "vidcutter/libs/pympv/mpv.pyx":466 + * elif isinstance(value, dict): + * return MPV_FORMAT_NODE_MAP + * return MPV_FORMAT_NONE # <<<<<<<<<<<<<< +@@ -9160,13 +9160,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + * cdef mpv_node_list* _prep_node_list(self, values): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 464, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 466, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":451 ++ /* "vidcutter/libs/pympv/mpv.pyx":453 + * return err + * + * def _format_for(self, value): # <<<<<<<<<<<<<< +@@ -9185,7 +9185,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":466 ++/* "vidcutter/libs/pympv/mpv.pyx":468 + * return MPV_FORMAT_NONE + * + * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< +@@ -9216,7 +9216,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_prep_node_list", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":469 ++ /* "vidcutter/libs/pympv/mpv.pyx":471 + * cdef mpv_node node + * cdef mpv_format format + * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) # <<<<<<<<<<<<<< +@@ -9225,17 +9225,17 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + */ + __pyx_v_node_list = ((struct mpv_node_list *)malloc((sizeof(struct mpv_node_list)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":470 ++ /* "vidcutter/libs/pympv/mpv.pyx":472 + * cdef mpv_format format + * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) + * node_list.num = len(values) # <<<<<<<<<<<<<< + * node_list.values = NULL + * node_list.keys = NULL + */ +- __pyx_t_1 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 470, __pyx_L1_error) ++ __pyx_t_1 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 472, __pyx_L1_error) + __pyx_v_node_list->num = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":471 ++ /* "vidcutter/libs/pympv/mpv.pyx":473 + * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) + * node_list.num = len(values) + * node_list.values = NULL # <<<<<<<<<<<<<< +@@ -9244,7 +9244,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + */ + __pyx_v_node_list->values = NULL; + +- /* "vidcutter/libs/pympv/mpv.pyx":472 ++ /* "vidcutter/libs/pympv/mpv.pyx":474 + * node_list.num = len(values) + * node_list.values = NULL + * node_list.keys = NULL # <<<<<<<<<<<<<< +@@ -9253,7 +9253,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + */ + __pyx_v_node_list->keys = NULL; + +- /* "vidcutter/libs/pympv/mpv.pyx":473 ++ /* "vidcutter/libs/pympv/mpv.pyx":475 + * node_list.values = NULL + * node_list.keys = NULL + * if node_list.num: # <<<<<<<<<<<<<< +@@ -9263,7 +9263,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + __pyx_t_2 = (__pyx_v_node_list->num != 0); + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":474 ++ /* "vidcutter/libs/pympv/mpv.pyx":476 + * node_list.keys = NULL + * if node_list.num: + * node_list.values = malloc(node_list.num * sizeof(mpv_node)) # <<<<<<<<<<<<<< +@@ -9272,7 +9272,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + */ + __pyx_v_node_list->values = ((struct mpv_node *)malloc((__pyx_v_node_list->num * (sizeof(struct mpv_node))))); + +- /* "vidcutter/libs/pympv/mpv.pyx":473 ++ /* "vidcutter/libs/pympv/mpv.pyx":475 + * node_list.values = NULL + * node_list.keys = NULL + * if node_list.num: # <<<<<<<<<<<<<< +@@ -9281,7 +9281,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":475 ++ /* "vidcutter/libs/pympv/mpv.pyx":477 + * if node_list.num: + * node_list.values = malloc(node_list.num * sizeof(mpv_node)) + * for i, value in enumerate(values): # <<<<<<<<<<<<<< +@@ -9294,26 +9294,26 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + __pyx_t_4 = __pyx_v_values; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0; + __pyx_t_5 = NULL; + } else { +- __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 477, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 477, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_5)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 477, __pyx_L1_error) + #else +- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #endif + } else { + if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 477, __pyx_L1_error) + #else +- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + #endif + } +@@ -9323,7 +9323,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); +- else __PYX_ERR(0, 475, __pyx_L1_error) ++ else __PYX_ERR(0, 477, __pyx_L1_error) + } + break; + } +@@ -9333,20 +9333,20 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + __pyx_t_6 = 0; + __Pyx_INCREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); +- __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); + __pyx_t_3 = __pyx_t_6; + __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":476 ++ /* "vidcutter/libs/pympv/mpv.pyx":478 + * node_list.values = malloc(node_list.num * sizeof(mpv_node)) + * for i, value in enumerate(values): + * format = self._format_for(value) # <<<<<<<<<<<<<< + * node = self._prep_native_value(value, format) + * node_list.values[i] = node + */ +- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 476, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 478, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { +@@ -9360,36 +9360,36 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + } + __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error) ++ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 478, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __pyx_t_9 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) ++ __pyx_t_9 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_v_format = __pyx_t_9; + +- /* "vidcutter/libs/pympv/mpv.pyx":477 ++ /* "vidcutter/libs/pympv/mpv.pyx":479 + * for i, value in enumerate(values): + * format = self._format_for(value) + * node = self._prep_native_value(value, format) # <<<<<<<<<<<<<< + * node_list.values[i] = node + * return node_list + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 479, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":478 ++ /* "vidcutter/libs/pympv/mpv.pyx":480 + * format = self._format_for(value) + * node = self._prep_native_value(value, format) + * node_list.values[i] = node # <<<<<<<<<<<<<< + * return node_list + * + */ +- __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) ++ __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error) + (__pyx_v_node_list->values[__pyx_t_10]) = __pyx_v_node; + +- /* "vidcutter/libs/pympv/mpv.pyx":475 ++ /* "vidcutter/libs/pympv/mpv.pyx":477 + * if node_list.num: + * node_list.values = malloc(node_list.num * sizeof(mpv_node)) + * for i, value in enumerate(values): # <<<<<<<<<<<<<< +@@ -9400,7 +9400,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":479 ++ /* "vidcutter/libs/pympv/mpv.pyx":481 + * node = self._prep_native_value(value, format) + * node_list.values[i] = node + * return node_list # <<<<<<<<<<<<<< +@@ -9410,7 +9410,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + __pyx_r = __pyx_v_node_list; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":466 ++ /* "vidcutter/libs/pympv/mpv.pyx":468 + * return MPV_FORMAT_NONE + * + * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< +@@ -9434,7 +9434,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":481 ++/* "vidcutter/libs/pympv/mpv.pyx":483 + * return node_list + * + * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< +@@ -9466,14 +9466,14 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_prep_node_map", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":484 ++ /* "vidcutter/libs/pympv/mpv.pyx":486 + * cdef char* ckey + * cdef mpv_node_list* list + * list = self._prep_node_list(map.values()) # <<<<<<<<<<<<<< + * keys = map.keys() + * if not len(keys): + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 484, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 486, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -9487,20 +9487,20 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 486, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":485 ++ /* "vidcutter/libs/pympv/mpv.pyx":487 + * cdef mpv_node_list* list + * list = self._prep_node_list(map.values()) + * keys = map.keys() # <<<<<<<<<<<<<< + * if not len(keys): + * return list + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 487, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -9514,24 +9514,24 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 487, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_keys = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":486 ++ /* "vidcutter/libs/pympv/mpv.pyx":488 + * list = self._prep_node_list(map.values()) + * keys = map.keys() + * if not len(keys): # <<<<<<<<<<<<<< + * return list + * list.keys = malloc(list.num) + */ +- __pyx_t_4 = PyObject_Length(__pyx_v_keys); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 486, __pyx_L1_error) ++ __pyx_t_4 = PyObject_Length(__pyx_v_keys); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 488, __pyx_L1_error) + __pyx_t_5 = ((!(__pyx_t_4 != 0)) != 0); + if (__pyx_t_5) { + +- /* "vidcutter/libs/pympv/mpv.pyx":487 ++ /* "vidcutter/libs/pympv/mpv.pyx":489 + * keys = map.keys() + * if not len(keys): + * return list # <<<<<<<<<<<<<< +@@ -9541,7 +9541,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + __pyx_r = __pyx_v_list; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":486 ++ /* "vidcutter/libs/pympv/mpv.pyx":488 + * list = self._prep_node_list(map.values()) + * keys = map.keys() + * if not len(keys): # <<<<<<<<<<<<<< +@@ -9550,7 +9550,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":488 ++ /* "vidcutter/libs/pympv/mpv.pyx":490 + * if not len(keys): + * return list + * list.keys = malloc(list.num) # <<<<<<<<<<<<<< +@@ -9559,7 +9559,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + */ + __pyx_v_list->keys = ((char **)malloc(__pyx_v_list->num)); + +- /* "vidcutter/libs/pympv/mpv.pyx":489 ++ /* "vidcutter/libs/pympv/mpv.pyx":491 + * return list + * list.keys = malloc(list.num) + * for i, key in enumerate(keys): # <<<<<<<<<<<<<< +@@ -9572,26 +9572,26 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + __pyx_t_2 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; + __pyx_t_6 = NULL; + } else { +- __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 491, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 491, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 491, __pyx_L1_error) + #else +- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 491, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 491, __pyx_L1_error) + #else +- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 491, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } +@@ -9601,7 +9601,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); +- else __PYX_ERR(0, 489, __pyx_L1_error) ++ else __PYX_ERR(0, 491, __pyx_L1_error) + } + break; + } +@@ -9611,20 +9611,20 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); +- __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 491, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":490 ++ /* "vidcutter/libs/pympv/mpv.pyx":492 + * list.keys = malloc(list.num) + * for i, key in enumerate(keys): + * key = _strenc(key) # <<<<<<<<<<<<<< + * ckey = key + * list.keys[i] = malloc(len(key) + 1) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_strenc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_strenc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 492, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { +@@ -9638,44 +9638,44 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + } + __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error) ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 492, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_3); + __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":491 ++ /* "vidcutter/libs/pympv/mpv.pyx":493 + * for i, key in enumerate(keys): + * key = _strenc(key) + * ckey = key # <<<<<<<<<<<<<< + * list.keys[i] = malloc(len(key) + 1) + * strcpy(list.keys[i], ckey) + */ +- __pyx_t_9 = __Pyx_PyObject_AsWritableString(__pyx_v_key); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 491, __pyx_L1_error) ++ __pyx_t_9 = __Pyx_PyObject_AsWritableString(__pyx_v_key); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_v_ckey = __pyx_t_9; + +- /* "vidcutter/libs/pympv/mpv.pyx":492 ++ /* "vidcutter/libs/pympv/mpv.pyx":494 + * key = _strenc(key) + * ckey = key + * list.keys[i] = malloc(len(key) + 1) # <<<<<<<<<<<<<< + * strcpy(list.keys[i], ckey) + * return list + */ +- __pyx_t_10 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 492, __pyx_L1_error) +- __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L1_error) ++ __pyx_t_10 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 494, __pyx_L1_error) ++ __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 494, __pyx_L1_error) + (__pyx_v_list->keys[__pyx_t_11]) = ((char *)malloc((__pyx_t_10 + 1))); + +- /* "vidcutter/libs/pympv/mpv.pyx":493 ++ /* "vidcutter/libs/pympv/mpv.pyx":495 + * ckey = key + * list.keys[i] = malloc(len(key) + 1) + * strcpy(list.keys[i], ckey) # <<<<<<<<<<<<<< + * return list + * + */ +- __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error) ++ __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 495, __pyx_L1_error) + (void)(strcpy((__pyx_v_list->keys[__pyx_t_10]), __pyx_v_ckey)); + +- /* "vidcutter/libs/pympv/mpv.pyx":489 ++ /* "vidcutter/libs/pympv/mpv.pyx":491 + * return list + * list.keys = malloc(list.num) + * for i, key in enumerate(keys): # <<<<<<<<<<<<<< +@@ -9686,7 +9686,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":494 ++ /* "vidcutter/libs/pympv/mpv.pyx":496 + * list.keys[i] = malloc(len(key) + 1) + * strcpy(list.keys[i], ckey) + * return list # <<<<<<<<<<<<<< +@@ -9696,7 +9696,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + __pyx_r = __pyx_v_list; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":481 ++ /* "vidcutter/libs/pympv/mpv.pyx":483 + * return node_list + * + * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< +@@ -9721,7 +9721,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":496 ++/* "vidcutter/libs/pympv/mpv.pyx":498 + * return list + * + * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< +@@ -9749,39 +9749,39 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + __Pyx_RefNannySetupContext("_prep_native_value", 0); + __Pyx_INCREF(__pyx_v_value); + +- /* "vidcutter/libs/pympv/mpv.pyx":498 ++ /* "vidcutter/libs/pympv/mpv.pyx":500 + * cdef mpv_node _prep_native_value(self, value, format): + * cdef mpv_node node + * node.format = format # <<<<<<<<<<<<<< + * if format == MPV_FORMAT_STRING: + * value = _strenc(value) + */ +- __pyx_t_1 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L1_error) ++ __pyx_t_1 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 500, __pyx_L1_error) + __pyx_v_node.format = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":499 ++ /* "vidcutter/libs/pympv/mpv.pyx":501 + * cdef mpv_node node + * node.format = format + * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< + * value = _strenc(value) + * node.u.string = malloc(len(value) + 1) + */ +- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 501, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) ++ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 501, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 499, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 501, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":500 ++ /* "vidcutter/libs/pympv/mpv.pyx":502 + * node.format = format + * if format == MPV_FORMAT_STRING: + * value = _strenc(value) # <<<<<<<<<<<<<< + * node.u.string = malloc(len(value) + 1) + * strcpy(node.u.string, value) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -9795,33 +9795,33 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + } + __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error) ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 502, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3); + __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":501 ++ /* "vidcutter/libs/pympv/mpv.pyx":503 + * if format == MPV_FORMAT_STRING: + * value = _strenc(value) + * node.u.string = malloc(len(value) + 1) # <<<<<<<<<<<<<< + * strcpy(node.u.string, value) + * elif format == MPV_FORMAT_FLAG: + */ +- __pyx_t_6 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 501, __pyx_L1_error) ++ __pyx_t_6 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_v_node.u.string = ((char *)malloc((__pyx_t_6 + 1))); + +- /* "vidcutter/libs/pympv/mpv.pyx":502 ++ /* "vidcutter/libs/pympv/mpv.pyx":504 + * value = _strenc(value) + * node.u.string = malloc(len(value) + 1) + * strcpy(node.u.string, value) # <<<<<<<<<<<<<< + * elif format == MPV_FORMAT_FLAG: + * node.u.flag = 1 if value else 0 + */ +- __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 504, __pyx_L1_error) + (void)(strcpy(__pyx_v_node.u.string, __pyx_t_7)); + +- /* "vidcutter/libs/pympv/mpv.pyx":499 ++ /* "vidcutter/libs/pympv/mpv.pyx":501 + * cdef mpv_node node + * node.format = format + * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +@@ -9831,29 +9831,29 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":503 ++ /* "vidcutter/libs/pympv/mpv.pyx":505 + * node.u.string = malloc(len(value) + 1) + * strcpy(node.u.string, value) + * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< + * node.u.flag = 1 if value else 0 + * elif format == MPV_FORMAT_INT64: + */ +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error) ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 503, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 505, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":504 ++ /* "vidcutter/libs/pympv/mpv.pyx":506 + * strcpy(node.u.string, value) + * elif format == MPV_FORMAT_FLAG: + * node.u.flag = 1 if value else 0 # <<<<<<<<<<<<<< + * elif format == MPV_FORMAT_INT64: + * node.u.int64 = value + */ +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 504, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 506, __pyx_L1_error) + if (__pyx_t_4) { + __pyx_t_8 = 1; + } else { +@@ -9861,7 +9861,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + } + __pyx_v_node.u.flag = __pyx_t_8; + +- /* "vidcutter/libs/pympv/mpv.pyx":503 ++ /* "vidcutter/libs/pympv/mpv.pyx":505 + * node.u.string = malloc(len(value) + 1) + * strcpy(node.u.string, value) + * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< +@@ -9871,32 +9871,32 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":505 ++ /* "vidcutter/libs/pympv/mpv.pyx":507 + * elif format == MPV_FORMAT_FLAG: + * node.u.flag = 1 if value else 0 + * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< + * node.u.int64 = value + * elif format == MPV_FORMAT_DOUBLE: + */ +- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 507, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error) ++ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 505, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 507, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":506 ++ /* "vidcutter/libs/pympv/mpv.pyx":508 + * node.u.flag = 1 if value else 0 + * elif format == MPV_FORMAT_INT64: + * node.u.int64 = value # <<<<<<<<<<<<<< + * elif format == MPV_FORMAT_DOUBLE: + * node.u.double_ = value + */ +- __pyx_t_9 = __Pyx_PyInt_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_9 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) ++ __pyx_t_9 = __Pyx_PyInt_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_9 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 508, __pyx_L1_error) + __pyx_v_node.u.int64 = __pyx_t_9; + +- /* "vidcutter/libs/pympv/mpv.pyx":505 ++ /* "vidcutter/libs/pympv/mpv.pyx":507 + * elif format == MPV_FORMAT_FLAG: + * node.u.flag = 1 if value else 0 + * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< +@@ -9906,32 +9906,32 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":507 ++ /* "vidcutter/libs/pympv/mpv.pyx":509 + * elif format == MPV_FORMAT_INT64: + * node.u.int64 = value + * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< + * node.u.double_ = value + * elif format == MPV_FORMAT_NODE_ARRAY: + */ +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 507, __pyx_L1_error) ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 509, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 507, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 509, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":508 ++ /* "vidcutter/libs/pympv/mpv.pyx":510 + * node.u.int64 = value + * elif format == MPV_FORMAT_DOUBLE: + * node.u.double_ = value # <<<<<<<<<<<<<< + * elif format == MPV_FORMAT_NODE_ARRAY: + * node.u.list = self._prep_node_list(value) + */ +- __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 508, __pyx_L1_error) ++ __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 510, __pyx_L1_error) + __pyx_v_node.u.double_ = __pyx_t_10; + +- /* "vidcutter/libs/pympv/mpv.pyx":507 ++ /* "vidcutter/libs/pympv/mpv.pyx":509 + * elif format == MPV_FORMAT_INT64: + * node.u.int64 = value + * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< +@@ -9941,22 +9941,22 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":509 ++ /* "vidcutter/libs/pympv/mpv.pyx":511 + * elif format == MPV_FORMAT_DOUBLE: + * node.u.double_ = value + * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< + * node.u.list = self._prep_node_list(value) + * elif format == MPV_FORMAT_NODE_MAP: + */ +- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 509, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error) ++ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 509, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 511, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":510 ++ /* "vidcutter/libs/pympv/mpv.pyx":512 + * node.u.double_ = value + * elif format == MPV_FORMAT_NODE_ARRAY: + * node.u.list = self._prep_node_list(value) # <<<<<<<<<<<<<< +@@ -9965,7 +9965,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + */ + __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_v_value); + +- /* "vidcutter/libs/pympv/mpv.pyx":509 ++ /* "vidcutter/libs/pympv/mpv.pyx":511 + * elif format == MPV_FORMAT_DOUBLE: + * node.u.double_ = value + * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< +@@ -9975,22 +9975,22 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":511 ++ /* "vidcutter/libs/pympv/mpv.pyx":513 + * elif format == MPV_FORMAT_NODE_ARRAY: + * node.u.list = self._prep_node_list(value) + * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< + * node.u.list = self._prep_node_map(value) + * else: + */ +- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 513, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 513, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 511, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 513, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_4) { + +- /* "vidcutter/libs/pympv/mpv.pyx":512 ++ /* "vidcutter/libs/pympv/mpv.pyx":514 + * node.u.list = self._prep_node_list(value) + * elif format == MPV_FORMAT_NODE_MAP: + * node.u.list = self._prep_node_map(value) # <<<<<<<<<<<<<< +@@ -9999,7 +9999,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + */ + __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_map(__pyx_v_self, __pyx_v_value); + +- /* "vidcutter/libs/pympv/mpv.pyx":511 ++ /* "vidcutter/libs/pympv/mpv.pyx":513 + * elif format == MPV_FORMAT_NODE_ARRAY: + * node.u.list = self._prep_node_list(value) + * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +@@ -10009,7 +10009,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":514 ++ /* "vidcutter/libs/pympv/mpv.pyx":516 + * node.u.list = self._prep_node_map(value) + * else: + * node.format = MPV_FORMAT_NONE # <<<<<<<<<<<<<< +@@ -10021,7 +10021,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + } + __pyx_L3:; + +- /* "vidcutter/libs/pympv/mpv.pyx":515 ++ /* "vidcutter/libs/pympv/mpv.pyx":517 + * else: + * node.format = MPV_FORMAT_NONE + * return node # <<<<<<<<<<<<<< +@@ -10031,7 +10031,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + __pyx_r = __pyx_v_node; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":496 ++ /* "vidcutter/libs/pympv/mpv.pyx":498 + * return list + * + * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< +@@ -10052,7 +10052,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":517 ++/* "vidcutter/libs/pympv/mpv.pyx":519 + * return node + * + * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< +@@ -10074,7 +10074,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_free_native_value", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":518 ++ /* "vidcutter/libs/pympv/mpv.pyx":520 + * + * cdef _free_native_value(self, mpv_node node): + * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< +@@ -10085,7 +10085,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + case MPV_FORMAT_NODE_ARRAY: + case MPV_FORMAT_NODE_MAP: + +- /* "vidcutter/libs/pympv/mpv.pyx":519 ++ /* "vidcutter/libs/pympv/mpv.pyx":521 + * cdef _free_native_value(self, mpv_node node): + * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): + * for i in range(node.u.list.num): # <<<<<<<<<<<<<< +@@ -10097,19 +10097,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { + __pyx_v_i = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":520 ++ /* "vidcutter/libs/pympv/mpv.pyx":522 + * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): + * for i in range(node.u.list.num): + * self._free_native_value(node.u.list.values[i]) # <<<<<<<<<<<<<< + * free(node.u.list.values) + * if node.format == MPV_FORMAT_NODE_MAP: + */ +- __pyx_t_4 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, (__pyx_v_node.u.list->values[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error) ++ __pyx_t_4 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, (__pyx_v_node.u.list->values[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 522, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":521 ++ /* "vidcutter/libs/pympv/mpv.pyx":523 + * for i in range(node.u.list.num): + * self._free_native_value(node.u.list.values[i]) + * free(node.u.list.values) # <<<<<<<<<<<<<< +@@ -10118,7 +10118,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + */ + free(__pyx_v_node.u.list->values); + +- /* "vidcutter/libs/pympv/mpv.pyx":522 ++ /* "vidcutter/libs/pympv/mpv.pyx":524 + * self._free_native_value(node.u.list.values[i]) + * free(node.u.list.values) + * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +@@ -10128,7 +10128,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + __pyx_t_5 = ((__pyx_v_node.format == MPV_FORMAT_NODE_MAP) != 0); + if (__pyx_t_5) { + +- /* "vidcutter/libs/pympv/mpv.pyx":523 ++ /* "vidcutter/libs/pympv/mpv.pyx":525 + * free(node.u.list.values) + * if node.format == MPV_FORMAT_NODE_MAP: + * for i in range(node.u.list.num): # <<<<<<<<<<<<<< +@@ -10140,7 +10140,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { + __pyx_v_i = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":524 ++ /* "vidcutter/libs/pympv/mpv.pyx":526 + * if node.format == MPV_FORMAT_NODE_MAP: + * for i in range(node.u.list.num): + * free(node.u.list.keys[i]) # <<<<<<<<<<<<<< +@@ -10150,7 +10150,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + free((__pyx_v_node.u.list->keys[__pyx_v_i])); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":525 ++ /* "vidcutter/libs/pympv/mpv.pyx":527 + * for i in range(node.u.list.num): + * free(node.u.list.keys[i]) + * free(node.u.list.keys) # <<<<<<<<<<<<<< +@@ -10159,7 +10159,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + */ + free(__pyx_v_node.u.list->keys); + +- /* "vidcutter/libs/pympv/mpv.pyx":522 ++ /* "vidcutter/libs/pympv/mpv.pyx":524 + * self._free_native_value(node.u.list.values[i]) + * free(node.u.list.values) + * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< +@@ -10168,7 +10168,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":526 ++ /* "vidcutter/libs/pympv/mpv.pyx":528 + * free(node.u.list.keys[i]) + * free(node.u.list.keys) + * free(node.u.list) # <<<<<<<<<<<<<< +@@ -10177,7 +10177,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + */ + free(__pyx_v_node.u.list); + +- /* "vidcutter/libs/pympv/mpv.pyx":518 ++ /* "vidcutter/libs/pympv/mpv.pyx":520 + * + * cdef _free_native_value(self, mpv_node node): + * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< +@@ -10187,7 +10187,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + break; + case MPV_FORMAT_STRING: + +- /* "vidcutter/libs/pympv/mpv.pyx":528 ++ /* "vidcutter/libs/pympv/mpv.pyx":530 + * free(node.u.list) + * elif node.format == MPV_FORMAT_STRING: + * free(node.u.string) # <<<<<<<<<<<<<< +@@ -10196,7 +10196,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + */ + free(__pyx_v_node.u.string); + +- /* "vidcutter/libs/pympv/mpv.pyx":527 ++ /* "vidcutter/libs/pympv/mpv.pyx":529 + * free(node.u.list.keys) + * free(node.u.list) + * elif node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< +@@ -10207,7 +10207,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + default: break; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":517 ++ /* "vidcutter/libs/pympv/mpv.pyx":519 + * return node + * + * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< +@@ -10228,7 +10228,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":530 ++/* "vidcutter/libs/pympv/mpv.pyx":532 + * free(node.u.string) + * + * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< +@@ -10280,7 +10280,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command(PyObject *__py + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "command") < 0)) __PYX_ERR(0, 530, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "command") < 0)) __PYX_ERR(0, 532, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { + goto __pyx_L5_argtuple_error; +@@ -10291,7 +10291,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command(PyObject *__py + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("command", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 530, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("command", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 532, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_DECREF(__pyx_v_cmdlist); __pyx_v_cmdlist = 0; + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); +@@ -10338,7 +10338,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("command", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":544 ++ /* "vidcutter/libs/pympv/mpv.pyx":546 + * Wraps: mpv_command_node and mpv_command_node_async + * """ + * assert self._ctx # <<<<<<<<<<<<<< +@@ -10349,19 +10349,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 544, __pyx_L1_error) ++ __PYX_ERR(0, 546, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":545 ++ /* "vidcutter/libs/pympv/mpv.pyx":547 + * """ + * assert self._ctx + * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) # <<<<<<<<<<<<<< + * cdef mpv_node noderesult + * cdef int err + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -10375,13 +10375,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_cmdlist) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cmdlist); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_cmdlist, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":549 ++ /* "vidcutter/libs/pympv/mpv.pyx":551 + * cdef int err + * cdef uint64_t data_id + * result = None # <<<<<<<<<<<<<< +@@ -10391,7 +10391,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __Pyx_INCREF(Py_None); + __pyx_v_result = Py_None; + +- /* "vidcutter/libs/pympv/mpv.pyx":550 ++ /* "vidcutter/libs/pympv/mpv.pyx":552 + * cdef uint64_t data_id + * result = None + * try: # <<<<<<<<<<<<<< +@@ -10400,31 +10400,31 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + */ + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":551 ++ /* "vidcutter/libs/pympv/mpv.pyx":553 + * result = None + * try: + * data_id = id(data) # <<<<<<<<<<<<<< + * if not asynchronous: + * with nogil: + */ +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L4_error) ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 551, __pyx_L4_error) ++ __pyx_t_4 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 553, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_data_id = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":552 ++ /* "vidcutter/libs/pympv/mpv.pyx":554 + * try: + * data_id = id(data) + * if not asynchronous: # <<<<<<<<<<<<<< + * with nogil: + * err = mpv_command_node(self._ctx, &node, &noderesult) + */ +- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 552, __pyx_L4_error) ++ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 554, __pyx_L4_error) + __pyx_t_6 = ((!__pyx_t_5) != 0); + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":553 ++ /* "vidcutter/libs/pympv/mpv.pyx":555 + * data_id = id(data) + * if not asynchronous: + * with nogil: # <<<<<<<<<<<<<< +@@ -10439,7 +10439,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":554 ++ /* "vidcutter/libs/pympv/mpv.pyx":556 + * if not asynchronous: + * with nogil: + * err = mpv_command_node(self._ctx, &node, &noderesult) # <<<<<<<<<<<<<< +@@ -10449,7 +10449,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_v_err = mpv_command_node(__pyx_v_self->_ctx, (&__pyx_v_node), (&__pyx_v_noderesult)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":553 ++ /* "vidcutter/libs/pympv/mpv.pyx":555 + * data_id = id(data) + * if not asynchronous: + * with nogil: # <<<<<<<<<<<<<< +@@ -10468,7 +10468,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":555 ++ /* "vidcutter/libs/pympv/mpv.pyx":557 + * with nogil: + * err = mpv_command_node(self._ctx, &node, &noderesult) + * try: # <<<<<<<<<<<<<< +@@ -10477,7 +10477,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + */ + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":556 ++ /* "vidcutter/libs/pympv/mpv.pyx":558 + * err = mpv_command_node(self._ctx, &node, &noderesult) + * try: + * result = _convert_node_value(noderesult) if err >= 0 else None # <<<<<<<<<<<<<< +@@ -10485,7 +10485,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + * with nogil: + */ + if (((__pyx_v_err >= 0) != 0)) { +- __pyx_t_2 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_noderesult); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L11_error) ++ __pyx_t_2 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_noderesult); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 558, __pyx_L11_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __pyx_t_2; + __pyx_t_2 = 0; +@@ -10497,7 +10497,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_t_1 = 0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":558 ++ /* "vidcutter/libs/pympv/mpv.pyx":560 + * result = _convert_node_value(noderesult) if err >= 0 else None + * finally: + * with nogil: # <<<<<<<<<<<<<< +@@ -10514,7 +10514,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":559 ++ /* "vidcutter/libs/pympv/mpv.pyx":561 + * finally: + * with nogil: + * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< +@@ -10524,7 +10524,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + mpv_free_node_contents((&__pyx_v_noderesult)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":558 ++ /* "vidcutter/libs/pympv/mpv.pyx":560 + * result = _convert_node_value(noderesult) if err >= 0 else None + * finally: + * with nogil: # <<<<<<<<<<<<<< +@@ -10570,7 +10570,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":559 ++ /* "vidcutter/libs/pympv/mpv.pyx":561 + * finally: + * with nogil: + * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< +@@ -10580,7 +10580,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + mpv_free_node_contents((&__pyx_v_noderesult)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":558 ++ /* "vidcutter/libs/pympv/mpv.pyx":560 + * result = _convert_node_value(noderesult) if err >= 0 else None + * finally: + * with nogil: # <<<<<<<<<<<<<< +@@ -10616,7 +10616,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_L12:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":552 ++ /* "vidcutter/libs/pympv/mpv.pyx":554 + * try: + * data_id = id(data) + * if not asynchronous: # <<<<<<<<<<<<<< +@@ -10626,7 +10626,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + goto __pyx_L6; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":561 ++ /* "vidcutter/libs/pympv/mpv.pyx":563 + * mpv_free_node_contents(&noderesult) + * else: + * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< +@@ -10634,9 +10634,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) + */ + /*else*/ { +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 563, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_16 = NULL; + __pyx_t_8 = 0; +@@ -10653,7 +10653,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +@@ -10662,14 +10662,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { +- __pyx_t_17 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __pyx_t_17 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 563, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_17); + if (__pyx_t_16) { + __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL; +@@ -10680,7 +10680,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_8, Py_None); + __pyx_t_3 = 0; +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + } +@@ -10688,7 +10688,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_v_userdatas = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":562 ++ /* "vidcutter/libs/pympv/mpv.pyx":564 + * else: + * userdatas = self.reply_userdata.get(data_id, None) + * if userdatas is None: # <<<<<<<<<<<<<< +@@ -10699,14 +10699,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_t_5 = (__pyx_t_6 != 0); + if (__pyx_t_5) { + +- /* "vidcutter/libs/pympv/mpv.pyx":563 ++ /* "vidcutter/libs/pympv/mpv.pyx":565 + * userdatas = self.reply_userdata.get(data_id, None) + * if userdatas is None: + * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< + * userdatas.add() + * with nogil: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L4_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_17 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -10720,15 +10720,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + } + __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_17, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 563, __pyx_L4_error) ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 565, __pyx_L4_error) + __Pyx_INCREF(__pyx_t_1); + __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":562 ++ /* "vidcutter/libs/pympv/mpv.pyx":564 + * else: + * userdatas = self.reply_userdata.get(data_id, None) + * if userdatas is None: # <<<<<<<<<<<<<< +@@ -10737,14 +10737,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":564 ++ /* "vidcutter/libs/pympv/mpv.pyx":566 + * if userdatas is None: + * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) + * userdatas.add() # <<<<<<<<<<<<<< + * with nogil: + * err = mpv_command_node_async(self._ctx, data_id, &node) + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L4_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 566, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_17 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -10758,12 +10758,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + } + __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L4_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":565 ++ /* "vidcutter/libs/pympv/mpv.pyx":567 + * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) + * userdatas.add() + * with nogil: # <<<<<<<<<<<<<< +@@ -10778,7 +10778,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":566 ++ /* "vidcutter/libs/pympv/mpv.pyx":568 + * userdatas.add() + * with nogil: + * err = mpv_command_node_async(self._ctx, data_id, &node) # <<<<<<<<<<<<<< +@@ -10788,7 +10788,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_v_err = mpv_command_node_async(__pyx_v_self->_ctx, __pyx_v_data_id, (&__pyx_v_node)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":565 ++ /* "vidcutter/libs/pympv/mpv.pyx":567 + * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) + * userdatas.add() + * with nogil: # <<<<<<<<<<<<<< +@@ -10810,7 +10810,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_L6:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":568 ++ /* "vidcutter/libs/pympv/mpv.pyx":570 + * err = mpv_command_node_async(self._ctx, data_id, &node) + * finally: + * self._free_native_value(node) # <<<<<<<<<<<<<< +@@ -10819,7 +10819,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + */ + /*finally:*/ { + /*normal exit:*/{ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L5; +@@ -10844,7 +10844,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __Pyx_XGOTREF(__pyx_t_10); + __pyx_t_8 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_18 = __pyx_filename; + { +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L26_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } +@@ -10877,7 +10877,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_L5:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":569 ++ /* "vidcutter/libs/pympv/mpv.pyx":571 + * finally: + * self._free_native_value(node) + * if err < 0: # <<<<<<<<<<<<<< +@@ -10887,16 +10887,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_t_5 = ((__pyx_v_err < 0) != 0); + if (unlikely(__pyx_t_5)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":570 ++ /* "vidcutter/libs/pympv/mpv.pyx":572 + * self._free_native_value(node) + * if err < 0: + * raise MPVError(err) # <<<<<<<<<<<<<< + * return result + * + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 570, __pyx_L1_error) ++ __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 572, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -10911,14 +10911,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_17) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 570, __pyx_L1_error) ++ __PYX_ERR(0, 572, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":569 ++ /* "vidcutter/libs/pympv/mpv.pyx":571 + * finally: + * self._free_native_value(node) + * if err < 0: # <<<<<<<<<<<<<< +@@ -10927,7 +10927,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":571 ++ /* "vidcutter/libs/pympv/mpv.pyx":573 + * if err < 0: + * raise MPVError(err) + * return result # <<<<<<<<<<<<<< +@@ -10939,7 +10939,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + __pyx_r = __pyx_v_result; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":530 ++ /* "vidcutter/libs/pympv/mpv.pyx":532 + * free(node.u.string) + * + * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< +@@ -10964,7 +10964,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":574 ++/* "vidcutter/libs/pympv/mpv.pyx":576 + * + * @_errors + * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< +@@ -11012,7 +11012,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async(Py + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_property_async") < 0)) __PYX_ERR(0, 574, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_property_async") < 0)) __PYX_ERR(0, 576, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -11028,7 +11028,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async(Py + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("get_property_async", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 574, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("get_property_async", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 576, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -11064,7 +11064,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + __Pyx_RefNannySetupContext("get_property_async", 0); + __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":583 ++ /* "vidcutter/libs/pympv/mpv.pyx":585 + * data: Value to be passed into the reply_userdata of the response event. + * Wraps: mpv_get_property_async""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -11075,19 +11075,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 583, __pyx_L1_error) ++ __PYX_ERR(0, 585, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":584 ++ /* "vidcutter/libs/pympv/mpv.pyx":586 + * Wraps: mpv_get_property_async""" + * assert self._ctx + * prop = _strenc(prop) # <<<<<<<<<<<<<< + * cdef uint64_t id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -11101,32 +11101,32 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":585 ++ /* "vidcutter/libs/pympv/mpv.pyx":587 + * assert self._ctx + * prop = _strenc(prop) + * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is None: + */ +- __pyx_t_4 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 585, __pyx_L1_error) ++ __pyx_t_4 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 587, __pyx_L1_error) + __pyx_v_id_data = ((uint64_t)__pyx_t_4); + +- /* "vidcutter/libs/pympv/mpv.pyx":586 ++ /* "vidcutter/libs/pympv/mpv.pyx":588 + * prop = _strenc(prop) + * cdef uint64_t id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< + * if userdatas is None: + * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 588, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; +@@ -11143,7 +11143,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +@@ -11152,14 +11152,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { +- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 588, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; +@@ -11170,7 +11170,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); + __pyx_t_3 = 0; +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } +@@ -11178,7 +11178,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + __pyx_v_userdatas = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":587 ++ /* "vidcutter/libs/pympv/mpv.pyx":589 + * cdef uint64_t id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is None: # <<<<<<<<<<<<<< +@@ -11189,14 +11189,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + __pyx_t_9 = (__pyx_t_8 != 0); + if (__pyx_t_9) { + +- /* "vidcutter/libs/pympv/mpv.pyx":588 ++ /* "vidcutter/libs/pympv/mpv.pyx":590 + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is None: + * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< + * userdatas.add() + * cdef const char* prop_c = prop + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 590, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -11210,15 +11210,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + } + __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 588, __pyx_L1_error) ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 590, __pyx_L1_error) + __Pyx_INCREF(__pyx_t_1); + __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":587 ++ /* "vidcutter/libs/pympv/mpv.pyx":589 + * cdef uint64_t id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is None: # <<<<<<<<<<<<<< +@@ -11227,14 +11227,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":589 ++ /* "vidcutter/libs/pympv/mpv.pyx":591 + * if userdatas is None: + * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) + * userdatas.add() # <<<<<<<<<<<<<< + * cdef const char* prop_c = prop + * with nogil: + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 589, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 591, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -11248,22 +11248,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + } + __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":590 ++ /* "vidcutter/libs/pympv/mpv.pyx":592 + * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) + * userdatas.add() + * cdef const char* prop_c = prop # <<<<<<<<<<<<<< + * with nogil: + * err = mpv_get_property_async( + */ +- __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L1_error) ++ __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 592, __pyx_L1_error) + __pyx_v_prop_c = __pyx_t_10; + +- /* "vidcutter/libs/pympv/mpv.pyx":591 ++ /* "vidcutter/libs/pympv/mpv.pyx":593 + * userdatas.add() + * cdef const char* prop_c = prop + * with nogil: # <<<<<<<<<<<<<< +@@ -11278,7 +11278,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":592 ++ /* "vidcutter/libs/pympv/mpv.pyx":594 + * cdef const char* prop_c = prop + * with nogil: + * err = mpv_get_property_async( # <<<<<<<<<<<<<< +@@ -11288,7 +11288,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + __pyx_v_err = mpv_get_property_async(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_prop_c, MPV_FORMAT_NODE); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":591 ++ /* "vidcutter/libs/pympv/mpv.pyx":593 + * userdatas.add() + * cdef const char* prop_c = prop + * with nogil: # <<<<<<<<<<<<<< +@@ -11307,7 +11307,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":598 ++ /* "vidcutter/libs/pympv/mpv.pyx":600 + * MPV_FORMAT_NODE, + * ) + * return err # <<<<<<<<<<<<<< +@@ -11315,13 +11315,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + * def try_get_property_async(self, prop, data=None, default=None): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":574 ++ /* "vidcutter/libs/pympv/mpv.pyx":576 + * + * @_errors + * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< +@@ -11346,7 +11346,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":600 ++/* "vidcutter/libs/pympv/mpv.pyx":602 + * return err + * + * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< +@@ -11403,7 +11403,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_asyn + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property_async") < 0)) __PYX_ERR(0, 600, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property_async") < 0)) __PYX_ERR(0, 602, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -11422,7 +11422,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_asyn + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("try_get_property_async", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 600, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("try_get_property_async", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 602, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -11451,7 +11451,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("try_get_property_async", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":601 ++ /* "vidcutter/libs/pympv/mpv.pyx":603 + * + * def try_get_property_async(self, prop, data=None, default=None): + * try: # <<<<<<<<<<<<<< +@@ -11467,7 +11467,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":602 ++ /* "vidcutter/libs/pympv/mpv.pyx":604 + * def try_get_property_async(self, prop, data=None, default=None): + * try: + * return self.get_property_async(prop, data=data) # <<<<<<<<<<<<<< +@@ -11475,17 +11475,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + * return default + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L3_error) ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 604, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 602, __pyx_L3_error) ++ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 604, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v_prop); + __Pyx_GIVEREF(__pyx_v_prop); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_prop); +- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 602, __pyx_L3_error) ++ __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 604, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 602, __pyx_L3_error) +- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 602, __pyx_L3_error) ++ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 604, __pyx_L3_error) ++ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 604, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +@@ -11494,7 +11494,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + __pyx_t_7 = 0; + goto __pyx_L7_try_return; + +- /* "vidcutter/libs/pympv/mpv.pyx":601 ++ /* "vidcutter/libs/pympv/mpv.pyx":603 + * + * def try_get_property_async(self, prop, data=None, default=None): + * try: # <<<<<<<<<<<<<< +@@ -11508,7 +11508,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":603 ++ /* "vidcutter/libs/pympv/mpv.pyx":605 + * try: + * return self.get_property_async(prop, data=data) + * except MPVError: # <<<<<<<<<<<<<< +@@ -11516,7 +11516,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + * + */ + __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L5_except_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 605, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -11524,12 +11524,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; + if (__pyx_t_8) { + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); +- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 603, __pyx_L5_except_error) ++ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 605, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + +- /* "vidcutter/libs/pympv/mpv.pyx":604 ++ /* "vidcutter/libs/pympv/mpv.pyx":606 + * return self.get_property_async(prop, data=data) + * except MPVError: + * return default # <<<<<<<<<<<<<< +@@ -11547,7 +11547,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + +- /* "vidcutter/libs/pympv/mpv.pyx":601 ++ /* "vidcutter/libs/pympv/mpv.pyx":603 + * + * def try_get_property_async(self, prop, data=None, default=None): + * try: # <<<<<<<<<<<<<< +@@ -11573,7 +11573,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + goto __pyx_L0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":600 ++ /* "vidcutter/libs/pympv/mpv.pyx":602 + * return err + * + * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< +@@ -11595,7 +11595,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":606 ++/* "vidcutter/libs/pympv/mpv.pyx":608 + * return default + * + * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< +@@ -11642,7 +11642,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property(PyOb + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property") < 0)) __PYX_ERR(0, 606, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property") < 0)) __PYX_ERR(0, 608, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -11658,7 +11658,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property(PyOb + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("try_get_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 606, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("try_get_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 608, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -11687,7 +11687,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("try_get_property", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":607 ++ /* "vidcutter/libs/pympv/mpv.pyx":609 + * + * def try_get_property(self, prop, default=None): + * try: # <<<<<<<<<<<<<< +@@ -11703,7 +11703,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":608 ++ /* "vidcutter/libs/pympv/mpv.pyx":610 + * def try_get_property(self, prop, default=None): + * try: + * return self.get_property(prop) # <<<<<<<<<<<<<< +@@ -11711,7 +11711,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + * return default + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L3_error) ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 610, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { +@@ -11725,14 +11725,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + } + __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L3_error) ++ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L7_try_return; + +- /* "vidcutter/libs/pympv/mpv.pyx":607 ++ /* "vidcutter/libs/pympv/mpv.pyx":609 + * + * def try_get_property(self, prop, default=None): + * try: # <<<<<<<<<<<<<< +@@ -11745,7 +11745,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":609 ++ /* "vidcutter/libs/pympv/mpv.pyx":611 + * try: + * return self.get_property(prop) + * except MPVError: # <<<<<<<<<<<<<< +@@ -11753,7 +11753,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + * + */ + __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 609, __pyx_L5_except_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 611, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +@@ -11761,12 +11761,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; + if (__pyx_t_8) { + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); +- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 609, __pyx_L5_except_error) ++ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 611, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_4); + +- /* "vidcutter/libs/pympv/mpv.pyx":610 ++ /* "vidcutter/libs/pympv/mpv.pyx":612 + * return self.get_property(prop) + * except MPVError: + * return default # <<<<<<<<<<<<<< +@@ -11784,7 +11784,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + +- /* "vidcutter/libs/pympv/mpv.pyx":607 ++ /* "vidcutter/libs/pympv/mpv.pyx":609 + * + * def try_get_property(self, prop, default=None): + * try: # <<<<<<<<<<<<<< +@@ -11810,7 +11810,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + goto __pyx_L0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":606 ++ /* "vidcutter/libs/pympv/mpv.pyx":608 + * return default + * + * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< +@@ -11832,7 +11832,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":612 ++/* "vidcutter/libs/pympv/mpv.pyx":614 + * return default + * + * def get_property(self, prop): # <<<<<<<<<<<<<< +@@ -11882,7 +11882,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + __Pyx_RefNannySetupContext("get_property", 0); + __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":614 ++ /* "vidcutter/libs/pympv/mpv.pyx":616 + * def get_property(self, prop): + * """Wraps: mpv_get_property""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -11893,19 +11893,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 614, __pyx_L1_error) ++ __PYX_ERR(0, 616, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":616 ++ /* "vidcutter/libs/pympv/mpv.pyx":618 + * assert self._ctx + * cdef mpv_node result + * prop = _strenc(prop) # <<<<<<<<<<<<<< + * cdef const char* prop_c = prop + * cdef int err + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 618, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -11919,23 +11919,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 618, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":617 ++ /* "vidcutter/libs/pympv/mpv.pyx":619 + * cdef mpv_node result + * prop = _strenc(prop) + * cdef const char* prop_c = prop # <<<<<<<<<<<<<< + * cdef int err + * with nogil: + */ +- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 617, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_v_prop_c = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":619 ++ /* "vidcutter/libs/pympv/mpv.pyx":621 + * cdef const char* prop_c = prop + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -11950,7 +11950,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":620 ++ /* "vidcutter/libs/pympv/mpv.pyx":622 + * cdef int err + * with nogil: + * err = mpv_get_property( # <<<<<<<<<<<<<< +@@ -11960,7 +11960,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + __pyx_v_err = mpv_get_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_result)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":619 ++ /* "vidcutter/libs/pympv/mpv.pyx":621 + * cdef const char* prop_c = prop + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -11979,7 +11979,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":626 ++ /* "vidcutter/libs/pympv/mpv.pyx":628 + * &result, + * ) + * if err < 0: # <<<<<<<<<<<<<< +@@ -11989,16 +11989,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + __pyx_t_5 = ((__pyx_v_err < 0) != 0); + if (unlikely(__pyx_t_5)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":627 ++ /* "vidcutter/libs/pympv/mpv.pyx":629 + * ) + * if err < 0: + * raise MPVError(err) # <<<<<<<<<<<<<< + * try: + * v = _convert_node_value(result) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 627, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 629, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -12013,14 +12013,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 627, __pyx_L1_error) ++ __PYX_ERR(0, 629, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":626 ++ /* "vidcutter/libs/pympv/mpv.pyx":628 + * &result, + * ) + * if err < 0: # <<<<<<<<<<<<<< +@@ -12029,7 +12029,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":628 ++ /* "vidcutter/libs/pympv/mpv.pyx":630 + * if err < 0: + * raise MPVError(err) + * try: # <<<<<<<<<<<<<< +@@ -12038,20 +12038,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + */ + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":629 ++ /* "vidcutter/libs/pympv/mpv.pyx":631 + * raise MPVError(err) + * try: + * v = _convert_node_value(result) # <<<<<<<<<<<<<< + * finally: + * with nogil: + */ +- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L8_error) ++ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L8_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_v = __pyx_t_1; + __pyx_t_1 = 0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":631 ++ /* "vidcutter/libs/pympv/mpv.pyx":633 + * v = _convert_node_value(result) + * finally: + * with nogil: # <<<<<<<<<<<<<< +@@ -12068,7 +12068,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":632 ++ /* "vidcutter/libs/pympv/mpv.pyx":634 + * finally: + * with nogil: + * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< +@@ -12078,7 +12078,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + mpv_free_node_contents((&__pyx_v_result)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":631 ++ /* "vidcutter/libs/pympv/mpv.pyx":633 + * v = _convert_node_value(result) + * finally: + * with nogil: # <<<<<<<<<<<<<< +@@ -12125,7 +12125,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":632 ++ /* "vidcutter/libs/pympv/mpv.pyx":634 + * finally: + * with nogil: + * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< +@@ -12135,7 +12135,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + mpv_free_node_contents((&__pyx_v_result)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":631 ++ /* "vidcutter/libs/pympv/mpv.pyx":633 + * v = _convert_node_value(result) + * finally: + * with nogil: # <<<<<<<<<<<<<< +@@ -12171,7 +12171,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + __pyx_L9:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":633 ++ /* "vidcutter/libs/pympv/mpv.pyx":635 + * with nogil: + * mpv_free_node_contents(&result) + * return v # <<<<<<<<<<<<<< +@@ -12183,7 +12183,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + __pyx_r = __pyx_v_v; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":612 ++ /* "vidcutter/libs/pympv/mpv.pyx":614 + * return default + * + * def get_property(self, prop): # <<<<<<<<<<<<<< +@@ -12207,7 +12207,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":636 ++/* "vidcutter/libs/pympv/mpv.pyx":638 + * + * @_errors + * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< +@@ -12275,7 +12275,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property(PyObject + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_property") < 0)) __PYX_ERR(0, 636, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_property") < 0)) __PYX_ERR(0, 638, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -12297,7 +12297,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property(PyObject + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("set_property", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 636, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("set_property", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 638, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -12344,7 +12344,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + __Pyx_RefNannySetupContext("set_property", 0); + __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":638 ++ /* "vidcutter/libs/pympv/mpv.pyx":640 + * def set_property(self, prop, value=True, asynchronous=False, data=None): + * """Wraps: mpv_set_property and mpv_set_property_async""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -12355,19 +12355,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 638, __pyx_L1_error) ++ __PYX_ERR(0, 640, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":639 ++ /* "vidcutter/libs/pympv/mpv.pyx":641 + * """Wraps: mpv_set_property and mpv_set_property_async""" + * assert self._ctx + * prop = _strenc(prop) # <<<<<<<<<<<<<< + * cdef mpv_format format = self._format_for(value) + * cdef mpv_node v = self._prep_native_value(value, format) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -12381,20 +12381,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":640 ++ /* "vidcutter/libs/pympv/mpv.pyx":642 + * assert self._ctx + * prop = _strenc(prop) + * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< + * cdef mpv_node v = self._prep_native_value(value, format) + * cdef int err + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -12408,26 +12408,26 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 642, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error) ++ __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 642, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_format = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":641 ++ /* "vidcutter/libs/pympv/mpv.pyx":643 + * prop = _strenc(prop) + * cdef mpv_format format = self._format_for(value) + * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< + * cdef int err + * cdef uint64_t data_id + */ +- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":645 ++ /* "vidcutter/libs/pympv/mpv.pyx":647 + * cdef uint64_t data_id + * cdef const char* prop_c + * try: # <<<<<<<<<<<<<< +@@ -12436,28 +12436,28 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + */ + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":646 ++ /* "vidcutter/libs/pympv/mpv.pyx":648 + * cdef const char* prop_c + * try: + * prop_c = prop # <<<<<<<<<<<<<< + * if not asynchronous: + * with nogil: + */ +- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 646, __pyx_L4_error) ++ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 648, __pyx_L4_error) + __pyx_v_prop_c = __pyx_t_5; + +- /* "vidcutter/libs/pympv/mpv.pyx":647 ++ /* "vidcutter/libs/pympv/mpv.pyx":649 + * try: + * prop_c = prop + * if not asynchronous: # <<<<<<<<<<<<<< + * with nogil: + * err = mpv_set_property( + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 647, __pyx_L4_error) ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 649, __pyx_L4_error) + __pyx_t_7 = ((!__pyx_t_6) != 0); + if (__pyx_t_7) { + +- /* "vidcutter/libs/pympv/mpv.pyx":648 ++ /* "vidcutter/libs/pympv/mpv.pyx":650 + * prop_c = prop + * if not asynchronous: + * with nogil: # <<<<<<<<<<<<<< +@@ -12472,7 +12472,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":649 ++ /* "vidcutter/libs/pympv/mpv.pyx":651 + * if not asynchronous: + * with nogil: + * err = mpv_set_property( # <<<<<<<<<<<<<< +@@ -12482,7 +12482,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + __pyx_v_err = mpv_set_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":648 ++ /* "vidcutter/libs/pympv/mpv.pyx":650 + * prop_c = prop + * if not asynchronous: + * with nogil: # <<<<<<<<<<<<<< +@@ -12501,7 +12501,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":655 ++ /* "vidcutter/libs/pympv/mpv.pyx":657 + * &v + * ) + * return err # <<<<<<<<<<<<<< +@@ -12509,13 +12509,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + * userdatas = self.reply_userdata.get(data_id, None) + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L4_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L3_return; + +- /* "vidcutter/libs/pympv/mpv.pyx":647 ++ /* "vidcutter/libs/pympv/mpv.pyx":649 + * try: + * prop_c = prop + * if not asynchronous: # <<<<<<<<<<<<<< +@@ -12524,26 +12524,26 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":656 ++ /* "vidcutter/libs/pympv/mpv.pyx":658 + * ) + * return err + * data_id = hash(data) # <<<<<<<<<<<<<< + * userdatas = self.reply_userdata.get(data_id, None) + * if userdatas is None: + */ +- __pyx_t_8 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_8 == ((Py_hash_t)-1))) __PYX_ERR(0, 656, __pyx_L4_error) ++ __pyx_t_8 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_8 == ((Py_hash_t)-1))) __PYX_ERR(0, 658, __pyx_L4_error) + __pyx_v_data_id = ((uint64_t)__pyx_t_8); + +- /* "vidcutter/libs/pympv/mpv.pyx":657 ++ /* "vidcutter/libs/pympv/mpv.pyx":659 + * return err + * data_id = hash(data) + * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< + * if userdatas is None: + * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = NULL; + __pyx_t_10 = 0; +@@ -12560,7 +12560,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +@@ -12569,14 +12569,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; +- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { +- __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 659, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_11); + if (__pyx_t_9) { + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; +@@ -12587,7 +12587,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, Py_None); + __pyx_t_3 = 0; +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } +@@ -12595,7 +12595,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + __pyx_v_userdatas = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":658 ++ /* "vidcutter/libs/pympv/mpv.pyx":660 + * data_id = hash(data) + * userdatas = self.reply_userdata.get(data_id, None) + * if userdatas is None: # <<<<<<<<<<<<<< +@@ -12606,14 +12606,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + __pyx_t_6 = (__pyx_t_7 != 0); + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":659 ++ /* "vidcutter/libs/pympv/mpv.pyx":661 + * userdatas = self.reply_userdata.get(data_id, None) + * if userdatas is None: + * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< + * userdatas.add() + * with nogil: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L4_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_11 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -12627,15 +12627,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + } + __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_11, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 659, __pyx_L4_error) ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 661, __pyx_L4_error) + __Pyx_INCREF(__pyx_t_1); + __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":658 ++ /* "vidcutter/libs/pympv/mpv.pyx":660 + * data_id = hash(data) + * userdatas = self.reply_userdata.get(data_id, None) + * if userdatas is None: # <<<<<<<<<<<<<< +@@ -12644,14 +12644,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":660 ++ /* "vidcutter/libs/pympv/mpv.pyx":662 + * if userdatas is None: + * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) + * userdatas.add() # <<<<<<<<<<<<<< + * with nogil: + * err = mpv_set_property_async( + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L4_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 662, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_11 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -12665,12 +12665,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + } + __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L4_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":661 ++ /* "vidcutter/libs/pympv/mpv.pyx":663 + * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) + * userdatas.add() + * with nogil: # <<<<<<<<<<<<<< +@@ -12685,7 +12685,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":662 ++ /* "vidcutter/libs/pympv/mpv.pyx":664 + * userdatas.add() + * with nogil: + * err = mpv_set_property_async( # <<<<<<<<<<<<<< +@@ -12695,7 +12695,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + __pyx_v_err = mpv_set_property_async(__pyx_v_self->_ctx, __pyx_v_data_id, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":661 ++ /* "vidcutter/libs/pympv/mpv.pyx":663 + * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) + * userdatas.add() + * with nogil: # <<<<<<<<<<<<<< +@@ -12715,7 +12715,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":670 ++ /* "vidcutter/libs/pympv/mpv.pyx":672 + * ) + * finally: + * self._free_native_value(v) # <<<<<<<<<<<<<< +@@ -12724,7 +12724,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + */ + /*finally:*/ { + /*normal exit:*/{ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L5; +@@ -12749,7 +12749,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + __Pyx_XGOTREF(__pyx_t_19); + __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; + { +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L15_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L15_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } +@@ -12782,7 +12782,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + __pyx_L3_return: { + __pyx_t_19 = __pyx_r; + __pyx_r = 0; +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_19; +@@ -12792,7 +12792,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + __pyx_L5:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":671 ++ /* "vidcutter/libs/pympv/mpv.pyx":673 + * finally: + * self._free_native_value(v) + * return err # <<<<<<<<<<<<<< +@@ -12800,13 +12800,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":636 ++ /* "vidcutter/libs/pympv/mpv.pyx":638 + * + * @_errors + * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< +@@ -12831,7 +12831,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":674 ++/* "vidcutter/libs/pympv/mpv.pyx":676 + * + * @_errors + * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< +@@ -12879,7 +12879,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option(PyObject * + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_option") < 0)) __PYX_ERR(0, 674, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_option") < 0)) __PYX_ERR(0, 676, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -12895,7 +12895,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option(PyObject * + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("set_option", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 674, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("set_option", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 676, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -12935,7 +12935,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + __Pyx_RefNannySetupContext("set_option", 0); + __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":676 ++ /* "vidcutter/libs/pympv/mpv.pyx":678 + * def set_option(self, prop, value=True): + * """Wraps: mpv_set_option""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -12946,19 +12946,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 676, __pyx_L1_error) ++ __PYX_ERR(0, 678, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":677 ++ /* "vidcutter/libs/pympv/mpv.pyx":679 + * """Wraps: mpv_set_option""" + * assert self._ctx + * prop = _strenc(prop) # <<<<<<<<<<<<<< + * cdef mpv_format format = self._format_for(value) + * cdef mpv_node v = self._prep_native_value(value, format) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { +@@ -12972,20 +12972,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":678 ++ /* "vidcutter/libs/pympv/mpv.pyx":680 + * assert self._ctx + * prop = _strenc(prop) + * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< + * cdef mpv_node v = self._prep_native_value(value, format) + * cdef int err + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -12999,26 +12999,26 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 678, __pyx_L1_error) ++ __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 680, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_format = __pyx_t_4; + +- /* "vidcutter/libs/pympv/mpv.pyx":679 ++ /* "vidcutter/libs/pympv/mpv.pyx":681 + * prop = _strenc(prop) + * cdef mpv_format format = self._format_for(value) + * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< + * cdef int err + * cdef const char* prop_c + */ +- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":682 ++ /* "vidcutter/libs/pympv/mpv.pyx":684 + * cdef int err + * cdef const char* prop_c + * try: # <<<<<<<<<<<<<< +@@ -13027,17 +13027,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + */ + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":683 ++ /* "vidcutter/libs/pympv/mpv.pyx":685 + * cdef const char* prop_c + * try: + * prop_c = prop # <<<<<<<<<<<<<< + * with nogil: + * err = mpv_set_option( + */ +- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 683, __pyx_L4_error) ++ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 685, __pyx_L4_error) + __pyx_v_prop_c = __pyx_t_5; + +- /* "vidcutter/libs/pympv/mpv.pyx":684 ++ /* "vidcutter/libs/pympv/mpv.pyx":686 + * try: + * prop_c = prop + * with nogil: # <<<<<<<<<<<<<< +@@ -13052,7 +13052,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":685 ++ /* "vidcutter/libs/pympv/mpv.pyx":687 + * prop_c = prop + * with nogil: + * err = mpv_set_option( # <<<<<<<<<<<<<< +@@ -13062,7 +13062,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + __pyx_v_err = mpv_set_option(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":684 ++ /* "vidcutter/libs/pympv/mpv.pyx":686 + * try: + * prop_c = prop + * with nogil: # <<<<<<<<<<<<<< +@@ -13082,7 +13082,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":692 ++ /* "vidcutter/libs/pympv/mpv.pyx":694 + * ) + * finally: + * self._free_native_value(v) # <<<<<<<<<<<<<< +@@ -13091,7 +13091,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + */ + /*finally:*/ { + /*normal exit:*/{ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L5; +@@ -13114,7 +13114,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + __Pyx_XGOTREF(__pyx_t_14); + __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; + { +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L10_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } +@@ -13147,7 +13147,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + __pyx_L5:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":693 ++ /* "vidcutter/libs/pympv/mpv.pyx":695 + * finally: + * self._free_native_value(v) + * return err # <<<<<<<<<<<<<< +@@ -13155,13 +13155,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":674 ++ /* "vidcutter/libs/pympv/mpv.pyx":676 + * + * @_errors + * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< +@@ -13183,7 +13183,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":696 ++/* "vidcutter/libs/pympv/mpv.pyx":698 + * + * @_errors + * def initialize(self): # <<<<<<<<<<<<<< +@@ -13215,7 +13215,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("initialize", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":698 ++ /* "vidcutter/libs/pympv/mpv.pyx":700 + * def initialize(self): + * """Wraps: mpv_initialize""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -13226,12 +13226,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 698, __pyx_L1_error) ++ __PYX_ERR(0, 700, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":700 ++ /* "vidcutter/libs/pympv/mpv.pyx":702 + * assert self._ctx + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -13246,7 +13246,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":701 ++ /* "vidcutter/libs/pympv/mpv.pyx":703 + * cdef int err + * with nogil: + * err = mpv_initialize(self._ctx) # <<<<<<<<<<<<<< +@@ -13256,7 +13256,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p + __pyx_v_err = mpv_initialize(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":700 ++ /* "vidcutter/libs/pympv/mpv.pyx":702 + * assert self._ctx + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -13275,7 +13275,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":702 ++ /* "vidcutter/libs/pympv/mpv.pyx":704 + * with nogil: + * err = mpv_initialize(self._ctx) + * return err # <<<<<<<<<<<<<< +@@ -13283,13 +13283,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p + * def wait_event(self, timeout=None): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":696 ++ /* "vidcutter/libs/pympv/mpv.pyx":698 + * + * @_errors + * def initialize(self): # <<<<<<<<<<<<<< +@@ -13308,7 +13308,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":704 ++/* "vidcutter/libs/pympv/mpv.pyx":706 + * return err + * + * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< +@@ -13349,7 +13349,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event(PyObject * + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_event") < 0)) __PYX_ERR(0, 704, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_event") < 0)) __PYX_ERR(0, 706, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -13363,7 +13363,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event(PyObject * + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("wait_event", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 704, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("wait_event", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 706, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -13391,7 +13391,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("wait_event", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":706 ++ /* "vidcutter/libs/pympv/mpv.pyx":708 + * def wait_event(self, timeout=None): + * """Wraps: mpv_wait_event""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -13402,12 +13402,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 706, __pyx_L1_error) ++ __PYX_ERR(0, 708, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":707 ++ /* "vidcutter/libs/pympv/mpv.pyx":709 + * """Wraps: mpv_wait_event""" + * assert self._ctx + * cdef double timeout_d = timeout if timeout is not None else -1 # <<<<<<<<<<<<<< +@@ -13416,14 +13416,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p + */ + __pyx_t_2 = (__pyx_v_timeout != Py_None); + if ((__pyx_t_2 != 0)) { +- __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_timeout); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 707, __pyx_L1_error) ++ __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_timeout); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 709, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + } else { + __pyx_t_1 = -1.0; + } + __pyx_v_timeout_d = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":709 ++ /* "vidcutter/libs/pympv/mpv.pyx":711 + * cdef double timeout_d = timeout if timeout is not None else -1 + * cdef mpv_event* event + * with nogil: # <<<<<<<<<<<<<< +@@ -13438,7 +13438,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":710 ++ /* "vidcutter/libs/pympv/mpv.pyx":712 + * cdef mpv_event* event + * with nogil: + * event = mpv_wait_event(self._ctx, timeout_d) # <<<<<<<<<<<<<< +@@ -13448,7 +13448,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p + __pyx_v_event = mpv_wait_event(__pyx_v_self->_ctx, __pyx_v_timeout_d); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":709 ++ /* "vidcutter/libs/pympv/mpv.pyx":711 + * cdef double timeout_d = timeout if timeout is not None else -1 + * cdef mpv_event* event + * with nogil: # <<<<<<<<<<<<<< +@@ -13467,7 +13467,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":711 ++ /* "vidcutter/libs/pympv/mpv.pyx":713 + * with nogil: + * event = mpv_wait_event(self._ctx, timeout_d) + * return Event()._init(event, self) # <<<<<<<<<<<<<< +@@ -13475,16 +13475,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p + * def wakeup(self): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 711, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 713, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4), __pyx_v_event, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) ++ __pyx_t_5 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4), __pyx_v_event, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 713, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":704 ++ /* "vidcutter/libs/pympv/mpv.pyx":706 + * return err + * + * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< +@@ -13504,7 +13504,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":713 ++/* "vidcutter/libs/pympv/mpv.pyx":715 + * return Event()._init(event, self) + * + * def wakeup(self): # <<<<<<<<<<<<<< +@@ -13534,7 +13534,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("wakeup", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":715 ++ /* "vidcutter/libs/pympv/mpv.pyx":717 + * def wakeup(self): + * """Wraps: mpv_wakeup""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -13545,12 +13545,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 715, __pyx_L1_error) ++ __PYX_ERR(0, 717, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":716 ++ /* "vidcutter/libs/pympv/mpv.pyx":718 + * """Wraps: mpv_wakeup""" + * assert self._ctx + * with nogil: # <<<<<<<<<<<<<< +@@ -13565,7 +13565,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":717 ++ /* "vidcutter/libs/pympv/mpv.pyx":719 + * assert self._ctx + * with nogil: + * mpv_wakeup(self._ctx) # <<<<<<<<<<<<<< +@@ -13575,7 +13575,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o + mpv_wakeup(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":716 ++ /* "vidcutter/libs/pympv/mpv.pyx":718 + * """Wraps: mpv_wakeup""" + * assert self._ctx + * with nogil: # <<<<<<<<<<<<<< +@@ -13594,7 +13594,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":713 ++ /* "vidcutter/libs/pympv/mpv.pyx":715 + * return Event()._init(event, self) + * + * def wakeup(self): # <<<<<<<<<<<<<< +@@ -13614,7 +13614,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":719 ++/* "vidcutter/libs/pympv/mpv.pyx":721 + * mpv_wakeup(self._ctx) + * + * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< +@@ -13649,7 +13649,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set_wakeup_callback", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":721 ++ /* "vidcutter/libs/pympv/mpv.pyx":723 + * def set_wakeup_callback(self, callback): + * """Wraps: mpv_set_wakeup_callback""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -13660,25 +13660,25 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 721, __pyx_L1_error) ++ __PYX_ERR(0, 723, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":722 ++ /* "vidcutter/libs/pympv/mpv.pyx":724 + * """Wraps: mpv_set_wakeup_callback""" + * assert self._ctx + * cdef uint64_t name = id(self) # <<<<<<<<<<<<<< + * self.callback = callback + * self.callbackthread.set(callback) + */ +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 722, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 724, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_name = ((uint64_t)__pyx_t_2); + +- /* "vidcutter/libs/pympv/mpv.pyx":723 ++ /* "vidcutter/libs/pympv/mpv.pyx":725 + * assert self._ctx + * cdef uint64_t name = id(self) + * self.callback = callback # <<<<<<<<<<<<<< +@@ -13691,14 +13691,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s + __Pyx_DECREF(__pyx_v_self->callback); + __pyx_v_self->callback = __pyx_v_callback; + +- /* "vidcutter/libs/pympv/mpv.pyx":724 ++ /* "vidcutter/libs/pympv/mpv.pyx":726 + * cdef uint64_t name = id(self) + * self.callback = callback + * self.callbackthread.set(callback) # <<<<<<<<<<<<<< + * with nogil: + * mpv_set_wakeup_callback(self._ctx, _c_callback, name) + */ +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 726, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { +@@ -13712,12 +13712,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s + } + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_callback) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":725 ++ /* "vidcutter/libs/pympv/mpv.pyx":727 + * self.callback = callback + * self.callbackthread.set(callback) + * with nogil: # <<<<<<<<<<<<<< +@@ -13732,7 +13732,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":726 ++ /* "vidcutter/libs/pympv/mpv.pyx":728 + * self.callbackthread.set(callback) + * with nogil: + * mpv_set_wakeup_callback(self._ctx, _c_callback, name) # <<<<<<<<<<<<<< +@@ -13742,7 +13742,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s + mpv_set_wakeup_callback(__pyx_v_self->_ctx, __pyx_f_9vidcutter_4libs_3mpv__c_callback, ((void *)__pyx_v_name)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":725 ++ /* "vidcutter/libs/pympv/mpv.pyx":727 + * self.callback = callback + * self.callbackthread.set(callback) + * with nogil: # <<<<<<<<<<<<<< +@@ -13761,7 +13761,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":719 ++ /* "vidcutter/libs/pympv/mpv.pyx":721 + * mpv_wakeup(self._ctx) + * + * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< +@@ -13784,7 +13784,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":728 ++/* "vidcutter/libs/pympv/mpv.pyx":730 + * mpv_set_wakeup_callback(self._ctx, _c_callback, name) + * + * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< +@@ -13816,7 +13816,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_wakeup_pipe", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":730 ++ /* "vidcutter/libs/pympv/mpv.pyx":732 + * def get_wakeup_pipe(self): + * """Wraps: mpv_get_wakeup_pipe""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -13827,12 +13827,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 730, __pyx_L1_error) ++ __PYX_ERR(0, 732, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":732 ++ /* "vidcutter/libs/pympv/mpv.pyx":734 + * assert self._ctx + * cdef int pipe + * with nogil: # <<<<<<<<<<<<<< +@@ -13847,7 +13847,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":733 ++ /* "vidcutter/libs/pympv/mpv.pyx":735 + * cdef int pipe + * with nogil: + * pipe = mpv_get_wakeup_pipe(self._ctx) # <<<<<<<<<<<<<< +@@ -13857,7 +13857,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc + __pyx_v_pipe = mpv_get_wakeup_pipe(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":732 ++ /* "vidcutter/libs/pympv/mpv.pyx":734 + * assert self._ctx + * cdef int pipe + * with nogil: # <<<<<<<<<<<<<< +@@ -13876,7 +13876,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":734 ++ /* "vidcutter/libs/pympv/mpv.pyx":736 + * with nogil: + * pipe = mpv_get_wakeup_pipe(self._ctx) + * return pipe # <<<<<<<<<<<<<< +@@ -13884,13 +13884,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc + * def __cinit__(self): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":728 ++ /* "vidcutter/libs/pympv/mpv.pyx":730 + * mpv_set_wakeup_callback(self._ctx, _c_callback, name) + * + * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< +@@ -13909,7 +13909,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":736 ++/* "vidcutter/libs/pympv/mpv.pyx":738 + * return pipe + * + * def __cinit__(self): # <<<<<<<<<<<<<< +@@ -13947,20 +13947,20 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__cinit__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":737 ++ /* "vidcutter/libs/pympv/mpv.pyx":739 + * + * def __cinit__(self): + * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< + * with nogil: + * self._ctx = mpv_create() + */ +- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 737, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 737, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_ctxid = ((uint64_t)__pyx_t_2); + +- /* "vidcutter/libs/pympv/mpv.pyx":738 ++ /* "vidcutter/libs/pympv/mpv.pyx":740 + * def __cinit__(self): + * cdef uint64_t ctxid = id(self) + * with nogil: # <<<<<<<<<<<<<< +@@ -13975,7 +13975,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":739 ++ /* "vidcutter/libs/pympv/mpv.pyx":741 + * cdef uint64_t ctxid = id(self) + * with nogil: + * self._ctx = mpv_create() # <<<<<<<<<<<<<< +@@ -13985,7 +13985,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + __pyx_v_self->_ctx = mpv_create(); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":738 ++ /* "vidcutter/libs/pympv/mpv.pyx":740 + * def __cinit__(self): + * cdef uint64_t ctxid = id(self) + * with nogil: # <<<<<<<<<<<<<< +@@ -14004,7 +14004,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":740 ++ /* "vidcutter/libs/pympv/mpv.pyx":742 + * with nogil: + * self._ctx = mpv_create() + * if not self._ctx: # <<<<<<<<<<<<<< +@@ -14014,14 +14014,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + __pyx_t_3 = ((!(__pyx_v_self->_ctx != 0)) != 0); + if (unlikely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":741 ++ /* "vidcutter/libs/pympv/mpv.pyx":743 + * self._ctx = mpv_create() + * if not self._ctx: + * raise MPVError("Context creation error") # <<<<<<<<<<<<<< + * self.callbackthread = CallbackThread() + * _callbacks[ctxid] = self.callbackthread + */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 741, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 743, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +@@ -14035,14 +14035,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_Context_creation_error) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Context_creation_error); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 741, __pyx_L1_error) ++ __PYX_ERR(0, 743, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":740 ++ /* "vidcutter/libs/pympv/mpv.pyx":742 + * with nogil: + * self._ctx = mpv_create() + * if not self._ctx: # <<<<<<<<<<<<<< +@@ -14051,14 +14051,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":742 ++ /* "vidcutter/libs/pympv/mpv.pyx":744 + * if not self._ctx: + * raise MPVError("Context creation error") + * self.callbackthread = CallbackThread() # <<<<<<<<<<<<<< + * _callbacks[ctxid] = self.callbackthread + * self.reply_userdata = dict() + */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CallbackThread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 742, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CallbackThread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 744, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +@@ -14072,7 +14072,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GIVEREF(__pyx_t_1); +@@ -14081,7 +14081,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + __pyx_v_self->callbackthread = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":743 ++ /* "vidcutter/libs/pympv/mpv.pyx":745 + * raise MPVError("Context creation error") + * self.callbackthread = CallbackThread() + * _callbacks[ctxid] = self.callbackthread # <<<<<<<<<<<<<< +@@ -14090,17 +14090,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + */ + __pyx_t_1 = __pyx_v_self->callbackthread; + __Pyx_INCREF(__pyx_t_1); +- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 743, __pyx_L1_error) ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 745, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":744 ++ /* "vidcutter/libs/pympv/mpv.pyx":746 + * self.callbackthread = CallbackThread() + * _callbacks[ctxid] = self.callbackthread + * self.reply_userdata = dict() # <<<<<<<<<<<<<< + * _reply_userdatas[ctxid] = self.reply_userdata + * self.callbackthread.start() + */ +- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->reply_userdata); +@@ -14108,7 +14108,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + __pyx_v_self->reply_userdata = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":745 ++ /* "vidcutter/libs/pympv/mpv.pyx":747 + * _callbacks[ctxid] = self.callbackthread + * self.reply_userdata = dict() + * _reply_userdatas[ctxid] = self.reply_userdata # <<<<<<<<<<<<<< +@@ -14117,17 +14117,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + */ + __pyx_t_1 = __pyx_v_self->reply_userdata; + __Pyx_INCREF(__pyx_t_1); +- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 745, __pyx_L1_error) ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 747, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":746 ++ /* "vidcutter/libs/pympv/mpv.pyx":748 + * self.reply_userdata = dict() + * _reply_userdatas[ctxid] = self.reply_userdata + * self.callbackthread.start() # <<<<<<<<<<<<<< + * + * @_errors + */ +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 746, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 748, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { +@@ -14141,12 +14141,12 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 748, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":736 ++ /* "vidcutter/libs/pympv/mpv.pyx":738 + * return pipe + * + * def __cinit__(self): # <<<<<<<<<<<<<< +@@ -14168,7 +14168,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":749 ++/* "vidcutter/libs/pympv/mpv.pyx":751 + * + * @_errors + * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< +@@ -14216,7 +14216,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property(PyOb + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "observe_property") < 0)) __PYX_ERR(0, 749, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "observe_property") < 0)) __PYX_ERR(0, 751, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -14232,7 +14232,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property(PyOb + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("observe_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 749, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("observe_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 751, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -14268,7 +14268,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + __Pyx_RefNannySetupContext("observe_property", 0); + __Pyx_INCREF(__pyx_v_prop); + +- /* "vidcutter/libs/pympv/mpv.pyx":751 ++ /* "vidcutter/libs/pympv/mpv.pyx":753 + * def observe_property(self, prop, data=None): + * """Wraps: mpv_observe_property""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -14279,41 +14279,41 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 751, __pyx_L1_error) ++ __PYX_ERR(0, 753, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":752 ++ /* "vidcutter/libs/pympv/mpv.pyx":754 + * """Wraps: mpv_observe_property""" + * assert self._ctx + * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< + * id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) + */ +- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 752, __pyx_L1_error) ++ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 754, __pyx_L1_error) + __pyx_v_id_data = ((uint64_t)__pyx_t_1); + +- /* "vidcutter/libs/pympv/mpv.pyx":753 ++ /* "vidcutter/libs/pympv/mpv.pyx":755 + * assert self._ctx + * cdef uint64_t id_data = hash(data) + * id_data = hash(data) # <<<<<<<<<<<<<< + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is None: + */ +- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 753, __pyx_L1_error) ++ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 755, __pyx_L1_error) + __pyx_v_id_data = ((uint64_t)__pyx_t_1); + +- /* "vidcutter/libs/pympv/mpv.pyx":754 ++ /* "vidcutter/libs/pympv/mpv.pyx":756 + * cdef uint64_t id_data = hash(data) + * id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< + * if userdatas is None: + * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) + */ +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 756, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; +@@ -14330,7 +14330,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; +- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -14339,14 +14339,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; +- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { +- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 756, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; +@@ -14357,7 +14357,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); + __pyx_t_4 = 0; +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } +@@ -14365,7 +14365,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + __pyx_v_userdatas = __pyx_t_2; + __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":755 ++ /* "vidcutter/libs/pympv/mpv.pyx":757 + * id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is None: # <<<<<<<<<<<<<< +@@ -14376,14 +14376,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + __pyx_t_9 = (__pyx_t_8 != 0); + if (__pyx_t_9) { + +- /* "vidcutter/libs/pympv/mpv.pyx":756 ++ /* "vidcutter/libs/pympv/mpv.pyx":758 + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is None: + * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< + * userdatas.observed = True + * prop = _strenc(prop) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +@@ -14397,15 +14397,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + } + __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_2, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 756, __pyx_L1_error) ++ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_2, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 758, __pyx_L1_error) + __Pyx_INCREF(__pyx_t_2); + __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":755 ++ /* "vidcutter/libs/pympv/mpv.pyx":757 + * id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is None: # <<<<<<<<<<<<<< +@@ -14414,23 +14414,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":757 ++ /* "vidcutter/libs/pympv/mpv.pyx":759 + * if userdatas is None: + * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) + * userdatas.observed = True # <<<<<<<<<<<<<< + * prop = _strenc(prop) + * cdef char* propc = prop + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_True) < 0) __PYX_ERR(0, 757, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_True) < 0) __PYX_ERR(0, 759, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":758 ++ /* "vidcutter/libs/pympv/mpv.pyx":760 + * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) + * userdatas.observed = True + * prop = _strenc(prop) # <<<<<<<<<<<<<< + * cdef char* propc = prop + * cdef int err + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strenc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strenc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 760, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +@@ -14444,23 +14444,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + } + __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_prop); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 760, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_2); + __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":759 ++ /* "vidcutter/libs/pympv/mpv.pyx":761 + * userdatas.observed = True + * prop = _strenc(prop) + * cdef char* propc = prop # <<<<<<<<<<<<<< + * cdef int err + * with nogil: + */ +- __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 759, __pyx_L1_error) ++ __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 761, __pyx_L1_error) + __pyx_v_propc = __pyx_t_10; + +- /* "vidcutter/libs/pympv/mpv.pyx":761 ++ /* "vidcutter/libs/pympv/mpv.pyx":763 + * cdef char* propc = prop + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -14475,7 +14475,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":762 ++ /* "vidcutter/libs/pympv/mpv.pyx":764 + * cdef int err + * with nogil: + * err = mpv_observe_property( # <<<<<<<<<<<<<< +@@ -14485,7 +14485,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + __pyx_v_err = mpv_observe_property(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_propc, MPV_FORMAT_NODE); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":761 ++ /* "vidcutter/libs/pympv/mpv.pyx":763 + * cdef char* propc = prop + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -14504,7 +14504,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":768 ++ /* "vidcutter/libs/pympv/mpv.pyx":770 + * MPV_FORMAT_NODE, + * ) + * return err # <<<<<<<<<<<<<< +@@ -14512,13 +14512,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":749 ++ /* "vidcutter/libs/pympv/mpv.pyx":751 + * + * @_errors + * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< +@@ -14543,7 +14543,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":771 ++/* "vidcutter/libs/pympv/mpv.pyx":773 + * + * @_errors + * def unobserve_property(self, data): # <<<<<<<<<<<<<< +@@ -14585,7 +14585,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("unobserve_property", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":773 ++ /* "vidcutter/libs/pympv/mpv.pyx":775 + * def unobserve_property(self, data): + * """Wraps: mpv_unobserve_property""" + * assert self._ctx # <<<<<<<<<<<<<< +@@ -14596,31 +14596,31 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!(__pyx_v_self->_ctx != 0))) { + PyErr_SetNone(PyExc_AssertionError); +- __PYX_ERR(0, 773, __pyx_L1_error) ++ __PYX_ERR(0, 775, __pyx_L1_error) + } + } + #endif + +- /* "vidcutter/libs/pympv/mpv.pyx":774 ++ /* "vidcutter/libs/pympv/mpv.pyx":776 + * """Wraps: mpv_unobserve_property""" + * assert self._ctx + * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is not None: + */ +- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 774, __pyx_L1_error) ++ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 776, __pyx_L1_error) + __pyx_v_id_data = ((uint64_t)__pyx_t_1); + +- /* "vidcutter/libs/pympv/mpv.pyx":775 ++ /* "vidcutter/libs/pympv/mpv.pyx":777 + * assert self._ctx + * cdef uint64_t id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< + * if userdatas is not None: + * userdatas.observed = False + */ +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 777, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 777, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; +@@ -14637,7 +14637,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; +- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +@@ -14646,14 +14646,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; +- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { +- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 777, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; +@@ -14664,7 +14664,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); + __pyx_t_4 = 0; +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } +@@ -14672,7 +14672,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + __pyx_v_userdatas = __pyx_t_2; + __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":776 ++ /* "vidcutter/libs/pympv/mpv.pyx":778 + * cdef uint64_t id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is not None: # <<<<<<<<<<<<<< +@@ -14683,40 +14683,40 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + __pyx_t_9 = (__pyx_t_8 != 0); + if (__pyx_t_9) { + +- /* "vidcutter/libs/pympv/mpv.pyx":777 ++ /* "vidcutter/libs/pympv/mpv.pyx":779 + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is not None: + * userdatas.observed = False # <<<<<<<<<<<<<< + * if userdatas.counter <= 0: + * del self.reply_userdata[id_data] + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 777, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 779, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":778 ++ /* "vidcutter/libs/pympv/mpv.pyx":780 + * if userdatas is not None: + * userdatas.observed = False + * if userdatas.counter <= 0: # <<<<<<<<<<<<<< + * del self.reply_userdata[id_data] + * cdef int err + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_counter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 778, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_counter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 780, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 778, __pyx_L1_error) ++ __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 780, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 778, __pyx_L1_error) ++ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 780, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_9) { + +- /* "vidcutter/libs/pympv/mpv.pyx":779 ++ /* "vidcutter/libs/pympv/mpv.pyx":781 + * userdatas.observed = False + * if userdatas.counter <= 0: + * del self.reply_userdata[id_data] # <<<<<<<<<<<<<< + * cdef int err + * with nogil: + */ +- if (unlikely(__Pyx_DelItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 779, __pyx_L1_error) ++ if (unlikely(__Pyx_DelItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 781, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":778 ++ /* "vidcutter/libs/pympv/mpv.pyx":780 + * if userdatas is not None: + * userdatas.observed = False + * if userdatas.counter <= 0: # <<<<<<<<<<<<<< +@@ -14725,7 +14725,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":776 ++ /* "vidcutter/libs/pympv/mpv.pyx":778 + * cdef uint64_t id_data = hash(data) + * userdatas = self.reply_userdata.get(id_data, None) + * if userdatas is not None: # <<<<<<<<<<<<<< +@@ -14734,7 +14734,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":781 ++ /* "vidcutter/libs/pympv/mpv.pyx":783 + * del self.reply_userdata[id_data] + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -14749,7 +14749,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":782 ++ /* "vidcutter/libs/pympv/mpv.pyx":784 + * cdef int err + * with nogil: + * err = mpv_unobserve_property( # <<<<<<<<<<<<<< +@@ -14759,7 +14759,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + __pyx_v_err = mpv_unobserve_property(__pyx_v_self->_ctx, __pyx_v_id_data); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":781 ++ /* "vidcutter/libs/pympv/mpv.pyx":783 + * del self.reply_userdata[id_data] + * cdef int err + * with nogil: # <<<<<<<<<<<<<< +@@ -14778,7 +14778,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":786 ++ /* "vidcutter/libs/pympv/mpv.pyx":788 + * id_data, + * ) + * return err # <<<<<<<<<<<<<< +@@ -14786,13 +14786,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + * def shutdown(self): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 786, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 788, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":771 ++ /* "vidcutter/libs/pympv/mpv.pyx":773 + * + * @_errors + * def unobserve_property(self, data): # <<<<<<<<<<<<<< +@@ -14816,7 +14816,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":788 ++/* "vidcutter/libs/pympv/mpv.pyx":790 + * return err + * + * def shutdown(self): # <<<<<<<<<<<<<< +@@ -14851,7 +14851,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("shutdown", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":789 ++ /* "vidcutter/libs/pympv/mpv.pyx":791 + * + * def shutdown(self): + * if self._ctx == NULL: # <<<<<<<<<<<<<< +@@ -14861,7 +14861,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + __pyx_t_1 = ((__pyx_v_self->_ctx == NULL) != 0); + if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":790 ++ /* "vidcutter/libs/pympv/mpv.pyx":792 + * def shutdown(self): + * if self._ctx == NULL: + * return # <<<<<<<<<<<<<< +@@ -14872,7 +14872,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":789 ++ /* "vidcutter/libs/pympv/mpv.pyx":791 + * + * def shutdown(self): + * if self._ctx == NULL: # <<<<<<<<<<<<<< +@@ -14881,20 +14881,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":791 ++ /* "vidcutter/libs/pympv/mpv.pyx":793 + * if self._ctx == NULL: + * return + * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< + * with nogil: + * mpv_terminate_destroy(self._ctx) + */ +- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 793, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 791, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 793, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_ctxid = ((uint64_t)__pyx_t_3); + +- /* "vidcutter/libs/pympv/mpv.pyx":792 ++ /* "vidcutter/libs/pympv/mpv.pyx":794 + * return + * cdef uint64_t ctxid = id(self) + * with nogil: # <<<<<<<<<<<<<< +@@ -14909,7 +14909,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":793 ++ /* "vidcutter/libs/pympv/mpv.pyx":795 + * cdef uint64_t ctxid = id(self) + * with nogil: + * mpv_terminate_destroy(self._ctx) # <<<<<<<<<<<<<< +@@ -14919,7 +14919,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + mpv_terminate_destroy(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":792 ++ /* "vidcutter/libs/pympv/mpv.pyx":794 + * return + * cdef uint64_t ctxid = id(self) + * with nogil: # <<<<<<<<<<<<<< +@@ -14938,14 +14938,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":794 ++ /* "vidcutter/libs/pympv/mpv.pyx":796 + * with nogil: + * mpv_terminate_destroy(self._ctx) + * self.callbackthread.shutdown() # <<<<<<<<<<<<<< + * del _callbacks[ctxid] + * del _reply_userdatas[ctxid] + */ +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 794, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { +@@ -14959,30 +14959,30 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + } + __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error) ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":795 ++ /* "vidcutter/libs/pympv/mpv.pyx":797 + * mpv_terminate_destroy(self._ctx) + * self.callbackthread.shutdown() + * del _callbacks[ctxid] # <<<<<<<<<<<<<< + * del _reply_userdatas[ctxid] + * self.callback = None + */ +- if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 795, __pyx_L1_error) ++ if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 797, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":796 ++ /* "vidcutter/libs/pympv/mpv.pyx":798 + * self.callbackthread.shutdown() + * del _callbacks[ctxid] + * del _reply_userdatas[ctxid] # <<<<<<<<<<<<<< + * self.callback = None + * self.reply_userdata = None + */ +- if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 796, __pyx_L1_error) ++ if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 798, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":797 ++ /* "vidcutter/libs/pympv/mpv.pyx":799 + * del _callbacks[ctxid] + * del _reply_userdatas[ctxid] + * self.callback = None # <<<<<<<<<<<<<< +@@ -14995,7 +14995,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + __Pyx_DECREF(__pyx_v_self->callback); + __pyx_v_self->callback = Py_None; + +- /* "vidcutter/libs/pympv/mpv.pyx":798 ++ /* "vidcutter/libs/pympv/mpv.pyx":800 + * del _reply_userdatas[ctxid] + * self.callback = None + * self.reply_userdata = None # <<<<<<<<<<<<<< +@@ -15008,7 +15008,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + __Pyx_DECREF(__pyx_v_self->reply_userdata); + __pyx_v_self->reply_userdata = Py_None; + +- /* "vidcutter/libs/pympv/mpv.pyx":799 ++ /* "vidcutter/libs/pympv/mpv.pyx":801 + * self.callback = None + * self.reply_userdata = None + * self._ctx = NULL # <<<<<<<<<<<<<< +@@ -15017,7 +15017,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + */ + __pyx_v_self->_ctx = NULL; + +- /* "vidcutter/libs/pympv/mpv.pyx":788 ++ /* "vidcutter/libs/pympv/mpv.pyx":790 + * return err + * + * def shutdown(self): # <<<<<<<<<<<<<< +@@ -15040,7 +15040,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":813 ++/* "vidcutter/libs/pympv/mpv.pyx":815 + * # return ctx + * + * def __dealloc__(self): # <<<<<<<<<<<<<< +@@ -15069,14 +15069,14 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(struct __pyx_o + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__dealloc__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":814 ++ /* "vidcutter/libs/pympv/mpv.pyx":816 + * + * def __dealloc__(self): + * self.shutdown() # <<<<<<<<<<<<<< + * + * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 814, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -15090,12 +15090,12 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(struct __pyx_o + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":813 ++ /* "vidcutter/libs/pympv/mpv.pyx":815 + * # return ctx + * + * def __dealloc__(self): # <<<<<<<<<<<<<< +@@ -15227,7 +15227,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44__setstate_cython__(C + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":816 ++/* "vidcutter/libs/pympv/mpv.pyx":818 + * self.shutdown() + * + * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< +@@ -15251,14 +15251,14 @@ static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, + #endif + __Pyx_RefNannySetupContext("_c_getprocaddress", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":817 ++ /* "vidcutter/libs/pympv/mpv.pyx":819 + * + * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: + * return (ctx)(name) # <<<<<<<<<<<<<< + * + * cdef void _c_updatecb(void *ctx) with gil: + */ +- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 819, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); + __pyx_t_3 = ((PyObject *)__pyx_v_ctx); __pyx_t_4 = NULL; +@@ -15274,15 +15274,15 @@ static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 819, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 817, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 819, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = ((void *)((intptr_t)__pyx_t_5)); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":816 ++ /* "vidcutter/libs/pympv/mpv.pyx":818 + * self.shutdown() + * + * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< +@@ -15306,7 +15306,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":819 ++/* "vidcutter/libs/pympv/mpv.pyx":821 + * return (ctx)(name) + * + * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< +@@ -15327,7 +15327,7 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { + #endif + __Pyx_RefNannySetupContext("_c_updatecb", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":820 ++ /* "vidcutter/libs/pympv/mpv.pyx":822 + * + * cdef void _c_updatecb(void *ctx) with gil: + * (ctx)() # <<<<<<<<<<<<<< +@@ -15347,12 +15347,12 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 820, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 822, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":819 ++ /* "vidcutter/libs/pympv/mpv.pyx":821 + * return (ctx)(name) + * + * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< +@@ -15374,7 +15374,7 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { + #endif + } + +-/* "vidcutter/libs/pympv/mpv.pyx":886 ++/* "vidcutter/libs/pympv/mpv.pyx":888 + * object owned + * + * def __init__(self): # <<<<<<<<<<<<<< +@@ -15407,14 +15407,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":887 ++ /* "vidcutter/libs/pympv/mpv.pyx":889 + * + * def __init__(self): + * self.owned = [] # <<<<<<<<<<<<<< + * self.params[0].type = MPV_RENDER_PARAM_INVALID + * + */ +- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error) ++ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 889, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->owned); +@@ -15422,7 +15422,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_ + __pyx_v_self->owned = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":888 ++ /* "vidcutter/libs/pympv/mpv.pyx":890 + * def __init__(self): + * self.owned = [] + * self.params[0].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< +@@ -15431,7 +15431,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_ + */ + (__pyx_v_self->params[0]).type = MPV_RENDER_PARAM_INVALID; + +- /* "vidcutter/libs/pympv/mpv.pyx":886 ++ /* "vidcutter/libs/pympv/mpv.pyx":888 + * object owned + * + * def __init__(self): # <<<<<<<<<<<<<< +@@ -15451,7 +15451,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":890 ++/* "vidcutter/libs/pympv/mpv.pyx":892 + * self.params[0].type = MPV_RENDER_PARAM_INVALID + * + * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< +@@ -15480,7 +15480,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":891 ++ /* "vidcutter/libs/pympv/mpv.pyx":893 + * + * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): + * count = len(self.owned) # <<<<<<<<<<<<<< +@@ -15489,26 +15489,26 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct + */ + __pyx_t_1 = __pyx_v_self->owned; + __Pyx_INCREF(__pyx_t_1); +- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 891, __pyx_L1_error) ++ __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 893, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error) ++ __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_count = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":892 ++ /* "vidcutter/libs/pympv/mpv.pyx":894 + * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): + * count = len(self.owned) + * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< + * if owned: + * free(p) + */ +- __pyx_t_1 = PyObject_RichCompare(__pyx_v_count, __pyx_int_32, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 892, __pyx_L1_error) +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 892, __pyx_L1_error) ++ __pyx_t_1 = PyObject_RichCompare(__pyx_v_count, __pyx_int_32, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 894, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_3) { + +- /* "vidcutter/libs/pympv/mpv.pyx":893 ++ /* "vidcutter/libs/pympv/mpv.pyx":895 + * count = len(self.owned) + * if count >= MAX_RENDER_PARAMS: + * if owned: # <<<<<<<<<<<<<< +@@ -15518,7 +15518,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct + __pyx_t_3 = (__pyx_v_owned != 0); + if (__pyx_t_3) { + +- /* "vidcutter/libs/pympv/mpv.pyx":894 ++ /* "vidcutter/libs/pympv/mpv.pyx":896 + * if count >= MAX_RENDER_PARAMS: + * if owned: + * free(p) # <<<<<<<<<<<<<< +@@ -15527,7 +15527,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct + */ + free(__pyx_v_p); + +- /* "vidcutter/libs/pympv/mpv.pyx":893 ++ /* "vidcutter/libs/pympv/mpv.pyx":895 + * count = len(self.owned) + * if count >= MAX_RENDER_PARAMS: + * if owned: # <<<<<<<<<<<<<< +@@ -15536,14 +15536,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":895 ++ /* "vidcutter/libs/pympv/mpv.pyx":897 + * if owned: + * free(p) + * raise PyMPVError("RenderParams overflow") # <<<<<<<<<<<<<< + * + * self.params[count].type = t + */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +@@ -15557,14 +15557,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct + } + __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_RenderParams_overflow) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_RenderParams_overflow); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 897, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __PYX_ERR(0, 895, __pyx_L1_error) ++ __PYX_ERR(0, 897, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":892 ++ /* "vidcutter/libs/pympv/mpv.pyx":894 + * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): + * count = len(self.owned) + * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< +@@ -15573,52 +15573,52 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":897 ++ /* "vidcutter/libs/pympv/mpv.pyx":899 + * raise PyMPVError("RenderParams overflow") + * + * self.params[count].type = t # <<<<<<<<<<<<<< + * self.params[count].data = p + * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID + */ +- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 897, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 899, __pyx_L1_error) + (__pyx_v_self->params[__pyx_t_2]).type = __pyx_v_t; + +- /* "vidcutter/libs/pympv/mpv.pyx":898 ++ /* "vidcutter/libs/pympv/mpv.pyx":900 + * + * self.params[count].type = t + * self.params[count].data = p # <<<<<<<<<<<<<< + * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID + * self.owned.append(owned) + */ +- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 898, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 900, __pyx_L1_error) + (__pyx_v_self->params[__pyx_t_2]).data = __pyx_v_p; + +- /* "vidcutter/libs/pympv/mpv.pyx":899 ++ /* "vidcutter/libs/pympv/mpv.pyx":901 + * self.params[count].type = t + * self.params[count].data = p + * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< + * self.owned.append(owned) + * + */ +- __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_count, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_count, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 901, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 899, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 901, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + (__pyx_v_self->params[__pyx_t_2]).type = MPV_RENDER_PARAM_INVALID; + +- /* "vidcutter/libs/pympv/mpv.pyx":900 ++ /* "vidcutter/libs/pympv/mpv.pyx":902 + * self.params[count].data = p + * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID + * self.owned.append(owned) # <<<<<<<<<<<<<< + * + * cdef add_int(self, mpv_render_param_type t, int val): + */ +- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_owned); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 900, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_owned); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->owned, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 900, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->owned, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 902, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":890 ++ /* "vidcutter/libs/pympv/mpv.pyx":892 + * self.params[0].type = MPV_RENDER_PARAM_INVALID + * + * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< +@@ -15642,7 +15642,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":902 ++/* "vidcutter/libs/pympv/mpv.pyx":904 + * self.owned.append(owned) + * + * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< +@@ -15660,7 +15660,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("add_int", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":903 ++ /* "vidcutter/libs/pympv/mpv.pyx":905 + * + * cdef add_int(self, mpv_render_param_type t, int val): + * cdef int *p = malloc(sizeof(int)) # <<<<<<<<<<<<<< +@@ -15669,7 +15669,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __ + */ + __pyx_v_p = ((int *)malloc((sizeof(int)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":904 ++ /* "vidcutter/libs/pympv/mpv.pyx":906 + * cdef add_int(self, mpv_render_param_type t, int val): + * cdef int *p = malloc(sizeof(int)) + * p[0] = val # <<<<<<<<<<<<<< +@@ -15678,18 +15678,18 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __ + */ + (__pyx_v_p[0]) = __pyx_v_val; + +- /* "vidcutter/libs/pympv/mpv.pyx":905 ++ /* "vidcutter/libs/pympv/mpv.pyx":907 + * cdef int *p = malloc(sizeof(int)) + * p[0] = val + * self.add_voidp(t, p) # <<<<<<<<<<<<<< + * + * cdef add_string(self, mpv_render_param_type t, char *s): + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 907, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":902 ++ /* "vidcutter/libs/pympv/mpv.pyx":904 + * self.owned.append(owned) + * + * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< +@@ -15710,7 +15710,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":907 ++/* "vidcutter/libs/pympv/mpv.pyx":909 + * self.add_voidp(t, p) + * + * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< +@@ -15728,7 +15728,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("add_string", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":908 ++ /* "vidcutter/libs/pympv/mpv.pyx":910 + * + * cdef add_string(self, mpv_render_param_type t, char *s): + * cdef char *p = malloc(strlen(s) + 1) # <<<<<<<<<<<<<< +@@ -15737,7 +15737,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct + */ + __pyx_v_p = ((char *)malloc((strlen(__pyx_v_s) + 1))); + +- /* "vidcutter/libs/pympv/mpv.pyx":909 ++ /* "vidcutter/libs/pympv/mpv.pyx":911 + * cdef add_string(self, mpv_render_param_type t, char *s): + * cdef char *p = malloc(strlen(s) + 1) + * strcpy(p, s) # <<<<<<<<<<<<<< +@@ -15746,18 +15746,18 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct + */ + (void)(strcpy(__pyx_v_p, __pyx_v_s)); + +- /* "vidcutter/libs/pympv/mpv.pyx":910 ++ /* "vidcutter/libs/pympv/mpv.pyx":912 + * cdef char *p = malloc(strlen(s) + 1) + * strcpy(p, s) + * self.add_voidp(t, p) # <<<<<<<<<<<<<< + * + * def __dealloc__(self): + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 912, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":907 ++ /* "vidcutter/libs/pympv/mpv.pyx":909 + * self.add_voidp(t, p) + * + * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< +@@ -15778,7 +15778,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":912 ++/* "vidcutter/libs/pympv/mpv.pyx":914 + * self.add_voidp(t, p) + * + * def __dealloc__(self): # <<<<<<<<<<<<<< +@@ -15813,7 +15813,7 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__dealloc__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":913 ++ /* "vidcutter/libs/pympv/mpv.pyx":915 + * + * def __dealloc__(self): + * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< +@@ -15826,26 +15826,26 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ + __pyx_t_2 = __pyx_v_self->owned; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; + __pyx_t_4 = NULL; + } else { +- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->owned); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->owned); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_4)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 915, __pyx_L1_error) + #else +- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 915, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } else { + if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS +- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 915, __pyx_L1_error) + #else +- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 915, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } +@@ -15855,7 +15855,7 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); +- else __PYX_ERR(0, 913, __pyx_L1_error) ++ else __PYX_ERR(0, 915, __pyx_L1_error) + } + break; + } +@@ -15865,33 +15865,33 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); +- __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 915, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); + __pyx_t_1 = __pyx_t_5; + __pyx_t_5 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":914 ++ /* "vidcutter/libs/pympv/mpv.pyx":916 + * def __dealloc__(self): + * for i, j in enumerate(self.owned): + * if j: # <<<<<<<<<<<<<< + * free(self.params[i].data) + * + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_j); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 914, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_j); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 916, __pyx_L1_error) + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":915 ++ /* "vidcutter/libs/pympv/mpv.pyx":917 + * for i, j in enumerate(self.owned): + * if j: + * free(self.params[i].data) # <<<<<<<<<<<<<< + * + * cdef void *get_pointer(const char *name, object obj): + */ +- __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 917, __pyx_L1_error) + free((__pyx_v_self->params[__pyx_t_7]).data); + +- /* "vidcutter/libs/pympv/mpv.pyx":914 ++ /* "vidcutter/libs/pympv/mpv.pyx":916 + * def __dealloc__(self): + * for i, j in enumerate(self.owned): + * if j: # <<<<<<<<<<<<<< +@@ -15900,7 +15900,7 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":913 ++ /* "vidcutter/libs/pympv/mpv.pyx":915 + * + * def __dealloc__(self): + * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< +@@ -15911,7 +15911,7 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":912 ++ /* "vidcutter/libs/pympv/mpv.pyx":914 + * self.add_voidp(t, p) + * + * def __dealloc__(self): # <<<<<<<<<<<<<< +@@ -16045,7 +16045,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cyth + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":917 ++/* "vidcutter/libs/pympv/mpv.pyx":919 + * free(self.params[i].data) + * + * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< +@@ -16071,7 +16071,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_pointer", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":919 ++ /* "vidcutter/libs/pympv/mpv.pyx":921 + * cdef void *get_pointer(const char *name, object obj): + * cdef void *p + * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< +@@ -16081,17 +16081,17 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, + __pyx_t_1 = (PyCapsule_IsValid(__pyx_v_obj, __pyx_v_name) != 0); + if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":920 ++ /* "vidcutter/libs/pympv/mpv.pyx":922 + * cdef void *p + * if PyCapsule_IsValid(obj, name): + * p = PyCapsule_GetPointer(obj, name) # <<<<<<<<<<<<<< + * elif isinstance(obj, int) or isinstance(obj, long) and obj: + * p = obj + */ +- __pyx_t_2 = PyCapsule_GetPointer(__pyx_v_obj, __pyx_v_name); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 920, __pyx_L1_error) ++ __pyx_t_2 = PyCapsule_GetPointer(__pyx_v_obj, __pyx_v_name); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) + __pyx_v_p = __pyx_t_2; + +- /* "vidcutter/libs/pympv/mpv.pyx":919 ++ /* "vidcutter/libs/pympv/mpv.pyx":921 + * cdef void *get_pointer(const char *name, object obj): + * cdef void *p + * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< +@@ -16101,7 +16101,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, + goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":921 ++ /* "vidcutter/libs/pympv/mpv.pyx":923 + * if PyCapsule_IsValid(obj, name): + * p = PyCapsule_GetPointer(obj, name) + * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< +@@ -16122,22 +16122,22 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, + __pyx_t_1 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 921, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 923, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (likely(__pyx_t_1)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":922 ++ /* "vidcutter/libs/pympv/mpv.pyx":924 + * p = PyCapsule_GetPointer(obj, name) + * elif isinstance(obj, int) or isinstance(obj, long) and obj: + * p = obj # <<<<<<<<<<<<<< + * else: + * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) + */ +- __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_v_obj); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_v_obj); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 924, __pyx_L1_error) + __pyx_v_p = ((void *)((intptr_t)__pyx_t_5)); + +- /* "vidcutter/libs/pympv/mpv.pyx":921 ++ /* "vidcutter/libs/pympv/mpv.pyx":923 + * if PyCapsule_IsValid(obj, name): + * p = PyCapsule_GetPointer(obj, name) + * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< +@@ -16147,7 +16147,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, + goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":924 ++ /* "vidcutter/libs/pympv/mpv.pyx":926 + * p = obj + * else: + * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) # <<<<<<<<<<<<<< +@@ -16155,9 +16155,9 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, + * + */ + /*else*/ { +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_v_obj); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 924, __pyx_L1_error) ++ __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_v_obj); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 926, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { +@@ -16172,16 +16172,16 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, + __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 924, __pyx_L1_error) ++ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 926, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- __PYX_ERR(0, 924, __pyx_L1_error) ++ __PYX_ERR(0, 926, __pyx_L1_error) + } + __pyx_L3:; + +- /* "vidcutter/libs/pympv/mpv.pyx":925 ++ /* "vidcutter/libs/pympv/mpv.pyx":927 + * else: + * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) + * return p # <<<<<<<<<<<<<< +@@ -16191,7 +16191,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, + __pyx_r = __pyx_v_p; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":917 ++ /* "vidcutter/libs/pympv/mpv.pyx":919 + * free(self.params[i].data) + * + * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< +@@ -16212,7 +16212,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":929 ++/* "vidcutter/libs/pympv/mpv.pyx":931 + * @cython.internal + * cdef class RenderFrameInfo(object): + * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< +@@ -16230,83 +16230,83 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(st + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_from_struct", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":930 ++ /* "vidcutter/libs/pympv/mpv.pyx":932 + * cdef class RenderFrameInfo(object): + * cdef _from_struct(self, mpv_render_frame_info *info): + * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) # <<<<<<<<<<<<<< + * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) + * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) + */ +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_PRESENT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_PRESENT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 930, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 932, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_present, __pyx_t_1) < 0) __PYX_ERR(0, 930, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_present, __pyx_t_1) < 0) __PYX_ERR(0, 932, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":931 ++ /* "vidcutter/libs/pympv/mpv.pyx":933 + * cdef _from_struct(self, mpv_render_frame_info *info): + * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) + * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) # <<<<<<<<<<<<<< + * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) + * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) + */ +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REDRAW)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REDRAW)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 931, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redraw, __pyx_t_1) < 0) __PYX_ERR(0, 931, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redraw, __pyx_t_1) < 0) __PYX_ERR(0, 933, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":932 ++ /* "vidcutter/libs/pympv/mpv.pyx":934 + * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) + * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) + * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) # <<<<<<<<<<<<<< + * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) + * self.target_time = info[0].target_time + */ +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REPEAT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REPEAT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 932, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 934, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repeat, __pyx_t_1) < 0) __PYX_ERR(0, 932, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repeat, __pyx_t_1) < 0) __PYX_ERR(0, 934, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":933 ++ /* "vidcutter/libs/pympv/mpv.pyx":935 + * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) + * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) + * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) # <<<<<<<<<<<<<< + * self.target_time = info[0].target_time + * return self + */ +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 935, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 935, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 935, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_block_vsync, __pyx_t_1) < 0) __PYX_ERR(0, 933, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_block_vsync, __pyx_t_1) < 0) __PYX_ERR(0, 935, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":934 ++ /* "vidcutter/libs/pympv/mpv.pyx":936 + * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) + * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) + * self.target_time = info[0].target_time # <<<<<<<<<<<<<< + * return self + * + */ +- __pyx_t_1 = __Pyx_PyInt_From_int64_t((__pyx_v_info[0]).target_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int64_t((__pyx_v_info[0]).target_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 936, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target_time, __pyx_t_1) < 0) __PYX_ERR(0, 934, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target_time, __pyx_t_1) < 0) __PYX_ERR(0, 936, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":935 ++ /* "vidcutter/libs/pympv/mpv.pyx":937 + * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) + * self.target_time = info[0].target_time + * return self # <<<<<<<<<<<<<< +@@ -16318,7 +16318,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(st + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":929 ++ /* "vidcutter/libs/pympv/mpv.pyx":931 + * @cython.internal + * cdef class RenderFrameInfo(object): + * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< +@@ -16624,7 +16624,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cy + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":950 ++/* "vidcutter/libs/pympv/mpv.pyx":952 + * bint inited + * + * def __init__(self, mpv, # <<<<<<<<<<<<<< +@@ -16653,7 +16653,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_api_type,&__pyx_n_s_opengl_init_params,&__pyx_n_s_advanced_control,&__pyx_n_s_x11_display,&__pyx_n_s_wl_display,&__pyx_n_s_drm_display,&__pyx_n_s_drm_osd_size,0}; + PyObject* values[8] = {0,0,0,0,0,0,0,0}; + +- /* "vidcutter/libs/pympv/mpv.pyx":952 ++ /* "vidcutter/libs/pympv/mpv.pyx":954 + * def __init__(self, mpv, + * api_type, + * opengl_init_params=None, # <<<<<<<<<<<<<< +@@ -16662,7 +16662,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + */ + values[2] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":953 ++ /* "vidcutter/libs/pympv/mpv.pyx":955 + * api_type, + * opengl_init_params=None, + * advanced_control=False, # <<<<<<<<<<<<<< +@@ -16671,7 +16671,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + */ + values[3] = ((PyObject *)Py_False); + +- /* "vidcutter/libs/pympv/mpv.pyx":954 ++ /* "vidcutter/libs/pympv/mpv.pyx":956 + * opengl_init_params=None, + * advanced_control=False, + * x11_display=None, # <<<<<<<<<<<<<< +@@ -16680,7 +16680,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + */ + values[4] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":955 ++ /* "vidcutter/libs/pympv/mpv.pyx":957 + * advanced_control=False, + * x11_display=None, + * wl_display=None, # <<<<<<<<<<<<<< +@@ -16689,7 +16689,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + */ + values[5] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":956 ++ /* "vidcutter/libs/pympv/mpv.pyx":958 + * x11_display=None, + * wl_display=None, + * drm_display=None, # <<<<<<<<<<<<<< +@@ -16698,7 +16698,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + */ + values[6] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":957 ++ /* "vidcutter/libs/pympv/mpv.pyx":959 + * wl_display=None, + * drm_display=None, + * drm_osd_size=None # <<<<<<<<<<<<<< +@@ -16738,7 +16738,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_api_type)) != 0)) kw_args--; + else { +- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, 1); __PYX_ERR(0, 950, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, 1); __PYX_ERR(0, 952, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: +@@ -16778,7 +16778,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 950, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 952, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -16811,7 +16811,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 950, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 952, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -16819,7 +16819,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_api_type, __pyx_v_opengl_init_params, __pyx_v_advanced_control, __pyx_v_x11_display, __pyx_v_wl_display, __pyx_v_drm_display, __pyx_v_drm_osd_size); + +- /* "vidcutter/libs/pympv/mpv.pyx":950 ++ /* "vidcutter/libs/pympv/mpv.pyx":952 + * bint inited + * + * def __init__(self, mpv, # <<<<<<<<<<<<<< +@@ -16856,14 +16856,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":965 ++ /* "vidcutter/libs/pympv/mpv.pyx":967 + * mpv_opengl_drm_osd_size _drm_osd_size + * + * self._mpv = mpv # <<<<<<<<<<<<<< + * + * memset(&gl_params, 0, sizeof(gl_params)) + */ +- if (!(likely(((__pyx_v_mpv) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_mpv, __pyx_ptype_9vidcutter_4libs_3mpv_Context))))) __PYX_ERR(0, 965, __pyx_L1_error) ++ if (!(likely(((__pyx_v_mpv) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_mpv, __pyx_ptype_9vidcutter_4libs_3mpv_Context))))) __PYX_ERR(0, 967, __pyx_L1_error) + __pyx_t_1 = __pyx_v_mpv; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); +@@ -16872,7 +16872,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __pyx_v_self->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":967 ++ /* "vidcutter/libs/pympv/mpv.pyx":969 + * self._mpv = mpv + * + * memset(&gl_params, 0, sizeof(gl_params)) # <<<<<<<<<<<<<< +@@ -16881,7 +16881,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + (void)(memset((&__pyx_v_gl_params), 0, (sizeof(__pyx_v_gl_params)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":968 ++ /* "vidcutter/libs/pympv/mpv.pyx":970 + * + * memset(&gl_params, 0, sizeof(gl_params)) + * memset(&drm_params, 0, sizeof(drm_params)) # <<<<<<<<<<<<<< +@@ -16890,7 +16890,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + (void)(memset((&__pyx_v_drm_params), 0, (sizeof(__pyx_v_drm_params)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":969 ++ /* "vidcutter/libs/pympv/mpv.pyx":971 + * memset(&gl_params, 0, sizeof(gl_params)) + * memset(&drm_params, 0, sizeof(drm_params)) + * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) # <<<<<<<<<<<<<< +@@ -16899,45 +16899,45 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + (void)(memset((&__pyx_v__drm_osd_size), 0, (sizeof(__pyx_v__drm_osd_size)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":971 ++ /* "vidcutter/libs/pympv/mpv.pyx":973 + * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) + * + * params = _RenderParams() # <<<<<<<<<<<<<< + * + * if api_type == self.API_OPENGL: + */ +- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":973 ++ /* "vidcutter/libs/pympv/mpv.pyx":975 + * params = _RenderParams() + * + * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< + * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) + * else: + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = PyObject_RichCompare(__pyx_v_api_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error) ++ __pyx_t_2 = PyObject_RichCompare(__pyx_v_api_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 973, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 975, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (likely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":974 ++ /* "vidcutter/libs/pympv/mpv.pyx":976 + * + * if api_type == self.API_OPENGL: + * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) # <<<<<<<<<<<<<< + * else: + * raise PyMPVError("Unknown api_type %r" % api_type) + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_string(__pyx_v_params, MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_string(__pyx_v_params, MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":973 ++ /* "vidcutter/libs/pympv/mpv.pyx":975 + * params = _RenderParams() + * + * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< +@@ -16947,7 +16947,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + goto __pyx_L3; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":976 ++ /* "vidcutter/libs/pympv/mpv.pyx":978 + * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) + * else: + * raise PyMPVError("Unknown api_type %r" % api_type) # <<<<<<<<<<<<<< +@@ -16955,9 +16955,9 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + * if opengl_init_params is not None: + */ + /*else*/ { +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 978, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_api_type_r, __pyx_v_api_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 976, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_api_type_r, __pyx_v_api_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 978, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { +@@ -16972,16 +16972,16 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 978, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __PYX_ERR(0, 976, __pyx_L1_error) ++ __PYX_ERR(0, 978, __pyx_L1_error) + } + __pyx_L3:; + +- /* "vidcutter/libs/pympv/mpv.pyx":978 ++ /* "vidcutter/libs/pympv/mpv.pyx":980 + * raise PyMPVError("Unknown api_type %r" % api_type) + * + * if opengl_init_params is not None: # <<<<<<<<<<<<<< +@@ -16992,14 +16992,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __pyx_t_6 = (__pyx_t_3 != 0); + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":979 ++ /* "vidcutter/libs/pympv/mpv.pyx":981 + * + * if opengl_init_params is not None: + * self._get_proc_address = opengl_init_params["get_proc_address"] # <<<<<<<<<<<<<< + * gl_params.get_proc_address = &_c_getprocaddress + * gl_params.get_proc_address_ctx = self._get_proc_address + */ +- __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_init_params, __pyx_n_s_get_proc_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_init_params, __pyx_n_s_get_proc_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 981, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_v_self->_get_proc_address); +@@ -17007,7 +17007,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __pyx_v_self->_get_proc_address = __pyx_t_2; + __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":980 ++ /* "vidcutter/libs/pympv/mpv.pyx":982 + * if opengl_init_params is not None: + * self._get_proc_address = opengl_init_params["get_proc_address"] + * gl_params.get_proc_address = &_c_getprocaddress # <<<<<<<<<<<<<< +@@ -17016,7 +17016,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + __pyx_v_gl_params.get_proc_address = (&__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress); + +- /* "vidcutter/libs/pympv/mpv.pyx":981 ++ /* "vidcutter/libs/pympv/mpv.pyx":983 + * self._get_proc_address = opengl_init_params["get_proc_address"] + * gl_params.get_proc_address = &_c_getprocaddress + * gl_params.get_proc_address_ctx = self._get_proc_address # <<<<<<<<<<<<<< +@@ -17025,18 +17025,18 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + __pyx_v_gl_params.get_proc_address_ctx = ((void *)__pyx_v_self->_get_proc_address); + +- /* "vidcutter/libs/pympv/mpv.pyx":982 ++ /* "vidcutter/libs/pympv/mpv.pyx":984 + * gl_params.get_proc_address = &_c_getprocaddress + * gl_params.get_proc_address_ctx = self._get_proc_address + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) # <<<<<<<<<<<<<< + * if advanced_control: + * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, (&__pyx_v_gl_params), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 982, __pyx_L1_error) ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, (&__pyx_v_gl_params), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 984, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":978 ++ /* "vidcutter/libs/pympv/mpv.pyx":980 + * raise PyMPVError("Unknown api_type %r" % api_type) + * + * if opengl_init_params is not None: # <<<<<<<<<<<<<< +@@ -17045,28 +17045,28 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":983 ++ /* "vidcutter/libs/pympv/mpv.pyx":985 + * gl_params.get_proc_address_ctx = self._get_proc_address + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) + * if advanced_control: # <<<<<<<<<<<<<< + * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) + * if x11_display: + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_advanced_control); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 983, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_advanced_control); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 985, __pyx_L1_error) + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":984 ++ /* "vidcutter/libs/pympv/mpv.pyx":986 + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) + * if advanced_control: + * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) # <<<<<<<<<<<<<< + * if x11_display: + * self._x11_display = x11_display + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_ADVANCED_CONTROL, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 984, __pyx_L1_error) ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_ADVANCED_CONTROL, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":983 ++ /* "vidcutter/libs/pympv/mpv.pyx":985 + * gl_params.get_proc_address_ctx = self._get_proc_address + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) + * if advanced_control: # <<<<<<<<<<<<<< +@@ -17075,17 +17075,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":985 ++ /* "vidcutter/libs/pympv/mpv.pyx":987 + * if advanced_control: + * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) + * if x11_display: # <<<<<<<<<<<<<< + * self._x11_display = x11_display + * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_x11_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 985, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_x11_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 987, __pyx_L1_error) + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":986 ++ /* "vidcutter/libs/pympv/mpv.pyx":988 + * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) + * if x11_display: + * self._x11_display = x11_display # <<<<<<<<<<<<<< +@@ -17098,18 +17098,18 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __Pyx_DECREF(__pyx_v_self->_x11_display); + __pyx_v_self->_x11_display = __pyx_v_x11_display; + +- /* "vidcutter/libs/pympv/mpv.pyx":987 ++ /* "vidcutter/libs/pympv/mpv.pyx":989 + * if x11_display: + * self._x11_display = x11_display + * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) # <<<<<<<<<<<<<< + * if wl_display: + * self._wl_display = wl_display + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_X11_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"Display"), __pyx_v_x11_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 987, __pyx_L1_error) ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_X11_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"Display"), __pyx_v_x11_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":985 ++ /* "vidcutter/libs/pympv/mpv.pyx":987 + * if advanced_control: + * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) + * if x11_display: # <<<<<<<<<<<<<< +@@ -17118,17 +17118,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":988 ++ /* "vidcutter/libs/pympv/mpv.pyx":990 + * self._x11_display = x11_display + * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) + * if wl_display: # <<<<<<<<<<<<<< + * self._wl_display = wl_display + * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_wl_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 988, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_wl_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 990, __pyx_L1_error) + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":989 ++ /* "vidcutter/libs/pympv/mpv.pyx":991 + * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) + * if wl_display: + * self._wl_display = wl_display # <<<<<<<<<<<<<< +@@ -17141,18 +17141,18 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __Pyx_DECREF(__pyx_v_self->_wl_display); + __pyx_v_self->_wl_display = __pyx_v_wl_display; + +- /* "vidcutter/libs/pympv/mpv.pyx":990 ++ /* "vidcutter/libs/pympv/mpv.pyx":992 + * if wl_display: + * self._wl_display = wl_display + * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) # <<<<<<<<<<<<<< + * if drm_display: + * drm_params.fd = drm_display.get("fd", -1) + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_WL_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"wl_display"), __pyx_v_wl_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_WL_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"wl_display"), __pyx_v_wl_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":988 ++ /* "vidcutter/libs/pympv/mpv.pyx":990 + * self._x11_display = x11_display + * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) + * if wl_display: # <<<<<<<<<<<<<< +@@ -17161,80 +17161,80 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":991 ++ /* "vidcutter/libs/pympv/mpv.pyx":993 + * self._wl_display = wl_display + * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) + * if drm_display: # <<<<<<<<<<<<<< + * drm_params.fd = drm_display.get("fd", -1) + * drm_params.crtc_id = drm_display.get("crtc_id", -1) + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_drm_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 991, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_drm_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 993, __pyx_L1_error) + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":992 ++ /* "vidcutter/libs/pympv/mpv.pyx":994 + * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) + * if drm_display: + * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< + * drm_params.crtc_id = drm_display.get("crtc_id", -1) + * drm_params.connector_id = drm_display.get("connector_id", -1) + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 992, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 994, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_drm_params.fd = __pyx_t_7; + +- /* "vidcutter/libs/pympv/mpv.pyx":993 ++ /* "vidcutter/libs/pympv/mpv.pyx":995 + * if drm_display: + * drm_params.fd = drm_display.get("fd", -1) + * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< + * drm_params.connector_id = drm_display.get("connector_id", -1) + * arp = drm_display.get("atomic_request_ptr", None) + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 993, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 995, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_drm_params.crtc_id = __pyx_t_7; + +- /* "vidcutter/libs/pympv/mpv.pyx":994 ++ /* "vidcutter/libs/pympv/mpv.pyx":996 + * drm_params.fd = drm_display.get("fd", -1) + * drm_params.crtc_id = drm_display.get("crtc_id", -1) + * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< + * arp = drm_display.get("atomic_request_ptr", None) + * if arp is not None: + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 996, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 996, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 994, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 996, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_drm_params.connector_id = __pyx_t_7; + +- /* "vidcutter/libs/pympv/mpv.pyx":995 ++ /* "vidcutter/libs/pympv/mpv.pyx":997 + * drm_params.crtc_id = drm_display.get("crtc_id", -1) + * drm_params.connector_id = drm_display.get("connector_id", -1) + * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< + * if arp is not None: + * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 997, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 997, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_arp = __pyx_t_2; + __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":996 ++ /* "vidcutter/libs/pympv/mpv.pyx":998 + * drm_params.connector_id = drm_display.get("connector_id", -1) + * arp = drm_display.get("atomic_request_ptr", None) + * if arp is not None: # <<<<<<<<<<<<<< +@@ -17245,17 +17245,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __pyx_t_3 = (__pyx_t_6 != 0); + if (__pyx_t_3) { + +- /* "vidcutter/libs/pympv/mpv.pyx":997 ++ /* "vidcutter/libs/pympv/mpv.pyx":999 + * arp = drm_display.get("atomic_request_ptr", None) + * if arp is not None: + * 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) + */ +- __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_arp); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 997, __pyx_L1_error) ++ __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_arp); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 999, __pyx_L1_error) + __pyx_v_drm_params.atomic_request_ptr = ((struct _drmModeAtomicReq **)__pyx_f_9vidcutter_4libs_3mpv_get_pointer(__pyx_t_8, __pyx_kp_s_drmModeAtomicReq)); + +- /* "vidcutter/libs/pympv/mpv.pyx":996 ++ /* "vidcutter/libs/pympv/mpv.pyx":998 + * drm_params.connector_id = drm_display.get("connector_id", -1) + * arp = drm_display.get("atomic_request_ptr", None) + * if arp is not None: # <<<<<<<<<<<<<< +@@ -17264,34 +17264,34 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":998 ++ /* "vidcutter/libs/pympv/mpv.pyx":1000 + * if arp is not None: + * 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: + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 998, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1000, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 998, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1000, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_drm_params.render_fd = __pyx_t_7; + +- /* "vidcutter/libs/pympv/mpv.pyx":999 ++ /* "vidcutter/libs/pympv/mpv.pyx":1001 + * 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 + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_DISPLAY, (&__pyx_v_drm_params), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_DISPLAY, (&__pyx_v_drm_params), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":991 ++ /* "vidcutter/libs/pympv/mpv.pyx":993 + * self._wl_display = wl_display + * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) + * if drm_display: # <<<<<<<<<<<<<< +@@ -17300,17 +17300,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1000 ++ /* "vidcutter/libs/pympv/mpv.pyx":1002 + * 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) + */ +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_drm_osd_size); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1000, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_drm_osd_size); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1002, __pyx_L1_error) + if (__pyx_t_3) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1001 ++ /* "vidcutter/libs/pympv/mpv.pyx":1003 + * 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 # <<<<<<<<<<<<<< +@@ -17323,7 +17323,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +- __PYX_ERR(0, 1001, __pyx_L1_error) ++ __PYX_ERR(0, 1003, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { +@@ -17336,21 +17336,21 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + #else +- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1003, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1003, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } else { + Py_ssize_t index = -1; +- __pyx_t_4 = PyObject_GetIter(__pyx_v_drm_osd_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __pyx_t_4 = PyObject_GetIter(__pyx_v_drm_osd_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1003, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; + index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + index = 1; __pyx_t_2 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); +- if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1001, __pyx_L1_error) ++ if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1003, __pyx_L1_error) + __pyx_t_9 = NULL; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L12_unpacking_done; +@@ -17358,28 +17358,28 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_9 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +- __PYX_ERR(0, 1001, __pyx_L1_error) ++ __PYX_ERR(0, 1003, __pyx_L1_error) + __pyx_L12_unpacking_done:; + } +- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1003, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) ++ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1003, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v__drm_osd_size.width = __pyx_t_7; + __pyx_v__drm_osd_size.height = __pyx_t_10; + +- /* "vidcutter/libs/pympv/mpv.pyx":1002 ++ /* "vidcutter/libs/pympv/mpv.pyx":1004 + * 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) # <<<<<<<<<<<<<< + * + * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) + */ +- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_OSD_SIZE, (&__pyx_v__drm_osd_size), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1002, __pyx_L1_error) ++ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_OSD_SIZE, (&__pyx_v__drm_osd_size), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1004, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1000 ++ /* "vidcutter/libs/pympv/mpv.pyx":1002 + * drm_params.render_fd = drm_display.get("render_fd", -1) + * params.add_voidp(MPV_RENDER_PARAM_DRM_DISPLAY, &drm_params) + * if drm_osd_size: # <<<<<<<<<<<<<< +@@ -17388,7 +17388,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1004 ++ /* "vidcutter/libs/pympv/mpv.pyx":1006 + * params.add_voidp(MPV_RENDER_PARAM_DRM_OSD_SIZE, &_drm_osd_size) + * + * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) # <<<<<<<<<<<<<< +@@ -17397,7 +17397,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + __pyx_v_err = mpv_render_context_create((&__pyx_v_self->_ctx), __pyx_v_self->_mpv->_ctx, __pyx_v_params->params); + +- /* "vidcutter/libs/pympv/mpv.pyx":1005 ++ /* "vidcutter/libs/pympv/mpv.pyx":1007 + * + * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) + * if err < 0: # <<<<<<<<<<<<<< +@@ -17407,16 +17407,16 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __pyx_t_3 = ((__pyx_v_err < 0) != 0); + if (unlikely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1006 ++ /* "vidcutter/libs/pympv/mpv.pyx":1008 + * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) + * if err < 0: + * raise MPVError(err) # <<<<<<<<<<<<<< + * self.inited = True + * + */ +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1006, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1008, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1006, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1008, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { +@@ -17431,14 +17431,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1006, __pyx_L1_error) ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1008, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __PYX_ERR(0, 1006, __pyx_L1_error) ++ __PYX_ERR(0, 1008, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1005 ++ /* "vidcutter/libs/pympv/mpv.pyx":1007 + * + * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) + * if err < 0: # <<<<<<<<<<<<<< +@@ -17447,7 +17447,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1007 ++ /* "vidcutter/libs/pympv/mpv.pyx":1009 + * if err < 0: + * raise MPVError(err) + * self.inited = True # <<<<<<<<<<<<<< +@@ -17456,7 +17456,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + */ + __pyx_v_self->inited = 1; + +- /* "vidcutter/libs/pympv/mpv.pyx":950 ++ /* "vidcutter/libs/pympv/mpv.pyx":952 + * bint inited + * + * def __init__(self, mpv, # <<<<<<<<<<<<<< +@@ -17481,7 +17481,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1010 ++/* "vidcutter/libs/pympv/mpv.pyx":1012 + * + * @_errors + * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< +@@ -17520,7 +17520,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set_icc_profile", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1016 ++ /* "vidcutter/libs/pympv/mpv.pyx":1018 + * int err + * + * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< +@@ -17531,14 +17531,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); + if (unlikely(__pyx_t_2)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1017 ++ /* "vidcutter/libs/pympv/mpv.pyx":1019 + * + * if not isinstance(icc_blob, bytes): + * raise PyMPVError("icc_blob should be a bytes instance") # <<<<<<<<<<<<<< + * val.data = icc_blob + * val.size = len(icc_blob) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1017, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1019, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { +@@ -17552,14 +17552,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + } + __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_icc_blob_should_be_a_bytes_insta) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_icc_blob_should_be_a_bytes_insta); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; +- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1017, __pyx_L1_error) ++ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1019, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- __PYX_ERR(0, 1017, __pyx_L1_error) ++ __PYX_ERR(0, 1019, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1016 ++ /* "vidcutter/libs/pympv/mpv.pyx":1018 + * int err + * + * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< +@@ -17568,27 +17568,27 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1018 ++ /* "vidcutter/libs/pympv/mpv.pyx":1020 + * if not isinstance(icc_blob, bytes): + * raise PyMPVError("icc_blob should be a bytes instance") + * val.data = icc_blob # <<<<<<<<<<<<<< + * val.size = len(icc_blob) + * + */ +- __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_icc_blob); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1018, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_icc_blob); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1020, __pyx_L1_error) + __pyx_v_val.data = ((void *)((char *)__pyx_t_6)); + +- /* "vidcutter/libs/pympv/mpv.pyx":1019 ++ /* "vidcutter/libs/pympv/mpv.pyx":1021 + * raise PyMPVError("icc_blob should be a bytes instance") + * val.data = icc_blob + * val.size = len(icc_blob) # <<<<<<<<<<<<<< + * + * param.type = MPV_RENDER_PARAM_ICC_PROFILE + */ +- __pyx_t_7 = PyObject_Length(__pyx_v_icc_blob); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1019, __pyx_L1_error) ++ __pyx_t_7 = PyObject_Length(__pyx_v_icc_blob); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1021, __pyx_L1_error) + __pyx_v_val.size = __pyx_t_7; + +- /* "vidcutter/libs/pympv/mpv.pyx":1021 ++ /* "vidcutter/libs/pympv/mpv.pyx":1023 + * val.size = len(icc_blob) + * + * param.type = MPV_RENDER_PARAM_ICC_PROFILE # <<<<<<<<<<<<<< +@@ -17597,7 +17597,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + */ + __pyx_v_param.type = MPV_RENDER_PARAM_ICC_PROFILE; + +- /* "vidcutter/libs/pympv/mpv.pyx":1022 ++ /* "vidcutter/libs/pympv/mpv.pyx":1024 + * + * param.type = MPV_RENDER_PARAM_ICC_PROFILE + * param.data = &val # <<<<<<<<<<<<<< +@@ -17606,7 +17606,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + */ + __pyx_v_param.data = (&__pyx_v_val); + +- /* "vidcutter/libs/pympv/mpv.pyx":1024 ++ /* "vidcutter/libs/pympv/mpv.pyx":1026 + * param.data = &val + * + * with nogil: # <<<<<<<<<<<<<< +@@ -17621,7 +17621,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1025 ++ /* "vidcutter/libs/pympv/mpv.pyx":1027 + * + * with nogil: + * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< +@@ -17631,7 +17631,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1024 ++ /* "vidcutter/libs/pympv/mpv.pyx":1026 + * param.data = &val + * + * with nogil: # <<<<<<<<<<<<<< +@@ -17650,7 +17650,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1026 ++ /* "vidcutter/libs/pympv/mpv.pyx":1028 + * with nogil: + * err = mpv_render_context_set_parameter(self._ctx, param) + * return err # <<<<<<<<<<<<<< +@@ -17658,13 +17658,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1026, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1028, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1010 ++ /* "vidcutter/libs/pympv/mpv.pyx":1012 + * + * @_errors + * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< +@@ -17685,7 +17685,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1029 ++/* "vidcutter/libs/pympv/mpv.pyx":1031 + * + * @_errors + * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< +@@ -17719,17 +17719,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set_ambient_light", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1035 ++ /* "vidcutter/libs/pympv/mpv.pyx":1037 + * int err + * + * val = lux # <<<<<<<<<<<<<< + * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT + * param.data = &val + */ +- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_lux); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1035, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_lux); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1037, __pyx_L1_error) + __pyx_v_val = __pyx_t_1; + +- /* "vidcutter/libs/pympv/mpv.pyx":1036 ++ /* "vidcutter/libs/pympv/mpv.pyx":1038 + * + * val = lux + * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT # <<<<<<<<<<<<<< +@@ -17738,7 +17738,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig + */ + __pyx_v_param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT; + +- /* "vidcutter/libs/pympv/mpv.pyx":1037 ++ /* "vidcutter/libs/pympv/mpv.pyx":1039 + * val = lux + * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT + * param.data = &val # <<<<<<<<<<<<<< +@@ -17747,7 +17747,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig + */ + __pyx_v_param.data = (&__pyx_v_val); + +- /* "vidcutter/libs/pympv/mpv.pyx":1039 ++ /* "vidcutter/libs/pympv/mpv.pyx":1041 + * param.data = &val + * + * with nogil: # <<<<<<<<<<<<<< +@@ -17762,7 +17762,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1040 ++ /* "vidcutter/libs/pympv/mpv.pyx":1042 + * + * with nogil: + * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< +@@ -17772,7 +17772,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig + __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1039 ++ /* "vidcutter/libs/pympv/mpv.pyx":1041 + * param.data = &val + * + * with nogil: # <<<<<<<<<<<<<< +@@ -17791,7 +17791,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1041 ++ /* "vidcutter/libs/pympv/mpv.pyx":1043 + * with nogil: + * err = mpv_render_context_set_parameter(self._ctx, param) + * return err # <<<<<<<<<<<<<< +@@ -17799,13 +17799,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig + * def get_next_frame_info(self): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1043, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1029 ++ /* "vidcutter/libs/pympv/mpv.pyx":1031 + * + * @_errors + * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< +@@ -17824,7 +17824,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1043 ++/* "vidcutter/libs/pympv/mpv.pyx":1045 + * return err + * + * def get_next_frame_info(self): # <<<<<<<<<<<<<< +@@ -17861,7 +17861,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_next_frame_info", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1048 ++ /* "vidcutter/libs/pympv/mpv.pyx":1050 + * mpv_render_param param + * + * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO # <<<<<<<<<<<<<< +@@ -17870,7 +17870,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + */ + __pyx_v_param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO; + +- /* "vidcutter/libs/pympv/mpv.pyx":1049 ++ /* "vidcutter/libs/pympv/mpv.pyx":1051 + * + * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO + * param.data = &info # <<<<<<<<<<<<<< +@@ -17879,7 +17879,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + */ + __pyx_v_param.data = (&__pyx_v_info); + +- /* "vidcutter/libs/pympv/mpv.pyx":1050 ++ /* "vidcutter/libs/pympv/mpv.pyx":1052 + * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO + * param.data = &info + * with nogil: # <<<<<<<<<<<<<< +@@ -17894,7 +17894,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1051 ++ /* "vidcutter/libs/pympv/mpv.pyx":1053 + * param.data = &info + * with nogil: + * err = mpv_render_context_get_info(self._ctx, param) # <<<<<<<<<<<<<< +@@ -17904,7 +17904,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + __pyx_v_err = mpv_render_context_get_info(__pyx_v_self->_ctx, __pyx_v_param); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1050 ++ /* "vidcutter/libs/pympv/mpv.pyx":1052 + * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO + * param.data = &info + * with nogil: # <<<<<<<<<<<<<< +@@ -17923,7 +17923,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1052 ++ /* "vidcutter/libs/pympv/mpv.pyx":1054 + * with nogil: + * err = mpv_render_context_get_info(self._ctx, param) + * if err < 0: # <<<<<<<<<<<<<< +@@ -17933,16 +17933,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + __pyx_t_1 = ((__pyx_v_err < 0) != 0); + if (unlikely(__pyx_t_1)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1053 ++ /* "vidcutter/libs/pympv/mpv.pyx":1055 + * err = mpv_render_context_get_info(self._ctx, param) + * if err < 0: + * raise MPVError(err) # <<<<<<<<<<<<<< + * + * return RenderFrameInfo()._from_struct(&info) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1053, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1055, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +@@ -17957,14 +17957,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error) ++ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +- __PYX_ERR(0, 1053, __pyx_L1_error) ++ __PYX_ERR(0, 1055, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1052 ++ /* "vidcutter/libs/pympv/mpv.pyx":1054 + * with nogil: + * err = mpv_render_context_get_info(self._ctx, param) + * if err < 0: # <<<<<<<<<<<<<< +@@ -17973,7 +17973,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1055 ++ /* "vidcutter/libs/pympv/mpv.pyx":1057 + * raise MPVError(err) + * + * return RenderFrameInfo()._from_struct(&info) # <<<<<<<<<<<<<< +@@ -17981,16 +17981,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + * def set_update_callback(self, cb): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1057, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo *)((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2)->__pyx_vtab)->_from_struct(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2), (&__pyx_v_info)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error) ++ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo *)((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2)->__pyx_vtab)->_from_struct(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2), (&__pyx_v_info)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1057, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1043 ++ /* "vidcutter/libs/pympv/mpv.pyx":1045 + * return err + * + * def get_next_frame_info(self): # <<<<<<<<<<<<<< +@@ -18012,7 +18012,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1057 ++/* "vidcutter/libs/pympv/mpv.pyx":1059 + * return RenderFrameInfo()._from_struct(&info) + * + * def set_update_callback(self, cb): # <<<<<<<<<<<<<< +@@ -18038,7 +18038,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set_update_callback", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1058 ++ /* "vidcutter/libs/pympv/mpv.pyx":1060 + * + * def set_update_callback(self, cb): + * with nogil: # <<<<<<<<<<<<<< +@@ -18053,7 +18053,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1059 ++ /* "vidcutter/libs/pympv/mpv.pyx":1061 + * def set_update_callback(self, cb): + * with nogil: + * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) # <<<<<<<<<<<<<< +@@ -18063,7 +18063,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call + mpv_render_context_set_update_callback(__pyx_v_self->_ctx, (&__pyx_f_9vidcutter_4libs_3mpv__c_updatecb), ((void *)__pyx_v_cb)); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1058 ++ /* "vidcutter/libs/pympv/mpv.pyx":1060 + * + * def set_update_callback(self, cb): + * with nogil: # <<<<<<<<<<<<<< +@@ -18082,7 +18082,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1060 ++ /* "vidcutter/libs/pympv/mpv.pyx":1062 + * with nogil: + * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) + * self.update_cb = cb # <<<<<<<<<<<<<< +@@ -18095,7 +18095,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call + __Pyx_DECREF(__pyx_v_self->update_cb); + __pyx_v_self->update_cb = __pyx_v_cb; + +- /* "vidcutter/libs/pympv/mpv.pyx":1057 ++ /* "vidcutter/libs/pympv/mpv.pyx":1059 + * return RenderFrameInfo()._from_struct(&info) + * + * def set_update_callback(self, cb): # <<<<<<<<<<<<<< +@@ -18110,7 +18110,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1062 ++/* "vidcutter/libs/pympv/mpv.pyx":1064 + * self.update_cb = cb + * + * def update(self): # <<<<<<<<<<<<<< +@@ -18141,7 +18141,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("update", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1064 ++ /* "vidcutter/libs/pympv/mpv.pyx":1066 + * def update(self): + * cdef uint64_t ret + * with nogil: # <<<<<<<<<<<<<< +@@ -18156,7 +18156,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1065 ++ /* "vidcutter/libs/pympv/mpv.pyx":1067 + * cdef uint64_t ret + * with nogil: + * ret = mpv_render_context_update(self._ctx) # <<<<<<<<<<<<<< +@@ -18166,7 +18166,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct + __pyx_v_ret = mpv_render_context_update(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1064 ++ /* "vidcutter/libs/pympv/mpv.pyx":1066 + * def update(self): + * cdef uint64_t ret + * with nogil: # <<<<<<<<<<<<<< +@@ -18185,7 +18185,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1066 ++ /* "vidcutter/libs/pympv/mpv.pyx":1068 + * with nogil: + * ret = mpv_render_context_update(self._ctx) + * return ret # <<<<<<<<<<<<<< +@@ -18193,13 +18193,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct + * @_errors + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1068, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1062 ++ /* "vidcutter/libs/pympv/mpv.pyx":1064 + * self.update_cb = cb + * + * def update(self): # <<<<<<<<<<<<<< +@@ -18218,7 +18218,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1069 ++/* "vidcutter/libs/pympv/mpv.pyx":1071 + * + * @_errors + * def render(self, # <<<<<<<<<<<<<< +@@ -18244,7 +18244,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_opengl_fbo,&__pyx_n_s_flip_y,&__pyx_n_s_depth,&__pyx_n_s_block_for_target_time,&__pyx_n_s_skip_rendering,0}; + PyObject* values[5] = {0,0,0,0,0}; + +- /* "vidcutter/libs/pympv/mpv.pyx":1070 ++ /* "vidcutter/libs/pympv/mpv.pyx":1072 + * @_errors + * def render(self, + * opengl_fbo=None, # <<<<<<<<<<<<<< +@@ -18253,7 +18253,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec + */ + values[0] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":1071 ++ /* "vidcutter/libs/pympv/mpv.pyx":1073 + * def render(self, + * opengl_fbo=None, + * flip_y=False, # <<<<<<<<<<<<<< +@@ -18262,7 +18262,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec + */ + values[1] = ((PyObject *)Py_False); + +- /* "vidcutter/libs/pympv/mpv.pyx":1072 ++ /* "vidcutter/libs/pympv/mpv.pyx":1074 + * opengl_fbo=None, + * flip_y=False, + * depth=None, # <<<<<<<<<<<<<< +@@ -18271,7 +18271,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec + */ + values[2] = ((PyObject *)Py_None); + +- /* "vidcutter/libs/pympv/mpv.pyx":1073 ++ /* "vidcutter/libs/pympv/mpv.pyx":1075 + * flip_y=False, + * depth=None, + * block_for_target_time=True, # <<<<<<<<<<<<<< +@@ -18280,7 +18280,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec + */ + values[3] = ((PyObject *)Py_True); + +- /* "vidcutter/libs/pympv/mpv.pyx":1074 ++ /* "vidcutter/libs/pympv/mpv.pyx":1076 + * depth=None, + * block_for_target_time=True, + * skip_rendering=False): # <<<<<<<<<<<<<< +@@ -18338,7 +18338,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(0, 1069, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(0, 1071, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { +@@ -18364,7 +18364,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("render", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1069, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("render", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1071, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -18372,7 +18372,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_opengl_fbo, __pyx_v_flip_y, __pyx_v_depth, __pyx_v_block_for_target_time, __pyx_v_skip_rendering); + +- /* "vidcutter/libs/pympv/mpv.pyx":1069 ++ /* "vidcutter/libs/pympv/mpv.pyx":1071 + * + * @_errors + * def render(self, # <<<<<<<<<<<<<< +@@ -18402,29 +18402,29 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("render", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1079 ++ /* "vidcutter/libs/pympv/mpv.pyx":1081 + * mpv_opengl_fbo fbo + * + * params = _RenderParams() # <<<<<<<<<<<<<< + * + * if opengl_fbo: + */ +- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1081, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1081 ++ /* "vidcutter/libs/pympv/mpv.pyx":1083 + * params = _RenderParams() + * + * if opengl_fbo: # <<<<<<<<<<<<<< + * memset(&fbo, 0, sizeof(fbo)) + * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 + */ +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_opengl_fbo); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1081, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_opengl_fbo); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1083, __pyx_L1_error) + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1082 ++ /* "vidcutter/libs/pympv/mpv.pyx":1084 + * + * if opengl_fbo: + * memset(&fbo, 0, sizeof(fbo)) # <<<<<<<<<<<<<< +@@ -18433,23 +18433,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + */ + (void)(memset((&__pyx_v_fbo), 0, (sizeof(__pyx_v_fbo)))); + +- /* "vidcutter/libs/pympv/mpv.pyx":1083 ++ /* "vidcutter/libs/pympv/mpv.pyx":1085 + * if opengl_fbo: + * memset(&fbo, 0, sizeof(fbo)) + * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< + * fbo.w = opengl_fbo["w"] + * fbo.h = opengl_fbo["h"] + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1083, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1085, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1083, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1085, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1083, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1085, __pyx_L1_error) + if (!__pyx_t_2) { + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { +- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1083, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1085, __pyx_L1_error) + __pyx_t_3 = __pyx_t_5; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L4_bool_binop_done; +@@ -18458,49 +18458,49 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + __pyx_L4_bool_binop_done:; + __pyx_v_fbo.fbo = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":1084 ++ /* "vidcutter/libs/pympv/mpv.pyx":1086 + * memset(&fbo, 0, sizeof(fbo)) + * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 + * fbo.w = opengl_fbo["w"] # <<<<<<<<<<<<<< + * fbo.h = opengl_fbo["h"] + * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 + */ +- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1084, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1086, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1084, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1086, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_fbo.w = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":1085 ++ /* "vidcutter/libs/pympv/mpv.pyx":1087 + * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 + * fbo.w = opengl_fbo["w"] + * fbo.h = opengl_fbo["h"] # <<<<<<<<<<<<<< + * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) + */ +- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1085, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1087, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1085, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1087, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_fbo.h = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":1086 ++ /* "vidcutter/libs/pympv/mpv.pyx":1088 + * fbo.w = opengl_fbo["w"] + * fbo.h = opengl_fbo["h"] + * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) + * if flip_y: + */ +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1086, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1088, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1088, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1088, __pyx_L1_error) + if (!__pyx_t_2) { + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { +- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1086, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1088, __pyx_L1_error) + __pyx_t_3 = __pyx_t_5; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L6_bool_binop_done; +@@ -18509,18 +18509,18 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + __pyx_L6_bool_binop_done:; + __pyx_v_fbo.internal_format = __pyx_t_3; + +- /* "vidcutter/libs/pympv/mpv.pyx":1087 ++ /* "vidcutter/libs/pympv/mpv.pyx":1089 + * fbo.h = opengl_fbo["h"] + * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) # <<<<<<<<<<<<<< + * if flip_y: + * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_FBO, (&__pyx_v_fbo), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_FBO, (&__pyx_v_fbo), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1081 ++ /* "vidcutter/libs/pympv/mpv.pyx":1083 + * params = _RenderParams() + * + * if opengl_fbo: # <<<<<<<<<<<<<< +@@ -18529,28 +18529,28 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1088 ++ /* "vidcutter/libs/pympv/mpv.pyx":1090 + * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) + * if flip_y: # <<<<<<<<<<<<<< + * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) + * if depth is not None: + */ +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_flip_y); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1088, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_flip_y); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1090, __pyx_L1_error) + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1089 ++ /* "vidcutter/libs/pympv/mpv.pyx":1091 + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) + * if flip_y: + * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) # <<<<<<<<<<<<<< + * if depth is not None: + * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_FLIP_Y, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_FLIP_Y, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1088 ++ /* "vidcutter/libs/pympv/mpv.pyx":1090 + * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) + * if flip_y: # <<<<<<<<<<<<<< +@@ -18559,7 +18559,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1090 ++ /* "vidcutter/libs/pympv/mpv.pyx":1092 + * if flip_y: + * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) + * if depth is not None: # <<<<<<<<<<<<<< +@@ -18570,19 +18570,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + __pyx_t_6 = (__pyx_t_2 != 0); + if (__pyx_t_6) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1091 ++ /* "vidcutter/libs/pympv/mpv.pyx":1093 + * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) + * if depth is not None: + * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) # <<<<<<<<<<<<<< + * if not block_for_target_time: + * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) + */ +- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_depth); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1091, __pyx_L1_error) +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_DEPTH, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_depth); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1093, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_DEPTH, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1090 ++ /* "vidcutter/libs/pympv/mpv.pyx":1092 + * if flip_y: + * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) + * if depth is not None: # <<<<<<<<<<<<<< +@@ -18591,29 +18591,29 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1092 ++ /* "vidcutter/libs/pympv/mpv.pyx":1094 + * if depth is not None: + * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) + * if not block_for_target_time: # <<<<<<<<<<<<<< + * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) + * if skip_rendering: + */ +- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_block_for_target_time); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1092, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_block_for_target_time); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error) + __pyx_t_2 = ((!__pyx_t_6) != 0); + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1093 ++ /* "vidcutter/libs/pympv/mpv.pyx":1095 + * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) + * if not block_for_target_time: + * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) # <<<<<<<<<<<<<< + * if skip_rendering: + * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1095, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1092 ++ /* "vidcutter/libs/pympv/mpv.pyx":1094 + * if depth is not None: + * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) + * if not block_for_target_time: # <<<<<<<<<<<<<< +@@ -18622,28 +18622,28 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1094 ++ /* "vidcutter/libs/pympv/mpv.pyx":1096 + * if not block_for_target_time: + * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) + * if skip_rendering: # <<<<<<<<<<<<<< + * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) + * + */ +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skip_rendering); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skip_rendering); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1096, __pyx_L1_error) + if (__pyx_t_2) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1095 ++ /* "vidcutter/libs/pympv/mpv.pyx":1097 + * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) + * if skip_rendering: + * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) # <<<<<<<<<<<<<< + * + * with nogil: + */ +- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_SKIP_RENDERING, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1095, __pyx_L1_error) ++ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_SKIP_RENDERING, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1097, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1094 ++ /* "vidcutter/libs/pympv/mpv.pyx":1096 + * if not block_for_target_time: + * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) + * if skip_rendering: # <<<<<<<<<<<<<< +@@ -18652,7 +18652,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1097 ++ /* "vidcutter/libs/pympv/mpv.pyx":1099 + * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) + * + * with nogil: # <<<<<<<<<<<<<< +@@ -18667,7 +18667,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1098 ++ /* "vidcutter/libs/pympv/mpv.pyx":1100 + * + * with nogil: + * ret = mpv_render_context_render(self._ctx, params.params) # <<<<<<<<<<<<<< +@@ -18677,7 +18677,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + __pyx_v_ret = mpv_render_context_render(__pyx_v_self->_ctx, __pyx_v_params->params); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1097 ++ /* "vidcutter/libs/pympv/mpv.pyx":1099 + * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) + * + * with nogil: # <<<<<<<<<<<<<< +@@ -18696,7 +18696,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1099 ++ /* "vidcutter/libs/pympv/mpv.pyx":1101 + * with nogil: + * ret = mpv_render_context_render(self._ctx, params.params) + * return ret # <<<<<<<<<<<<<< +@@ -18704,13 +18704,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + * def report_swap(self): + */ + __Pyx_XDECREF(__pyx_r); +- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1069 ++ /* "vidcutter/libs/pympv/mpv.pyx":1071 + * + * @_errors + * def render(self, # <<<<<<<<<<<<<< +@@ -18731,7 +18731,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1101 ++/* "vidcutter/libs/pympv/mpv.pyx":1103 + * return ret + * + * def report_swap(self): # <<<<<<<<<<<<<< +@@ -18757,7 +18757,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("report_swap", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1102 ++ /* "vidcutter/libs/pympv/mpv.pyx":1104 + * + * def report_swap(self): + * with nogil: # <<<<<<<<<<<<<< +@@ -18772,7 +18772,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1103 ++ /* "vidcutter/libs/pympv/mpv.pyx":1105 + * def report_swap(self): + * with nogil: + * mpv_render_context_report_swap(self._ctx) # <<<<<<<<<<<<<< +@@ -18782,7 +18782,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st + mpv_render_context_report_swap(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1102 ++ /* "vidcutter/libs/pympv/mpv.pyx":1104 + * + * def report_swap(self): + * with nogil: # <<<<<<<<<<<<<< +@@ -18801,7 +18801,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1101 ++ /* "vidcutter/libs/pympv/mpv.pyx":1103 + * return ret + * + * def report_swap(self): # <<<<<<<<<<<<<< +@@ -18816,7 +18816,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1105 ++/* "vidcutter/libs/pympv/mpv.pyx":1107 + * mpv_render_context_report_swap(self._ctx) + * + * def free(self): # <<<<<<<<<<<<<< +@@ -18843,7 +18843,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ + int __pyx_t_1; + __Pyx_RefNannySetupContext("free", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1106 ++ /* "vidcutter/libs/pympv/mpv.pyx":1108 + * + * def free(self): + * if not self.inited: # <<<<<<<<<<<<<< +@@ -18853,7 +18853,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ + __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); + if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1107 ++ /* "vidcutter/libs/pympv/mpv.pyx":1109 + * def free(self): + * if not self.inited: + * return # <<<<<<<<<<<<<< +@@ -18864,7 +18864,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1106 ++ /* "vidcutter/libs/pympv/mpv.pyx":1108 + * + * def free(self): + * if not self.inited: # <<<<<<<<<<<<<< +@@ -18873,7 +18873,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1108 ++ /* "vidcutter/libs/pympv/mpv.pyx":1110 + * if not self.inited: + * return + * with nogil: # <<<<<<<<<<<<<< +@@ -18888,7 +18888,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1109 ++ /* "vidcutter/libs/pympv/mpv.pyx":1111 + * return + * with nogil: + * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< +@@ -18898,7 +18898,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ + mpv_render_context_free(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1108 ++ /* "vidcutter/libs/pympv/mpv.pyx":1110 + * if not self.inited: + * return + * with nogil: # <<<<<<<<<<<<<< +@@ -18917,7 +18917,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1110 ++ /* "vidcutter/libs/pympv/mpv.pyx":1112 + * with nogil: + * mpv_render_context_free(self._ctx) + * self.inited = False # <<<<<<<<<<<<<< +@@ -18926,7 +18926,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ + */ + __pyx_v_self->inited = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1105 ++ /* "vidcutter/libs/pympv/mpv.pyx":1107 + * mpv_render_context_report_swap(self._ctx) + * + * def free(self): # <<<<<<<<<<<<<< +@@ -18942,7 +18942,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1112 ++/* "vidcutter/libs/pympv/mpv.pyx":1114 + * self.inited = False + * + * def close(self): # <<<<<<<<<<<<<< +@@ -18969,7 +18969,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ + int __pyx_t_1; + __Pyx_RefNannySetupContext("close", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1113 ++ /* "vidcutter/libs/pympv/mpv.pyx":1115 + * + * def close(self): + * if not self.inited: # <<<<<<<<<<<<<< +@@ -18979,7 +18979,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ + __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); + if (__pyx_t_1) { + +- /* "vidcutter/libs/pympv/mpv.pyx":1114 ++ /* "vidcutter/libs/pympv/mpv.pyx":1116 + * def close(self): + * if not self.inited: + * return # <<<<<<<<<<<<<< +@@ -18990,7 +18990,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1113 ++ /* "vidcutter/libs/pympv/mpv.pyx":1115 + * + * def close(self): + * if not self.inited: # <<<<<<<<<<<<<< +@@ -18999,7 +18999,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1115 ++ /* "vidcutter/libs/pympv/mpv.pyx":1117 + * if not self.inited: + * return + * with nogil: # <<<<<<<<<<<<<< +@@ -19014,7 +19014,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1116 ++ /* "vidcutter/libs/pympv/mpv.pyx":1118 + * return + * with nogil: + * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< +@@ -19024,7 +19024,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ + mpv_render_context_free(__pyx_v_self->_ctx); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1115 ++ /* "vidcutter/libs/pympv/mpv.pyx":1117 + * if not self.inited: + * return + * with nogil: # <<<<<<<<<<<<<< +@@ -19043,7 +19043,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1117 ++ /* "vidcutter/libs/pympv/mpv.pyx":1119 + * with nogil: + * mpv_render_context_free(self._ctx) + * self.inited = False # <<<<<<<<<<<<<< +@@ -19052,7 +19052,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ + */ + __pyx_v_self->inited = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1112 ++ /* "vidcutter/libs/pympv/mpv.pyx":1114 + * self.inited = False + * + * def close(self): # <<<<<<<<<<<<<< +@@ -19068,7 +19068,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1119 ++/* "vidcutter/libs/pympv/mpv.pyx":1121 + * self.inited = False + * + * def __dealloc__(self): # <<<<<<<<<<<<<< +@@ -19097,14 +19097,14 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__dealloc__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1120 ++ /* "vidcutter/libs/pympv/mpv.pyx":1122 + * + * def __dealloc__(self): + * self.close() # <<<<<<<<<<<<<< + * + * cdef class OpenGLRenderContext(RenderContext): + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1120, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -19118,12 +19118,12 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1120, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1119 ++ /* "vidcutter/libs/pympv/mpv.pyx":1121 + * self.inited = False + * + * def __dealloc__(self): # <<<<<<<<<<<<<< +@@ -19255,7 +19255,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cyt + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1123 ++/* "vidcutter/libs/pympv/mpv.pyx":1125 + * + * cdef class OpenGLRenderContext(RenderContext): + * def __init__(self, mpv, # <<<<<<<<<<<<<< +@@ -19312,12 +19312,12 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObje + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_get_proc_address)) != 0)) kw_args--; + else { +- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, 1); __PYX_ERR(0, 1123, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, 1); __PYX_ERR(0, 1125, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2; +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 1123, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 1125, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) < 2) { + goto __pyx_L5_argtuple_error; +@@ -19330,7 +19330,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObje + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1123, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1125, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; + __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; +@@ -19360,39 +19360,39 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(struct + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1127 ++ /* "vidcutter/libs/pympv/mpv.pyx":1129 + * *args, **kwargs): + * init_params = { + * "get_proc_address": get_proc_address # <<<<<<<<<<<<<< + * } + * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, + */ +- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1127, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_get_proc_address, __pyx_v_get_proc_address) < 0) __PYX_ERR(0, 1127, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_get_proc_address, __pyx_v_get_proc_address) < 0) __PYX_ERR(0, 1129, __pyx_L1_error) + __pyx_v_init_params = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1129 ++ /* "vidcutter/libs/pympv/mpv.pyx":1131 + * "get_proc_address": get_proc_address + * } + * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< + * init_params, *args, **kwargs) + * + */ +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + +- /* "vidcutter/libs/pympv/mpv.pyx":1130 ++ /* "vidcutter/libs/pympv/mpv.pyx":1132 + * } + * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, + * init_params, *args, **kwargs) # <<<<<<<<<<<<<< + * + * class CallbackThread(Thread): + */ +- __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); +@@ -19407,42 +19407,42 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(struct + PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_init_params); + __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1129 ++ /* "vidcutter/libs/pympv/mpv.pyx":1131 + * "get_proc_address": get_proc_address + * } + * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< + * init_params, *args, **kwargs) + * + */ +- __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1130 ++ /* "vidcutter/libs/pympv/mpv.pyx":1132 + * } + * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, + * init_params, *args, **kwargs) # <<<<<<<<<<<<<< + * + * class CallbackThread(Thread): + */ +- __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1130, __pyx_L1_error) ++ __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1132, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + +- /* "vidcutter/libs/pympv/mpv.pyx":1129 ++ /* "vidcutter/libs/pympv/mpv.pyx":1131 + * "get_proc_address": get_proc_address + * } + * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< + * init_params, *args, **kwargs) + * + */ +- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1129, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1123 ++ /* "vidcutter/libs/pympv/mpv.pyx":1125 + * + * cdef class OpenGLRenderContext(RenderContext): + * def __init__(self, mpv, # <<<<<<<<<<<<<< +@@ -19579,7 +19579,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstat + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1133 ++/* "vidcutter/libs/pympv/mpv.pyx":1135 + * + * class CallbackThread(Thread): + * def __init__(self): # <<<<<<<<<<<<<< +@@ -19612,16 +19612,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1134 ++ /* "vidcutter/libs/pympv/mpv.pyx":1136 + * class CallbackThread(Thread): + * def __init__(self): + * Thread.__init__(self) # <<<<<<<<<<<<<< + * self.daemon = True + * self.lock = Semaphore() + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1134, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; +@@ -19636,28 +19636,28 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON + } + __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_self) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1135 ++ /* "vidcutter/libs/pympv/mpv.pyx":1137 + * def __init__(self): + * Thread.__init__(self) + * self.daemon = True # <<<<<<<<<<<<<< + * self.lock = Semaphore() + * self.lock.acquire(True) + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(0, 1137, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1136 ++ /* "vidcutter/libs/pympv/mpv.pyx":1138 + * Thread.__init__(self) + * self.daemon = True + * self.lock = Semaphore() # <<<<<<<<<<<<<< + * self.lock.acquire(True) + * self.callback = None + */ +- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1136, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { +@@ -19671,22 +19671,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON + } + __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1136, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lock, __pyx_t_1) < 0) __PYX_ERR(0, 1136, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lock, __pyx_t_1) < 0) __PYX_ERR(0, 1138, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1137 ++ /* "vidcutter/libs/pympv/mpv.pyx":1139 + * self.daemon = True + * self.lock = Semaphore() + * self.lock.acquire(True) # <<<<<<<<<<<<<< + * self.callback = None + * self.isshutdown = False + */ +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; +@@ -19701,30 +19701,30 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_2, Py_True); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1137, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1138 ++ /* "vidcutter/libs/pympv/mpv.pyx":1140 + * self.lock = Semaphore() + * self.lock.acquire(True) + * self.callback = None # <<<<<<<<<<<<<< + * self.isshutdown = False + * + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1138, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1140, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1139 ++ /* "vidcutter/libs/pympv/mpv.pyx":1141 + * self.lock.acquire(True) + * self.callback = None + * self.isshutdown = False # <<<<<<<<<<<<<< + * + * def shutdown(self): + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_False) < 0) __PYX_ERR(0, 1139, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_False) < 0) __PYX_ERR(0, 1141, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1133 ++ /* "vidcutter/libs/pympv/mpv.pyx":1135 + * + * class CallbackThread(Thread): + * def __init__(self): # <<<<<<<<<<<<<< +@@ -19747,7 +19747,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1141 ++/* "vidcutter/libs/pympv/mpv.pyx":1143 + * self.isshutdown = False + * + * def shutdown(self): # <<<<<<<<<<<<<< +@@ -19780,34 +19780,34 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHO + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("shutdown", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1142 ++ /* "vidcutter/libs/pympv/mpv.pyx":1144 + * + * def shutdown(self): + * self.isshutdown = True # <<<<<<<<<<<<<< + * self.callback = None + * self.lock.release() + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_True) < 0) __PYX_ERR(0, 1142, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_True) < 0) __PYX_ERR(0, 1144, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1143 ++ /* "vidcutter/libs/pympv/mpv.pyx":1145 + * def shutdown(self): + * self.isshutdown = True + * self.callback = None # <<<<<<<<<<<<<< + * self.lock.release() + * + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1143, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1145, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1144 ++ /* "vidcutter/libs/pympv/mpv.pyx":1146 + * self.isshutdown = True + * self.callback = None + * self.lock.release() # <<<<<<<<<<<<<< + * + * def call(self): + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1144, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1144, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; +@@ -19822,12 +19822,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHO + } + __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1144, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1141 ++ /* "vidcutter/libs/pympv/mpv.pyx":1143 + * self.isshutdown = False + * + * def shutdown(self): # <<<<<<<<<<<<<< +@@ -19850,7 +19850,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHO + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1146 ++/* "vidcutter/libs/pympv/mpv.pyx":1148 + * self.lock.release() + * + * def call(self): # <<<<<<<<<<<<<< +@@ -19883,16 +19883,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UN + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("call", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1147 ++ /* "vidcutter/libs/pympv/mpv.pyx":1149 + * + * def call(self): + * self.lock.release() # <<<<<<<<<<<<<< + * + * def set(self, callback): + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1147, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; +@@ -19907,12 +19907,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UN + } + __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1146 ++ /* "vidcutter/libs/pympv/mpv.pyx":1148 + * self.lock.release() + * + * def call(self): # <<<<<<<<<<<<<< +@@ -19935,7 +19935,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UN + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1149 ++/* "vidcutter/libs/pympv/mpv.pyx":1151 + * self.lock.release() + * + * def set(self, callback): # <<<<<<<<<<<<<< +@@ -19978,11 +19978,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject * + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; + else { +- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1149, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1151, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1149, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1151, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; +@@ -19995,7 +19995,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject * + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1149, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1151, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -20016,16 +20016,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNU + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("set", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1150 ++ /* "vidcutter/libs/pympv/mpv.pyx":1152 + * + * def set(self, callback): + * self.callback = callback # <<<<<<<<<<<<<< + * + * def run(self): + */ +- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 1150, __pyx_L1_error) ++ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 1152, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1149 ++ /* "vidcutter/libs/pympv/mpv.pyx":1151 + * self.lock.release() + * + * def set(self, callback): # <<<<<<<<<<<<<< +@@ -20045,7 +20045,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNU + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1152 ++/* "vidcutter/libs/pympv/mpv.pyx":1154 + * self.callback = callback + * + * def run(self): # <<<<<<<<<<<<<< +@@ -20082,7 +20082,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("run", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1153 ++ /* "vidcutter/libs/pympv/mpv.pyx":1155 + * + * def run(self): + * while not self.isshutdown: # <<<<<<<<<<<<<< +@@ -20090,23 +20090,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU + * self.mpv_callback(self.callback) if self.callback else None + */ + while (1) { +- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1153, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1155, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = ((!__pyx_t_2) != 0); + if (!__pyx_t_3) break; + +- /* "vidcutter/libs/pympv/mpv.pyx":1154 ++ /* "vidcutter/libs/pympv/mpv.pyx":1156 + * def run(self): + * while not self.isshutdown: + * self.lock.acquire(True) # <<<<<<<<<<<<<< + * self.mpv_callback(self.callback) if self.callback else None + * + */ +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1156, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_acquire); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1154, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_acquire); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1156, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; +@@ -20121,26 +20121,26 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU + } + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_5, Py_True); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1155 ++ /* "vidcutter/libs/pympv/mpv.pyx":1157 + * while not self.isshutdown: + * self.lock.acquire(True) + * self.mpv_callback(self.callback) if self.callback else None # <<<<<<<<<<<<<< + * + * def mpv_callback(self, callback): + */ +- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1157, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_3) { +- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mpv_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mpv_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { +@@ -20155,7 +20155,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU + __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) ++ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_1 = __pyx_t_5; +@@ -20167,7 +20167,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1152 ++ /* "vidcutter/libs/pympv/mpv.pyx":1154 + * self.callback = callback + * + * def run(self): # <<<<<<<<<<<<<< +@@ -20192,7 +20192,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1157 ++/* "vidcutter/libs/pympv/mpv.pyx":1159 + * self.mpv_callback(self.callback) if self.callback else None + * + * def mpv_callback(self, callback): # <<<<<<<<<<<<<< +@@ -20235,11 +20235,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback( + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; + else { +- __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, 1); __PYX_ERR(0, 1157, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, 1); __PYX_ERR(0, 1159, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { +- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mpv_callback") < 0)) __PYX_ERR(0, 1157, __pyx_L3_error) ++ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mpv_callback") < 0)) __PYX_ERR(0, 1159, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; +@@ -20252,7 +20252,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback( + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; +- __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1157, __pyx_L3_error) ++ __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1159, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); +@@ -20285,7 +20285,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("mpv_callback", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1158 ++ /* "vidcutter/libs/pympv/mpv.pyx":1160 + * + * def mpv_callback(self, callback): + * try: # <<<<<<<<<<<<<< +@@ -20301,7 +20301,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":1159 ++ /* "vidcutter/libs/pympv/mpv.pyx":1161 + * def mpv_callback(self, callback): + * try: + * callback() # <<<<<<<<<<<<<< +@@ -20321,12 +20321,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( + } + __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1159, __pyx_L3_error) ++ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1161, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1158 ++ /* "vidcutter/libs/pympv/mpv.pyx":1160 + * + * def mpv_callback(self, callback): + * try: # <<<<<<<<<<<<<< +@@ -20343,7 +20343,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1160 ++ /* "vidcutter/libs/pympv/mpv.pyx":1162 + * try: + * callback() + * except Exception as e: # <<<<<<<<<<<<<< +@@ -20353,29 +20353,29 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( + __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_7) { + __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); +- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 1160, __pyx_L5_except_error) ++ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 1162, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __pyx_v_e = __pyx_t_5; + +- /* "vidcutter/libs/pympv/mpv.pyx":1161 ++ /* "vidcutter/libs/pympv/mpv.pyx":1163 + * callback() + * except Exception as e: + * sys.stderr.write("pympv error during callback: %s\n" % e) # <<<<<<<<<<<<<< + * + * cdef void _c_callback(void* d) with gil: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1163, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_9); +- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_stderr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_stderr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1163, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_write); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_write); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1163, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; +- __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_pympv_error_during_callback_s, __pyx_v_e); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_pympv_error_during_callback_s, __pyx_v_e); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1163, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { +@@ -20390,7 +20390,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( + __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; +- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1161, __pyx_L5_except_error) ++ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1163, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +@@ -20402,7 +20402,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + +- /* "vidcutter/libs/pympv/mpv.pyx":1158 ++ /* "vidcutter/libs/pympv/mpv.pyx":1160 + * + * def mpv_callback(self, callback): + * try: # <<<<<<<<<<<<<< +@@ -20422,7 +20422,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( + __pyx_L8_try_end:; + } + +- /* "vidcutter/libs/pympv/mpv.pyx":1157 ++ /* "vidcutter/libs/pympv/mpv.pyx":1159 + * self.mpv_callback(self.callback) if self.callback else None + * + * def mpv_callback(self, callback): # <<<<<<<<<<<<<< +@@ -20450,7 +20450,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( + return __pyx_r; + } + +-/* "vidcutter/libs/pympv/mpv.pyx":1163 ++/* "vidcutter/libs/pympv/mpv.pyx":1165 + * sys.stderr.write("pympv error during callback: %s\n" % e) + * + * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< +@@ -20474,7 +20474,7 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { + #endif + __Pyx_RefNannySetupContext("_c_callback", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":1164 ++ /* "vidcutter/libs/pympv/mpv.pyx":1166 + * + * cdef void _c_callback(void* d) with gil: + * cdef uint64_t name = d # <<<<<<<<<<<<<< +@@ -20483,15 +20483,15 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { + */ + __pyx_v_name = ((uint64_t)__pyx_v_d); + +- /* "vidcutter/libs/pympv/mpv.pyx":1165 ++ /* "vidcutter/libs/pympv/mpv.pyx":1167 + * cdef void _c_callback(void* d) with gil: + * cdef uint64_t name = d + * callback = _callbacks.get(name) # <<<<<<<<<<<<<< + * callback.call() + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1165, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1165, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -20506,18 +20506,18 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_callback = __pyx_t_1; + __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1166 ++ /* "vidcutter/libs/pympv/mpv.pyx":1168 + * cdef uint64_t name = d + * callback = _callbacks.get(name) + * callback.call() # <<<<<<<<<<<<<< + */ +- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_callback, __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1166, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_callback, __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { +@@ -20531,12 +20531,12 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; +- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error) ++ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1163 ++ /* "vidcutter/libs/pympv/mpv.pyx":1165 + * sys.stderr.write("pympv error during callback: %s\n" % e) + * + * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< +@@ -24444,13 +24444,13 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { + {0, 0, 0, 0, 0, 0, 0} + }; + static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { +- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 44, __pyx_L1_error) +- __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 346, __pyx_L1_error) +- __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(0, 58, __pyx_L1_error) +- __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(0, 66, __pyx_L1_error) +- __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 222, __pyx_L1_error) +- __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 303, __pyx_L1_error) +- __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 475, __pyx_L1_error) ++ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 46, __pyx_L1_error) ++ __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 348, __pyx_L1_error) ++ __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(0, 60, __pyx_L1_error) ++ __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(0, 68, __pyx_L1_error) ++ __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 224, __pyx_L1_error) ++ __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 305, __pyx_L1_error) ++ __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 477, __pyx_L1_error) + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) + return 0; + __pyx_L1_error:; +@@ -24461,17 +24461,17 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + +- /* "vidcutter/libs/pympv/mpv.pyx":319 ++ /* "vidcutter/libs/pympv/mpv.pyx":321 + * + * def _errors(fn): + * def wrapped(*k, **kw): # <<<<<<<<<<<<<< + * v = fn(*k, **kw) + * if v < 0: + */ +- __pyx_tuple_ = PyTuple_Pack(3, __pyx_n_s_k, __pyx_n_s_kw, __pyx_n_s_v); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 319, __pyx_L1_error) ++ __pyx_tuple_ = PyTuple_Pack(3, __pyx_n_s_k, __pyx_n_s_kw, __pyx_n_s_v); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 321, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple_); + __Pyx_GIVEREF(__pyx_tuple_); +- __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_wrapped, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 319, __pyx_L1_error) ++ __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_wrapped, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 321, __pyx_L1_error) + + /* "(tree fragment)":2 + * def __reduce_cython__(self): +@@ -24511,80 +24511,80 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_GOTREF(__pyx_tuple__6); + __Pyx_GIVEREF(__pyx_tuple__6); + +- /* "vidcutter/libs/pympv/mpv.pyx":992 ++ /* "vidcutter/libs/pympv/mpv.pyx":994 + * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) + * if drm_display: + * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< + * drm_params.crtc_id = drm_display.get("crtc_id", -1) + * drm_params.connector_id = drm_display.get("connector_id", -1) + */ +- __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 992, __pyx_L1_error) ++ __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 994, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + +- /* "vidcutter/libs/pympv/mpv.pyx":993 ++ /* "vidcutter/libs/pympv/mpv.pyx":995 + * if drm_display: + * drm_params.fd = drm_display.get("fd", -1) + * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< + * drm_params.connector_id = drm_display.get("connector_id", -1) + * arp = drm_display.get("atomic_request_ptr", None) + */ +- __pyx_tuple__8 = PyTuple_Pack(2, __pyx_n_s_crtc_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 993, __pyx_L1_error) ++ __pyx_tuple__8 = PyTuple_Pack(2, __pyx_n_s_crtc_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 995, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); + +- /* "vidcutter/libs/pympv/mpv.pyx":994 ++ /* "vidcutter/libs/pympv/mpv.pyx":996 + * drm_params.fd = drm_display.get("fd", -1) + * drm_params.crtc_id = drm_display.get("crtc_id", -1) + * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< + * arp = drm_display.get("atomic_request_ptr", None) + * if arp is not None: + */ +- __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_s_connector_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 994, __pyx_L1_error) ++ __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_s_connector_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 996, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); + +- /* "vidcutter/libs/pympv/mpv.pyx":995 ++ /* "vidcutter/libs/pympv/mpv.pyx":997 + * drm_params.crtc_id = drm_display.get("crtc_id", -1) + * drm_params.connector_id = drm_display.get("connector_id", -1) + * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< + * if arp is not None: + * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") + */ +- __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_atomic_request_ptr, Py_None); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 995, __pyx_L1_error) ++ __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_atomic_request_ptr, Py_None); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 997, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__10); + __Pyx_GIVEREF(__pyx_tuple__10); + +- /* "vidcutter/libs/pympv/mpv.pyx":998 ++ /* "vidcutter/libs/pympv/mpv.pyx":1000 + * if arp is not None: + * 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: + */ +- __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_render_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 998, __pyx_L1_error) ++ __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_render_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 1000, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__11); + __Pyx_GIVEREF(__pyx_tuple__11); + +- /* "vidcutter/libs/pympv/mpv.pyx":1083 ++ /* "vidcutter/libs/pympv/mpv.pyx":1085 + * if opengl_fbo: + * memset(&fbo, 0, sizeof(fbo)) + * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< + * fbo.w = opengl_fbo["w"] + * fbo.h = opengl_fbo["h"] + */ +- __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_fbo, __pyx_int_0); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1083, __pyx_L1_error) ++ __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_fbo, __pyx_int_0); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1085, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); + +- /* "vidcutter/libs/pympv/mpv.pyx":1086 ++ /* "vidcutter/libs/pympv/mpv.pyx":1088 + * fbo.w = opengl_fbo["w"] + * fbo.h = opengl_fbo["h"] + * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< + * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) + * if flip_y: + */ +- __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_internal_format, __pyx_int_0); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 1086, __pyx_L1_error) ++ __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_internal_format, __pyx_int_0); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 1088, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); + +@@ -24626,183 +24626,183 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); + +- /* "vidcutter/libs/pympv/mpv.pyx":52 ++ /* "vidcutter/libs/pympv/mpv.pyx":54 + * void Py_Initialize() + * + * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< + * _strdec_err = "surrogateescape" if _is_py3 else "strict" + * # mpv -> Python + */ +- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 52, __pyx_L1_error) ++ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); + +- /* "vidcutter/libs/pympv/mpv.pyx":55 ++ /* "vidcutter/libs/pympv/mpv.pyx":57 + * _strdec_err = "surrogateescape" if _is_py3 else "strict" + * # mpv -> Python + * def _strdec(s): # <<<<<<<<<<<<<< + * try: + * return s.decode("utf-8", _strdec_err) + */ +- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 55, __pyx_L1_error) ++ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); +- __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strdec, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 55, __pyx_L1_error) ++ __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strdec, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 57, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":63 ++ /* "vidcutter/libs/pympv/mpv.pyx":65 + * + * # Python -> mpv + * def _strenc(s): # <<<<<<<<<<<<<< + * try: + * return s.encode("utf-8", _strdec_err) + */ +- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 63, __pyx_L1_error) ++ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); +- __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strenc, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 63, __pyx_L1_error) ++ __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strenc, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 65, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":318 ++ /* "vidcutter/libs/pympv/mpv.pyx":320 + * + * + * def _errors(fn): # <<<<<<<<<<<<<< + * def wrapped(*k, **kw): + * v = fn(*k, **kw) + */ +- __pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_fn, __pyx_n_s_wrapped, __pyx_n_s_wrapped); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 318, __pyx_L1_error) ++ __pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_fn, __pyx_n_s_wrapped, __pyx_n_s_wrapped); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 320, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); +- __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_errors, 318, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 318, __pyx_L1_error) ++ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_errors, 320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 320, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":329 ++ /* "vidcutter/libs/pympv/mpv.pyx":331 + * code = None + * + * def __init__(self, e): # <<<<<<<<<<<<<< + * self.code = e + * cdef const char* err_c + */ +- __pyx_tuple__25 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_e, __pyx_n_s_err_c, __pyx_n_s_e_i); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 329, __pyx_L1_error) ++ __pyx_tuple__25 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_e, __pyx_n_s_err_c, __pyx_n_s_e_i); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 331, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); +- __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 329, __pyx_L1_error) ++ __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 331, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":346 ++ /* "vidcutter/libs/pympv/mpv.pyx":348 + * cdef _reply_userdatas = dict() + * + * class _ReplyUserData(object): # <<<<<<<<<<<<<< + * def __init__(self, data): + * self.counter = 0 + */ +- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 346, __pyx_L1_error) ++ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 348, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + +- /* "vidcutter/libs/pympv/mpv.pyx":347 ++ /* "vidcutter/libs/pympv/mpv.pyx":349 + * + * class _ReplyUserData(object): + * def __init__(self, data): # <<<<<<<<<<<<<< + * self.counter = 0 + * self.data = data + */ +- __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 347, __pyx_L1_error) ++ __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); +- __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 347, __pyx_L1_error) ++ __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 349, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":352 ++ /* "vidcutter/libs/pympv/mpv.pyx":354 + * self.observed = False + * + * def add(self): # <<<<<<<<<<<<<< + * self.counter += 1 + * + */ +- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 352, __pyx_L1_error) ++ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 354, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); +- __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_add, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 352, __pyx_L1_error) ++ __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_add, 354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 354, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":355 ++ /* "vidcutter/libs/pympv/mpv.pyx":357 + * self.counter += 1 + * + * def remove(self): # <<<<<<<<<<<<<< + * self.counter -= 1 + * + */ +- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 355, __pyx_L1_error) ++ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 357, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); +- __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_remove, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 355, __pyx_L1_error) ++ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_remove, 357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 357, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1133 ++ /* "vidcutter/libs/pympv/mpv.pyx":1135 + * + * class CallbackThread(Thread): + * def __init__(self): # <<<<<<<<<<<<<< + * Thread.__init__(self) + * self.daemon = True + */ +- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1133, __pyx_L1_error) ++ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__34); + __Pyx_GIVEREF(__pyx_tuple__34); +- __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 1133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1133, __pyx_L1_error) ++ __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 1135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1135, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1141 ++ /* "vidcutter/libs/pympv/mpv.pyx":1143 + * self.isshutdown = False + * + * def shutdown(self): # <<<<<<<<<<<<<< + * self.isshutdown = True + * self.callback = None + */ +- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1141, __pyx_L1_error) ++ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); +- __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_shutdown, 1141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1141, __pyx_L1_error) ++ __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_shutdown, 1143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1143, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1146 ++ /* "vidcutter/libs/pympv/mpv.pyx":1148 + * self.lock.release() + * + * def call(self): # <<<<<<<<<<<<<< + * self.lock.release() + * + */ +- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1146, __pyx_L1_error) ++ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); +- __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_call, 1146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1146, __pyx_L1_error) ++ __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_call, 1148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1148, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1149 ++ /* "vidcutter/libs/pympv/mpv.pyx":1151 + * self.lock.release() + * + * def set(self, callback): # <<<<<<<<<<<<<< + * self.callback = callback + * + */ +- __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 1149, __pyx_L1_error) ++ __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 1151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__40); + __Pyx_GIVEREF(__pyx_tuple__40); +- __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_set, 1149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 1149, __pyx_L1_error) ++ __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_set, 1151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 1151, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1152 ++ /* "vidcutter/libs/pympv/mpv.pyx":1154 + * self.callback = callback + * + * def run(self): # <<<<<<<<<<<<<< + * while not self.isshutdown: + * self.lock.acquire(True) + */ +- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1152, __pyx_L1_error) ++ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__42); + __Pyx_GIVEREF(__pyx_tuple__42); +- __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_run, 1152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 1152, __pyx_L1_error) ++ __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_run, 1154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 1154, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":1157 ++ /* "vidcutter/libs/pympv/mpv.pyx":1159 + * self.mpv_callback(self.callback) if self.callback else None + * + * def mpv_callback(self, callback): # <<<<<<<<<<<<<< + * try: + * callback() + */ +- __pyx_tuple__44 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_callback, __pyx_n_s_e); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1157, __pyx_L1_error) ++ __pyx_tuple__44 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_callback, __pyx_n_s_e); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__44); + __Pyx_GIVEREF(__pyx_tuple__44); +- __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_mpv_callback, 1157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 1157, __pyx_L1_error) ++ __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_mpv_callback, 1159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 1159, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< +@@ -24840,9 +24840,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) +- __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_32 = PyInt_FromLong(32); if (unlikely(!__pyx_int_32)) __PYX_ERR(0, 1, __pyx_L1_error) ++ __pyx_int_109 = PyInt_FromLong(109); if (unlikely(!__pyx_int_109)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_5713169 = PyInt_FromLong(5713169L); if (unlikely(!__pyx_int_5713169)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_90958262 = PyInt_FromLong(90958262L); if (unlikely(!__pyx_int_90958262)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_142036910 = PyInt_FromLong(142036910L); if (unlikely(!__pyx_int_142036910)) __PYX_ERR(0, 1, __pyx_L1_error) +@@ -24897,122 +24897,122 @@ static int __Pyx_modinit_type_init_code(void) { + /*--- Type init code ---*/ + __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; + __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *, struct mpv_event_end_file *))__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 158, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_EndOfFileReached, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 158, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_EndOfFileReached, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 158, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 158, __pyx_L1_error) + __pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached; + __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage = &__pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; + __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *, struct mpv_event_log_message *))__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 184, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LogMessage, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 184, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LogMessage, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 184, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 184, __pyx_L1_error) + __pyx_ptype_9vidcutter_4libs_3mpv_LogMessage = &__pyx_type_9vidcutter_4libs_3mpv_LogMessage; + __pyx_vtabptr_9vidcutter_4libs_3mpv_Property = &__pyx_vtable_9vidcutter_4libs_3mpv_Property; + __pyx_vtable_9vidcutter_4libs_3mpv_Property._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *, struct mpv_event_property *))__pyx_f_9vidcutter_4libs_3mpv_8Property__init; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 245, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv_Property.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Property, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 245, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Property, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 245, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 245, __pyx_L1_error) + __pyx_ptype_9vidcutter_4libs_3mpv_Property = &__pyx_type_9vidcutter_4libs_3mpv_Property; + __pyx_vtabptr_9vidcutter_4libs_3mpv_Event = &__pyx_vtable_9vidcutter_4libs_3mpv_Event; + __pyx_vtable_9vidcutter_4libs_3mpv_Event._data = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *))__pyx_f_9vidcutter_4libs_3mpv_5Event__data; + __pyx_vtable_9vidcutter_4libs_3mpv_Event._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_5Event__init; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 258, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv_Event.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Event, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 258, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Event, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 258, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 258, __pyx_L1_error) + __pyx_ptype_9vidcutter_4libs_3mpv_Event = &__pyx_type_9vidcutter_4libs_3mpv_Event; + __pyx_vtabptr_9vidcutter_4libs_3mpv_Context = &__pyx_vtable_9vidcutter_4libs_3mpv_Context; + __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_list = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list; + __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_map = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map; + __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_native_value = (struct mpv_node (*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value; + __pyx_vtable_9vidcutter_4libs_3mpv_Context._free_native_value = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, struct mpv_node))__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 361, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv_Context.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Context, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 361, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Context, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 361, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 361, __pyx_L1_error) + __pyx_ptype_9vidcutter_4libs_3mpv_Context = &__pyx_type_9vidcutter_4libs_3mpv_Context; + __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams = &__pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; + __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_voidp = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, void *, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp; + __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_int = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, int))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int; + __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_string = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, char *))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 883, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderParams, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 883, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderParams, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 883, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_ptype_9vidcutter_4libs_3mpv__RenderParams = &__pyx_type_9vidcutter_4libs_3mpv__RenderParams; + __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; + __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo._from_struct = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *, struct mpv_render_frame_info *))__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 930, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } +- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) ++ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 930, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 930, __pyx_L1_error) + __pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 939, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 939, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 939, __pyx_L1_error) + __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext = &__pyx_type_9vidcutter_4libs_3mpv_RenderContext; + __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_base = __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1124, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } +- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLRenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) +- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) ++ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLRenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1124, __pyx_L1_error) ++ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1124, __pyx_L1_error) + __pyx_ptype_9vidcutter_4libs_3mpv_OpenGLRenderContext = &__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext; +- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors) < 0) __PYX_ERR(0, 318, __pyx_L1_error) ++ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors) < 0) __PYX_ERR(0, 320, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_print = 0; + #endif +@@ -25315,29 +25315,29 @@ if (!__Pyx_RefNanny) { + * __version__ = "0.3.0" + * __author__ = "Andre D" # <<<<<<<<<<<<<< + * +- * _REQUIRED_CAPI_MAJOR = 2 ++ * #_REQUIRED_CAPI_MAJOR = 2 + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Andre_D) < 0) __PYX_ERR(0, 31, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":33 +- * __author__ = "Andre D" +- * +- * _REQUIRED_CAPI_MAJOR = 2 # <<<<<<<<<<<<<< +- * _MIN_CAPI_MINOR = 0 ++ /* "vidcutter/libs/pympv/mpv.pyx":35 ++ * #_REQUIRED_CAPI_MAJOR = 2 ++ * #_MIN_CAPI_MINOR = 0 ++ * _REQUIRED_CAPI_MAJOR = 1 # <<<<<<<<<<<<<< ++ * _MIN_CAPI_MINOR = 109 + * + */ +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_int_2) < 0) __PYX_ERR(0, 33, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_int_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":34 +- * +- * _REQUIRED_CAPI_MAJOR = 2 +- * _MIN_CAPI_MINOR = 0 # <<<<<<<<<<<<<< ++ /* "vidcutter/libs/pympv/mpv.pyx":36 ++ * #_MIN_CAPI_MINOR = 0 ++ * _REQUIRED_CAPI_MAJOR = 1 ++ * _MIN_CAPI_MINOR = 109 # <<<<<<<<<<<<<< + * + * cdef unsigned long _CAPI_VERSION + */ +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MIN_CAPI_MINOR, __pyx_int_0) < 0) __PYX_ERR(0, 34, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_MIN_CAPI_MINOR, __pyx_int_109) < 0) __PYX_ERR(0, 36, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":37 ++ /* "vidcutter/libs/pympv/mpv.pyx":39 + * + * cdef unsigned long _CAPI_VERSION + * with nogil: # <<<<<<<<<<<<<< +@@ -25352,7 +25352,7 @@ if (!__Pyx_RefNanny) { + #endif + /*try:*/ { + +- /* "vidcutter/libs/pympv/mpv.pyx":38 ++ /* "vidcutter/libs/pympv/mpv.pyx":40 + * cdef unsigned long _CAPI_VERSION + * with nogil: + * _CAPI_VERSION = mpv_client_api_version() # <<<<<<<<<<<<<< +@@ -25362,7 +25362,7 @@ if (!__Pyx_RefNanny) { + __pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION = mpv_client_api_version(); + } + +- /* "vidcutter/libs/pympv/mpv.pyx":37 ++ /* "vidcutter/libs/pympv/mpv.pyx":39 + * + * cdef unsigned long _CAPI_VERSION + * with nogil: # <<<<<<<<<<<<<< +@@ -25381,80 +25381,80 @@ if (!__Pyx_RefNanny) { + } + } + +- /* "vidcutter/libs/pympv/mpv.pyx":40 ++ /* "vidcutter/libs/pympv/mpv.pyx":42 + * _CAPI_VERSION = mpv_client_api_version() + * + * _CAPI_MAJOR = _CAPI_VERSION >> 16 # <<<<<<<<<<<<<< + * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF + * + */ +- __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION >> 16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION >> 16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MAJOR, __pyx_t_2) < 0) __PYX_ERR(0, 40, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MAJOR, __pyx_t_2) < 0) __PYX_ERR(0, 42, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":41 ++ /* "vidcutter/libs/pympv/mpv.pyx":43 + * + * _CAPI_MAJOR = _CAPI_VERSION >> 16 + * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF # <<<<<<<<<<<<<< + * + * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: + */ +- __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION & 0xFFFF)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) ++ __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION & 0xFFFF)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MINOR, __pyx_t_2) < 0) __PYX_ERR(0, 41, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MINOR, __pyx_t_2) < 0) __PYX_ERR(0, 43, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":43 ++ /* "vidcutter/libs/pympv/mpv.pyx":45 + * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF + * + * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< + * raise ImportError( + * "libmpv version is incorrect. Required %d.%d got %d.%d." % + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!__pyx_t_5) { + } else { + __pyx_t_3 = __pyx_t_5; + goto __pyx_L6_bool_binop_done; + } +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) ++ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 45, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_3 = __pyx_t_5; + __pyx_L6_bool_binop_done:; + if (unlikely(__pyx_t_3)) { + +- /* "vidcutter/libs/pympv/mpv.pyx":46 ++ /* "vidcutter/libs/pympv/mpv.pyx":48 + * raise ImportError( + * "libmpv version is incorrect. Required %d.%d got %d.%d." % + * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) # <<<<<<<<<<<<<< + * ) + * + */ +- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); +- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 46, __pyx_L1_error) ++ __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); +@@ -25469,32 +25469,32 @@ if (!__Pyx_RefNanny) { + __pyx_t_4 = 0; + __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":45 ++ /* "vidcutter/libs/pympv/mpv.pyx":47 + * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: + * raise ImportError( + * "libmpv version is incorrect. Required %d.%d got %d.%d." % # <<<<<<<<<<<<<< + * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) + * ) + */ +- __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 45, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":44 ++ /* "vidcutter/libs/pympv/mpv.pyx":46 + * + * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: + * raise ImportError( # <<<<<<<<<<<<<< + * "libmpv version is incorrect. Required %d.%d got %d.%d." % + * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) + */ +- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ImportError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 44, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ImportError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_Raise(__pyx_t_7, 0, 0, 0); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __PYX_ERR(0, 44, __pyx_L1_error) ++ __PYX_ERR(0, 46, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":43 ++ /* "vidcutter/libs/pympv/mpv.pyx":45 + * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF + * + * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< +@@ -25503,33 +25503,33 @@ if (!__Pyx_RefNanny) { + */ + } + +- /* "vidcutter/libs/pympv/mpv.pyx":52 ++ /* "vidcutter/libs/pympv/mpv.pyx":54 + * void Py_Initialize() + * + * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< + * _strdec_err = "surrogateescape" if _is_py3 else "strict" + * # mpv -> Python + */ +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_version_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 52, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_version_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +- __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_tuple__18, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) ++ __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_tuple__18, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_py3, __pyx_t_7) < 0) __PYX_ERR(0, 52, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_py3, __pyx_t_7) < 0) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":53 ++ /* "vidcutter/libs/pympv/mpv.pyx":55 + * + * _is_py3 = sys.version_info >= (3,) + * _strdec_err = "surrogateescape" if _is_py3 else "strict" # <<<<<<<<<<<<<< + * # mpv -> Python + * def _strdec(s): + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_py3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_py3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) ++ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_3) { + __Pyx_INCREF(__pyx_n_s_surrogateescape); +@@ -25538,34 +25538,34 @@ if (!__Pyx_RefNanny) { + __Pyx_INCREF(__pyx_n_s_strict); + __pyx_t_7 = __pyx_n_s_strict; + } +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec_err, __pyx_t_7) < 0) __PYX_ERR(0, 53, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec_err, __pyx_t_7) < 0) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":55 ++ /* "vidcutter/libs/pympv/mpv.pyx":57 + * _strdec_err = "surrogateescape" if _is_py3 else "strict" + * # mpv -> Python + * def _strdec(s): # <<<<<<<<<<<<<< + * try: + * return s.decode("utf-8", _strdec_err) + */ +- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_1_strdec, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 55, __pyx_L1_error) ++ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_1_strdec, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec, __pyx_t_7) < 0) __PYX_ERR(0, 55, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec, __pyx_t_7) < 0) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":63 ++ /* "vidcutter/libs/pympv/mpv.pyx":65 + * + * # Python -> mpv + * def _strenc(s): # <<<<<<<<<<<<<< + * try: + * return s.encode("utf-8", _strdec_err) + */ +- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_3_strenc, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error) ++ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_3_strenc, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strenc, __pyx_t_7) < 0) __PYX_ERR(0, 63, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strenc, __pyx_t_7) < 0) __PYX_ERR(0, 65, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":70 ++ /* "vidcutter/libs/pympv/mpv.pyx":72 + * return s + * + * Py_Initialize() # <<<<<<<<<<<<<< +@@ -25574,883 +25574,883 @@ if (!__Pyx_RefNanny) { + */ + Py_Initialize(); + +- /* "vidcutter/libs/pympv/mpv.pyx":72 ++ /* "vidcutter/libs/pympv/mpv.pyx":74 + * Py_Initialize() + * + * class Errors: # <<<<<<<<<<<<<< + * """Set of known error codes from MpvError and Event responses. + * + */ +- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Errors, __pyx_n_s_Errors, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_error_codes_from_Mp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 72, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Errors, __pyx_n_s_Errors, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_error_codes_from_Mp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + +- /* "vidcutter/libs/pympv/mpv.pyx":79 ++ /* "vidcutter/libs/pympv/mpv.pyx":81 + * You should handle the possibility that error codes may not be any of these values. + * """ + * success = MPV_ERROR_SUCCESS # <<<<<<<<<<<<<< + * queue_full = MPV_ERROR_EVENT_QUEUE_FULL + * nomem = MPV_ERROR_NOMEM + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_SUCCESS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_SUCCESS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_success, __pyx_t_6) < 0) __PYX_ERR(0, 79, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_success, __pyx_t_6) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":80 ++ /* "vidcutter/libs/pympv/mpv.pyx":82 + * """ + * success = MPV_ERROR_SUCCESS + * queue_full = MPV_ERROR_EVENT_QUEUE_FULL # <<<<<<<<<<<<<< + * nomem = MPV_ERROR_NOMEM + * uninitialized = MPV_ERROR_UNINITIALIZED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_EVENT_QUEUE_FULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_EVENT_QUEUE_FULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_full, __pyx_t_6) < 0) __PYX_ERR(0, 80, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_full, __pyx_t_6) < 0) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":81 ++ /* "vidcutter/libs/pympv/mpv.pyx":83 + * success = MPV_ERROR_SUCCESS + * queue_full = MPV_ERROR_EVENT_QUEUE_FULL + * nomem = MPV_ERROR_NOMEM # <<<<<<<<<<<<<< + * uninitialized = MPV_ERROR_UNINITIALIZED + * invalid_parameter = MPV_ERROR_INVALID_PARAMETER + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOMEM); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOMEM); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nomem, __pyx_t_6) < 0) __PYX_ERR(0, 81, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nomem, __pyx_t_6) < 0) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":82 ++ /* "vidcutter/libs/pympv/mpv.pyx":84 + * queue_full = MPV_ERROR_EVENT_QUEUE_FULL + * nomem = MPV_ERROR_NOMEM + * uninitialized = MPV_ERROR_UNINITIALIZED # <<<<<<<<<<<<<< + * invalid_parameter = MPV_ERROR_INVALID_PARAMETER + * not_found = MPV_ERROR_OPTION_NOT_FOUND + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNINITIALIZED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNINITIALIZED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_uninitialized, __pyx_t_6) < 0) __PYX_ERR(0, 82, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_uninitialized, __pyx_t_6) < 0) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":83 ++ /* "vidcutter/libs/pympv/mpv.pyx":85 + * nomem = MPV_ERROR_NOMEM + * uninitialized = MPV_ERROR_UNINITIALIZED + * invalid_parameter = MPV_ERROR_INVALID_PARAMETER # <<<<<<<<<<<<<< + * not_found = MPV_ERROR_OPTION_NOT_FOUND + * option_format = MPV_ERROR_OPTION_FORMAT + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_INVALID_PARAMETER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_INVALID_PARAMETER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_parameter, __pyx_t_6) < 0) __PYX_ERR(0, 83, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_parameter, __pyx_t_6) < 0) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":84 ++ /* "vidcutter/libs/pympv/mpv.pyx":86 + * uninitialized = MPV_ERROR_UNINITIALIZED + * invalid_parameter = MPV_ERROR_INVALID_PARAMETER + * not_found = MPV_ERROR_OPTION_NOT_FOUND # <<<<<<<<<<<<<< + * option_format = MPV_ERROR_OPTION_FORMAT + * option_error = MPV_ERROR_OPTION_ERROR + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 84, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":85 ++ /* "vidcutter/libs/pympv/mpv.pyx":87 + * invalid_parameter = MPV_ERROR_INVALID_PARAMETER + * not_found = MPV_ERROR_OPTION_NOT_FOUND + * option_format = MPV_ERROR_OPTION_FORMAT # <<<<<<<<<<<<<< + * option_error = MPV_ERROR_OPTION_ERROR + * not_found = MPV_ERROR_PROPERTY_NOT_FOUND + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_format, __pyx_t_6) < 0) __PYX_ERR(0, 85, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_format, __pyx_t_6) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":86 ++ /* "vidcutter/libs/pympv/mpv.pyx":88 + * not_found = MPV_ERROR_OPTION_NOT_FOUND + * option_format = MPV_ERROR_OPTION_FORMAT + * option_error = MPV_ERROR_OPTION_ERROR # <<<<<<<<<<<<<< + * not_found = MPV_ERROR_PROPERTY_NOT_FOUND + * property_format = MPV_ERROR_PROPERTY_FORMAT + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_error, __pyx_t_6) < 0) __PYX_ERR(0, 86, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_error, __pyx_t_6) < 0) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":87 ++ /* "vidcutter/libs/pympv/mpv.pyx":89 + * option_format = MPV_ERROR_OPTION_FORMAT + * option_error = MPV_ERROR_OPTION_ERROR + * not_found = MPV_ERROR_PROPERTY_NOT_FOUND # <<<<<<<<<<<<<< + * property_format = MPV_ERROR_PROPERTY_FORMAT + * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 87, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":88 ++ /* "vidcutter/libs/pympv/mpv.pyx":90 + * option_error = MPV_ERROR_OPTION_ERROR + * not_found = MPV_ERROR_PROPERTY_NOT_FOUND + * property_format = MPV_ERROR_PROPERTY_FORMAT # <<<<<<<<<<<<<< + * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE + * property_error = MPV_ERROR_PROPERTY_ERROR + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 88, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_format, __pyx_t_6) < 0) __PYX_ERR(0, 88, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_format, __pyx_t_6) < 0) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":89 ++ /* "vidcutter/libs/pympv/mpv.pyx":91 + * not_found = MPV_ERROR_PROPERTY_NOT_FOUND + * property_format = MPV_ERROR_PROPERTY_FORMAT + * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE # <<<<<<<<<<<<<< + * property_error = MPV_ERROR_PROPERTY_ERROR + * command_error = MPV_ERROR_COMMAND + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_UNAVAILABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_UNAVAILABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_unavailable, __pyx_t_6) < 0) __PYX_ERR(0, 89, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_unavailable, __pyx_t_6) < 0) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":90 ++ /* "vidcutter/libs/pympv/mpv.pyx":92 + * property_format = MPV_ERROR_PROPERTY_FORMAT + * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE + * property_error = MPV_ERROR_PROPERTY_ERROR # <<<<<<<<<<<<<< + * command_error = MPV_ERROR_COMMAND + * loading_failed = MPV_ERROR_LOADING_FAILED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_error, __pyx_t_6) < 0) __PYX_ERR(0, 90, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_error, __pyx_t_6) < 0) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":91 ++ /* "vidcutter/libs/pympv/mpv.pyx":93 + * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE + * property_error = MPV_ERROR_PROPERTY_ERROR + * command_error = MPV_ERROR_COMMAND # <<<<<<<<<<<<<< + * loading_failed = MPV_ERROR_LOADING_FAILED + * ao_init_failed = MPV_ERROR_AO_INIT_FAILED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_COMMAND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_COMMAND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_error, __pyx_t_6) < 0) __PYX_ERR(0, 91, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_error, __pyx_t_6) < 0) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":92 ++ /* "vidcutter/libs/pympv/mpv.pyx":94 + * property_error = MPV_ERROR_PROPERTY_ERROR + * command_error = MPV_ERROR_COMMAND + * loading_failed = MPV_ERROR_LOADING_FAILED # <<<<<<<<<<<<<< + * ao_init_failed = MPV_ERROR_AO_INIT_FAILED + * vo_init_failed = MPV_ERROR_VO_INIT_FAILED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_LOADING_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 92, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_LOADING_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_loading_failed, __pyx_t_6) < 0) __PYX_ERR(0, 92, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_loading_failed, __pyx_t_6) < 0) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":93 ++ /* "vidcutter/libs/pympv/mpv.pyx":95 + * command_error = MPV_ERROR_COMMAND + * loading_failed = MPV_ERROR_LOADING_FAILED + * ao_init_failed = MPV_ERROR_AO_INIT_FAILED # <<<<<<<<<<<<<< + * vo_init_failed = MPV_ERROR_VO_INIT_FAILED + * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_AO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_AO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ao_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 93, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ao_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":94 ++ /* "vidcutter/libs/pympv/mpv.pyx":96 + * loading_failed = MPV_ERROR_LOADING_FAILED + * ao_init_failed = MPV_ERROR_AO_INIT_FAILED + * vo_init_failed = MPV_ERROR_VO_INIT_FAILED # <<<<<<<<<<<<<< + * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY + * unknown_format = MPV_ERROR_UNKNOWN_FORMAT + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_VO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_VO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_vo_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 94, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_vo_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":95 ++ /* "vidcutter/libs/pympv/mpv.pyx":97 + * ao_init_failed = MPV_ERROR_AO_INIT_FAILED + * vo_init_failed = MPV_ERROR_VO_INIT_FAILED + * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY # <<<<<<<<<<<<<< + * unknown_format = MPV_ERROR_UNKNOWN_FORMAT + * unsupported = MPV_ERROR_UNSUPPORTED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOTHING_TO_PLAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOTHING_TO_PLAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nothing_to_play, __pyx_t_6) < 0) __PYX_ERR(0, 95, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nothing_to_play, __pyx_t_6) < 0) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":96 ++ /* "vidcutter/libs/pympv/mpv.pyx":98 + * vo_init_failed = MPV_ERROR_VO_INIT_FAILED + * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY + * unknown_format = MPV_ERROR_UNKNOWN_FORMAT # <<<<<<<<<<<<<< + * unsupported = MPV_ERROR_UNSUPPORTED + * not_implemented = MPV_ERROR_NOT_IMPLEMENTED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNKNOWN_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 96, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNKNOWN_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unknown_format, __pyx_t_6) < 0) __PYX_ERR(0, 96, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unknown_format, __pyx_t_6) < 0) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":97 ++ /* "vidcutter/libs/pympv/mpv.pyx":99 + * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY + * unknown_format = MPV_ERROR_UNKNOWN_FORMAT + * unsupported = MPV_ERROR_UNSUPPORTED # <<<<<<<<<<<<<< + * not_implemented = MPV_ERROR_NOT_IMPLEMENTED + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNSUPPORTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNSUPPORTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unsupported, __pyx_t_6) < 0) __PYX_ERR(0, 97, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unsupported, __pyx_t_6) < 0) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":98 ++ /* "vidcutter/libs/pympv/mpv.pyx":100 + * unknown_format = MPV_ERROR_UNKNOWN_FORMAT + * unsupported = MPV_ERROR_UNSUPPORTED + * not_implemented = MPV_ERROR_NOT_IMPLEMENTED # <<<<<<<<<<<<<< + * + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOT_IMPLEMENTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOT_IMPLEMENTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_implemented, __pyx_t_6) < 0) __PYX_ERR(0, 98, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_implemented, __pyx_t_6) < 0) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":72 ++ /* "vidcutter/libs/pympv/mpv.pyx":74 + * Py_Initialize() + * + * class Errors: # <<<<<<<<<<<<<< + * """Set of known error codes from MpvError and Event responses. + * + */ +- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Errors, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Errors, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Errors, __pyx_t_6) < 0) __PYX_ERR(0, 72, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Errors, __pyx_t_6) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":101 ++ /* "vidcutter/libs/pympv/mpv.pyx":103 + * + * + * class Events: # <<<<<<<<<<<<<< + * """Set of known values for Event ids. + * + */ +- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Events, __pyx_n_s_Events, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_values_for_Event_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 101, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Events, __pyx_n_s_Events, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_values_for_Event_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + +- /* "vidcutter/libs/pympv/mpv.pyx":108 ++ /* "vidcutter/libs/pympv/mpv.pyx":110 + * You should handle the possibility that event ids may not be any of these values. + * """ + * none = MPV_EVENT_NONE # <<<<<<<<<<<<<< + * shutdown = MPV_EVENT_SHUTDOWN + * log_message = MPV_EVENT_LOG_MESSAGE + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_6) < 0) __PYX_ERR(0, 108, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_6) < 0) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":109 ++ /* "vidcutter/libs/pympv/mpv.pyx":111 + * """ + * none = MPV_EVENT_NONE + * shutdown = MPV_EVENT_SHUTDOWN # <<<<<<<<<<<<<< + * log_message = MPV_EVENT_LOG_MESSAGE + * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SHUTDOWN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SHUTDOWN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_shutdown, __pyx_t_6) < 0) __PYX_ERR(0, 109, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_shutdown, __pyx_t_6) < 0) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":110 ++ /* "vidcutter/libs/pympv/mpv.pyx":112 + * none = MPV_EVENT_NONE + * shutdown = MPV_EVENT_SHUTDOWN + * log_message = MPV_EVENT_LOG_MESSAGE # <<<<<<<<<<<<<< + * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY + * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_LOG_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_LOG_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_log_message, __pyx_t_6) < 0) __PYX_ERR(0, 110, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_log_message, __pyx_t_6) < 0) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":111 ++ /* "vidcutter/libs/pympv/mpv.pyx":113 + * shutdown = MPV_EVENT_SHUTDOWN + * log_message = MPV_EVENT_LOG_MESSAGE + * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY # <<<<<<<<<<<<<< + * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY + * command_reply = MPV_EVENT_COMMAND_REPLY + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_GET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_GET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_get_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 111, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_get_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":112 ++ /* "vidcutter/libs/pympv/mpv.pyx":114 + * log_message = MPV_EVENT_LOG_MESSAGE + * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY + * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY # <<<<<<<<<<<<<< + * command_reply = MPV_EVENT_COMMAND_REPLY + * start_file = MPV_EVENT_START_FILE + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_set_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 112, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_set_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 114, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":113 ++ /* "vidcutter/libs/pympv/mpv.pyx":115 + * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY + * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY + * command_reply = MPV_EVENT_COMMAND_REPLY # <<<<<<<<<<<<<< + * start_file = MPV_EVENT_START_FILE + * end_file = MPV_EVENT_END_FILE + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_COMMAND_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_COMMAND_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_reply, __pyx_t_6) < 0) __PYX_ERR(0, 113, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_reply, __pyx_t_6) < 0) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":114 ++ /* "vidcutter/libs/pympv/mpv.pyx":116 + * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY + * command_reply = MPV_EVENT_COMMAND_REPLY + * start_file = MPV_EVENT_START_FILE # <<<<<<<<<<<<<< + * end_file = MPV_EVENT_END_FILE + * file_loaded = MPV_EVENT_FILE_LOADED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_START_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_START_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_start_file, __pyx_t_6) < 0) __PYX_ERR(0, 114, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_start_file, __pyx_t_6) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":115 ++ /* "vidcutter/libs/pympv/mpv.pyx":117 + * command_reply = MPV_EVENT_COMMAND_REPLY + * start_file = MPV_EVENT_START_FILE + * end_file = MPV_EVENT_END_FILE # <<<<<<<<<<<<<< + * file_loaded = MPV_EVENT_FILE_LOADED + * # tracks_changed = MPV_EVENT_TRACKS_CHANGED + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_END_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_END_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_end_file, __pyx_t_6) < 0) __PYX_ERR(0, 115, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_end_file, __pyx_t_6) < 0) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":116 ++ /* "vidcutter/libs/pympv/mpv.pyx":118 + * 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 + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_FILE_LOADED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_FILE_LOADED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_file_loaded, __pyx_t_6) < 0) __PYX_ERR(0, 116, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_file_loaded, __pyx_t_6) < 0) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":119 ++ /* "vidcutter/libs/pympv/mpv.pyx":121 + * # tracks_changed = MPV_EVENT_TRACKS_CHANGED + * # tracks_switched = MPV_EVENT_TRACK_SWITCHED + * idle = MPV_EVENT_IDLE # <<<<<<<<<<<<<< + * # pause = MPV_EVENT_PAUSE + * # unpause = MPV_EVENT_UNPAUSE + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_IDLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_IDLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_idle, __pyx_t_6) < 0) __PYX_ERR(0, 119, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_idle, __pyx_t_6) < 0) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":122 ++ /* "vidcutter/libs/pympv/mpv.pyx":124 + * # 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 + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TICK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TICK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tick, __pyx_t_6) < 0) __PYX_ERR(0, 122, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tick, __pyx_t_6) < 0) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":124 ++ /* "vidcutter/libs/pympv/mpv.pyx":126 + * 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 + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CLIENT_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CLIENT_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_client_message, __pyx_t_6) < 0) __PYX_ERR(0, 124, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_client_message, __pyx_t_6) < 0) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":125 ++ /* "vidcutter/libs/pympv/mpv.pyx":127 + * # 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 + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_VIDEO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_VIDEO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_video_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 125, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_video_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":126 ++ /* "vidcutter/libs/pympv/mpv.pyx":128 + * 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 + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_AUDIO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_AUDIO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_audio_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 126, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_audio_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":128 ++ /* "vidcutter/libs/pympv/mpv.pyx":130 + * 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 + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SEEK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SEEK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_seek, __pyx_t_6) < 0) __PYX_ERR(0, 128, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_seek, __pyx_t_6) < 0) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":129 ++ /* "vidcutter/libs/pympv/mpv.pyx":131 + * # 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 + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PLAYBACK_RESTART); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 129, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PLAYBACK_RESTART); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_playback_restart, __pyx_t_6) < 0) __PYX_ERR(0, 129, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_playback_restart, __pyx_t_6) < 0) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":130 ++ /* "vidcutter/libs/pympv/mpv.pyx":132 + * seek = MPV_EVENT_SEEK + * playback_restart = MPV_EVENT_PLAYBACK_RESTART + * property_change = MPV_EVENT_PROPERTY_CHANGE # <<<<<<<<<<<<<< + * # chapter_change = MPV_EVENT_CHAPTER_CHANGE + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PROPERTY_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 130, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PROPERTY_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 132, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_change, __pyx_t_6) < 0) __PYX_ERR(0, 130, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_change, __pyx_t_6) < 0) __PYX_ERR(0, 132, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":101 ++ /* "vidcutter/libs/pympv/mpv.pyx":103 + * + * + * class Events: # <<<<<<<<<<<<<< + * """Set of known values for Event ids. + * + */ +- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Events, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Events, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Events, __pyx_t_6) < 0) __PYX_ERR(0, 101, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Events, __pyx_t_6) < 0) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":134 ++ /* "vidcutter/libs/pympv/mpv.pyx":136 + * + * + * class LogLevels: # <<<<<<<<<<<<<< + * no = MPV_LOG_LEVEL_NONE + * fatal = MPV_LOG_LEVEL_FATAL + */ +- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LogLevels, __pyx_n_s_LogLevels, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 134, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LogLevels, __pyx_n_s_LogLevels, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + +- /* "vidcutter/libs/pympv/mpv.pyx":135 ++ /* "vidcutter/libs/pympv/mpv.pyx":137 + * + * class LogLevels: + * no = MPV_LOG_LEVEL_NONE # <<<<<<<<<<<<<< + * fatal = MPV_LOG_LEVEL_FATAL + * error = MPV_LOG_LEVEL_ERROR + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 135, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_no, __pyx_t_6) < 0) __PYX_ERR(0, 135, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_no, __pyx_t_6) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":136 ++ /* "vidcutter/libs/pympv/mpv.pyx":138 + * class LogLevels: + * no = MPV_LOG_LEVEL_NONE + * fatal = MPV_LOG_LEVEL_FATAL # <<<<<<<<<<<<<< + * error = MPV_LOG_LEVEL_ERROR + * warn = MPV_LOG_LEVEL_WARN + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_FATAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_FATAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_fatal, __pyx_t_6) < 0) __PYX_ERR(0, 136, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_fatal, __pyx_t_6) < 0) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":137 ++ /* "vidcutter/libs/pympv/mpv.pyx":139 + * no = MPV_LOG_LEVEL_NONE + * fatal = MPV_LOG_LEVEL_FATAL + * error = MPV_LOG_LEVEL_ERROR # <<<<<<<<<<<<<< + * warn = MPV_LOG_LEVEL_WARN + * info = MPV_LOG_LEVEL_INFO + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 137, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":138 ++ /* "vidcutter/libs/pympv/mpv.pyx":140 + * fatal = MPV_LOG_LEVEL_FATAL + * error = MPV_LOG_LEVEL_ERROR + * warn = MPV_LOG_LEVEL_WARN # <<<<<<<<<<<<<< + * info = MPV_LOG_LEVEL_INFO + * v = MPV_LOG_LEVEL_V + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_WARN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 138, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_WARN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_warn, __pyx_t_6) < 0) __PYX_ERR(0, 138, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_warn, __pyx_t_6) < 0) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":139 ++ /* "vidcutter/libs/pympv/mpv.pyx":141 + * error = MPV_LOG_LEVEL_ERROR + * warn = MPV_LOG_LEVEL_WARN + * info = MPV_LOG_LEVEL_INFO # <<<<<<<<<<<<<< + * v = MPV_LOG_LEVEL_V + * debug = MPV_LOG_LEVEL_DEBUG + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_INFO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 139, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_INFO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_info, __pyx_t_6) < 0) __PYX_ERR(0, 139, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_info, __pyx_t_6) < 0) __PYX_ERR(0, 141, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":140 ++ /* "vidcutter/libs/pympv/mpv.pyx":142 + * warn = MPV_LOG_LEVEL_WARN + * info = MPV_LOG_LEVEL_INFO + * v = MPV_LOG_LEVEL_V # <<<<<<<<<<<<<< + * debug = MPV_LOG_LEVEL_DEBUG + * trace = MPV_LOG_LEVEL_TRACE + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_V); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_V); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_v, __pyx_t_6) < 0) __PYX_ERR(0, 140, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_v, __pyx_t_6) < 0) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":141 ++ /* "vidcutter/libs/pympv/mpv.pyx":143 + * info = MPV_LOG_LEVEL_INFO + * v = MPV_LOG_LEVEL_V + * debug = MPV_LOG_LEVEL_DEBUG # <<<<<<<<<<<<<< + * trace = MPV_LOG_LEVEL_TRACE + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_DEBUG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 141, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_DEBUG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_debug, __pyx_t_6) < 0) __PYX_ERR(0, 141, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_debug, __pyx_t_6) < 0) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":142 ++ /* "vidcutter/libs/pympv/mpv.pyx":144 + * v = MPV_LOG_LEVEL_V + * debug = MPV_LOG_LEVEL_DEBUG + * trace = MPV_LOG_LEVEL_TRACE # <<<<<<<<<<<<<< + * + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_TRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_TRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_trace, __pyx_t_6) < 0) __PYX_ERR(0, 142, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_trace, __pyx_t_6) < 0) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":134 ++ /* "vidcutter/libs/pympv/mpv.pyx":136 + * + * + * class LogLevels: # <<<<<<<<<<<<<< + * no = MPV_LOG_LEVEL_NONE + * fatal = MPV_LOG_LEVEL_FATAL + */ +- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LogLevels, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 134, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LogLevels, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_LogLevels, __pyx_t_6) < 0) __PYX_ERR(0, 134, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_LogLevels, __pyx_t_6) < 0) __PYX_ERR(0, 136, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":145 ++ /* "vidcutter/libs/pympv/mpv.pyx":147 + * + * + * class EOFReasons: # <<<<<<<<<<<<<< + * """Known possible values for EndOfFileReached reason. + * + */ +- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOFReasons, __pyx_n_s_EOFReasons, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Known_possible_values_for_EndOfF); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 145, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOFReasons, __pyx_n_s_EOFReasons, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Known_possible_values_for_EndOfF); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + +- /* "vidcutter/libs/pympv/mpv.pyx":150 ++ /* "vidcutter/libs/pympv/mpv.pyx":152 + * You should handle the possibility that the reason may not be any of these values. + * """ + * eof = MPV_END_FILE_REASON_EOF # <<<<<<<<<<<<<< + * aborted = MPV_END_FILE_REASON_STOP + * quit = MPV_END_FILE_REASON_QUIT + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_eof, __pyx_t_6) < 0) __PYX_ERR(0, 150, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_eof, __pyx_t_6) < 0) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":151 ++ /* "vidcutter/libs/pympv/mpv.pyx":153 + * """ + * eof = MPV_END_FILE_REASON_EOF + * aborted = MPV_END_FILE_REASON_STOP # <<<<<<<<<<<<<< + * quit = MPV_END_FILE_REASON_QUIT + * error = MPV_END_FILE_REASON_ERROR + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_STOP); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_STOP); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_aborted, __pyx_t_6) < 0) __PYX_ERR(0, 151, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_aborted, __pyx_t_6) < 0) __PYX_ERR(0, 153, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":152 ++ /* "vidcutter/libs/pympv/mpv.pyx":154 + * eof = MPV_END_FILE_REASON_EOF + * aborted = MPV_END_FILE_REASON_STOP + * quit = MPV_END_FILE_REASON_QUIT # <<<<<<<<<<<<<< + * error = MPV_END_FILE_REASON_ERROR + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_QUIT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_QUIT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_quit, __pyx_t_6) < 0) __PYX_ERR(0, 152, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_quit, __pyx_t_6) < 0) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":153 ++ /* "vidcutter/libs/pympv/mpv.pyx":155 + * aborted = MPV_END_FILE_REASON_STOP + * quit = MPV_END_FILE_REASON_QUIT + * error = MPV_END_FILE_REASON_ERROR # <<<<<<<<<<<<<< + * + * + */ +- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 153, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 153, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":145 ++ /* "vidcutter/libs/pympv/mpv.pyx":147 + * + * + * class EOFReasons: # <<<<<<<<<<<<<< + * """Known possible values for EndOfFileReached reason. + * + */ +- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_EOFReasons, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_EOFReasons, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOFReasons, __pyx_t_6) < 0) __PYX_ERR(0, 145, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOFReasons, __pyx_t_6) < 0) __PYX_ERR(0, 147, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":318 ++ /* "vidcutter/libs/pympv/mpv.pyx":320 + * + * + * def _errors(fn): # <<<<<<<<<<<<<< + * def wrapped(*k, **kw): + * v = fn(*k, **kw) + */ +- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_5_errors, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 318, __pyx_L1_error) ++ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_5_errors, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 320, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_7) < 0) __PYX_ERR(0, 318, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_7) < 0) __PYX_ERR(0, 320, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":326 ++ /* "vidcutter/libs/pympv/mpv.pyx":328 + * + * + * class MPVError(Exception): # <<<<<<<<<<<<<< + * code = None + * + */ +- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 326, __pyx_L1_error) ++ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 328, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); +- __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 326, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 328, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_MPVError, __pyx_n_s_MPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 326, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_MPVError, __pyx_n_s_MPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + +- /* "vidcutter/libs/pympv/mpv.pyx":327 ++ /* "vidcutter/libs/pympv/mpv.pyx":329 + * + * class MPVError(Exception): + * code = None # <<<<<<<<<<<<<< + * + * def __init__(self, e): + */ +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_code, Py_None) < 0) __PYX_ERR(0, 327, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_code, Py_None) < 0) __PYX_ERR(0, 329, __pyx_L1_error) + +- /* "vidcutter/libs/pympv/mpv.pyx":329 ++ /* "vidcutter/libs/pympv/mpv.pyx":331 + * code = None + * + * def __init__(self, e): # <<<<<<<<<<<<<< + * self.code = e + * cdef const char* err_c + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__, 0, __pyx_n_s_MPVError___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__, 0, __pyx_n_s_MPVError___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 329, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 331, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":326 ++ /* "vidcutter/libs/pympv/mpv.pyx":328 + * + * + * class MPVError(Exception): # <<<<<<<<<<<<<< + * code = None + * + */ +- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPVError, __pyx_t_1) < 0) __PYX_ERR(0, 326, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPVError, __pyx_t_1) < 0) __PYX_ERR(0, 328, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":340 ++ /* "vidcutter/libs/pympv/mpv.pyx":342 + * Exception.__init__(self, e) + * + * class PyMPVError(Exception): # <<<<<<<<<<<<<< + * pass + * + */ +- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 340, __pyx_L1_error) ++ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 342, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); +- __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 342, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); +- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_PyMPVError, __pyx_n_s_PyMPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_PyMPVError, __pyx_n_s_PyMPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 342, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_PyMPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_PyMPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyMPVError, __pyx_t_1) < 0) __PYX_ERR(0, 340, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyMPVError, __pyx_t_1) < 0) __PYX_ERR(0, 342, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":343 ++ /* "vidcutter/libs/pympv/mpv.pyx":345 + * pass + * + * cdef _callbacks = dict() # <<<<<<<<<<<<<< + * cdef _reply_userdatas = dict() + * + */ +- __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 343, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 345, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__callbacks); + __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); + __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":344 ++ /* "vidcutter/libs/pympv/mpv.pyx":346 + * + * cdef _callbacks = dict() + * cdef _reply_userdatas = dict() # <<<<<<<<<<<<<< + * + * class _ReplyUserData(object): + */ +- __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 344, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas); + __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_t_7); + __Pyx_GIVEREF(__pyx_t_7); + __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":346 ++ /* "vidcutter/libs/pympv/mpv.pyx":348 + * cdef _reply_userdatas = dict() + * + * class _ReplyUserData(object): # <<<<<<<<<<<<<< + * def __init__(self, data): + * self.counter = 0 + */ +- __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 348, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__27, __pyx_n_s_ReplyUserData, __pyx_n_s_ReplyUserData, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 346, __pyx_L1_error) ++ __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__27, __pyx_n_s_ReplyUserData, __pyx_n_s_ReplyUserData, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 348, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":347 ++ /* "vidcutter/libs/pympv/mpv.pyx":349 + * + * class _ReplyUserData(object): + * def __init__(self, data): # <<<<<<<<<<<<<< + * self.counter = 0 + * self.data = data + */ +- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, 0, __pyx_n_s_ReplyUserData___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, 0, __pyx_n_s_ReplyUserData___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 347, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 349, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":352 ++ /* "vidcutter/libs/pympv/mpv.pyx":354 + * self.observed = False + * + * def add(self): # <<<<<<<<<<<<<< + * self.counter += 1 + * + */ +- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, 0, __pyx_n_s_ReplyUserData_add, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, 0, __pyx_n_s_ReplyUserData_add, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 354, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_add, __pyx_t_4) < 0) __PYX_ERR(0, 352, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_add, __pyx_t_4) < 0) __PYX_ERR(0, 354, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":355 ++ /* "vidcutter/libs/pympv/mpv.pyx":357 + * self.counter += 1 + * + * def remove(self): # <<<<<<<<<<<<<< + * self.counter -= 1 + * + */ +- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, 0, __pyx_n_s_ReplyUserData_remove, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, 0, __pyx_n_s_ReplyUserData_remove, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_remove, __pyx_t_4) < 0) __PYX_ERR(0, 355, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_remove, __pyx_t_4) < 0) __PYX_ERR(0, 357, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":346 ++ /* "vidcutter/libs/pympv/mpv.pyx":348 + * cdef _reply_userdatas = dict() + * + * class _ReplyUserData(object): # <<<<<<<<<<<<<< + * def __init__(self, data): + * self.counter = 0 + */ +- __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ReplyUserData, __pyx_tuple__27, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ReplyUserData, __pyx_tuple__27, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplyUserData, __pyx_t_4) < 0) __PYX_ERR(0, 346, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplyUserData, __pyx_t_4) < 0) __PYX_ERR(0, 348, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":411 ++ /* "vidcutter/libs/pympv/mpv.pyx":413 + * # mpv_resume(self._ctx) + * + * @_errors # <<<<<<<<<<<<<< + * def request_event(self, event, enable): + * """Enable or disable a given event. + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 413, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":412 ++ /* "vidcutter/libs/pympv/mpv.pyx":414 + * + * @_errors + * def request_event(self, event, enable): # <<<<<<<<<<<<<< + * """Enable or disable a given event. + * + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_request_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_request_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26465,31 +26465,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 413, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_request_event, __pyx_t_7) < 0) __PYX_ERR(0, 412, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_request_event, __pyx_t_7) < 0) __PYX_ERR(0, 414, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":429 ++ /* "vidcutter/libs/pympv/mpv.pyx":431 + * return err + * + * @_errors # <<<<<<<<<<<<<< + * def set_log_level(self, loglevel): + * """Wraps: mpv_request_log_messages""" + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 429, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 431, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":430 ++ /* "vidcutter/libs/pympv/mpv.pyx":432 + * + * @_errors + * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< + * """Wraps: mpv_request_log_messages""" + * assert self._ctx + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 432, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26504,31 +26504,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 429, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 431, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_log_level, __pyx_t_7) < 0) __PYX_ERR(0, 430, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_log_level, __pyx_t_7) < 0) __PYX_ERR(0, 432, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":440 ++ /* "vidcutter/libs/pympv/mpv.pyx":442 + * return err + * + * @_errors # <<<<<<<<<<<<<< + * def load_config(self, filename): + * """Wraps: mpv_load_config_file""" + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 440, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 442, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":441 ++ /* "vidcutter/libs/pympv/mpv.pyx":443 + * + * @_errors + * def load_config(self, filename): # <<<<<<<<<<<<<< + * """Wraps: mpv_load_config_file""" + * assert self._ctx + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_load_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_load_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26543,31 +26543,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 440, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 442, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_load_config, __pyx_t_7) < 0) __PYX_ERR(0, 441, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_load_config, __pyx_t_7) < 0) __PYX_ERR(0, 443, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":573 ++ /* "vidcutter/libs/pympv/mpv.pyx":575 + * return result + * + * @_errors # <<<<<<<<<<<<<< + * def get_property_async(self, prop, data=None): + * """Gets the value of a property asynchronously. + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 575, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":574 ++ /* "vidcutter/libs/pympv/mpv.pyx":576 + * + * @_errors + * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< + * """Gets the value of a property asynchronously. + * + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 576, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26582,31 +26582,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 573, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 575, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_get_property_async, __pyx_t_7) < 0) __PYX_ERR(0, 574, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_get_property_async, __pyx_t_7) < 0) __PYX_ERR(0, 576, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":635 ++ /* "vidcutter/libs/pympv/mpv.pyx":637 + * return v + * + * @_errors # <<<<<<<<<<<<<< + * def set_property(self, prop, value=True, asynchronous=False, data=None): + * """Wraps: mpv_set_property and mpv_set_property_async""" + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 635, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 637, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":636 ++ /* "vidcutter/libs/pympv/mpv.pyx":638 + * + * @_errors + * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< + * """Wraps: mpv_set_property and mpv_set_property_async""" + * assert self._ctx + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 636, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 638, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26621,31 +26621,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 635, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 637, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_property, __pyx_t_7) < 0) __PYX_ERR(0, 636, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_property, __pyx_t_7) < 0) __PYX_ERR(0, 638, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":673 ++ /* "vidcutter/libs/pympv/mpv.pyx":675 + * return err + * + * @_errors # <<<<<<<<<<<<<< + * def set_option(self, prop, value=True): + * """Wraps: mpv_set_option""" + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 675, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":674 ++ /* "vidcutter/libs/pympv/mpv.pyx":676 + * + * @_errors + * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< + * """Wraps: mpv_set_option""" + * assert self._ctx + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_option); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 674, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_option); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 676, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26660,31 +26660,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 673, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 675, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_option, __pyx_t_7) < 0) __PYX_ERR(0, 674, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_option, __pyx_t_7) < 0) __PYX_ERR(0, 676, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":695 ++ /* "vidcutter/libs/pympv/mpv.pyx":697 + * return err + * + * @_errors # <<<<<<<<<<<<<< + * def initialize(self): + * """Wraps: mpv_initialize""" + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 697, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":696 ++ /* "vidcutter/libs/pympv/mpv.pyx":698 + * + * @_errors + * def initialize(self): # <<<<<<<<<<<<<< + * """Wraps: mpv_initialize""" + * assert self._ctx + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_initialize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_initialize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 698, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26699,31 +26699,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 695, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 697, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_initialize, __pyx_t_7) < 0) __PYX_ERR(0, 696, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_initialize, __pyx_t_7) < 0) __PYX_ERR(0, 698, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":748 ++ /* "vidcutter/libs/pympv/mpv.pyx":750 + * self.callbackthread.start() + * + * @_errors # <<<<<<<<<<<<<< + * def observe_property(self, prop, data=None): + * """Wraps: mpv_observe_property""" + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 748, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 750, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":749 ++ /* "vidcutter/libs/pympv/mpv.pyx":751 + * + * @_errors + * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< + * """Wraps: mpv_observe_property""" + * assert self._ctx + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_observe_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_observe_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 751, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26738,31 +26738,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 748, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 750, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_observe_property, __pyx_t_7) < 0) __PYX_ERR(0, 749, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_observe_property, __pyx_t_7) < 0) __PYX_ERR(0, 751, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":770 ++ /* "vidcutter/libs/pympv/mpv.pyx":772 + * return err + * + * @_errors # <<<<<<<<<<<<<< + * def unobserve_property(self, data): + * """Wraps: mpv_unobserve_property""" + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 770, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 772, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":771 ++ /* "vidcutter/libs/pympv/mpv.pyx":773 + * + * @_errors + * def unobserve_property(self, data): # <<<<<<<<<<<<<< + * """Wraps: mpv_unobserve_property""" + * assert self._ctx + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_unobserve_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 771, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_unobserve_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 773, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26777,54 +26777,54 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 770, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 772, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_unobserve_property, __pyx_t_7) < 0) __PYX_ERR(0, 771, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_unobserve_property, __pyx_t_7) < 0) __PYX_ERR(0, 773, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); + +- /* "vidcutter/libs/pympv/mpv.pyx":938 ++ /* "vidcutter/libs/pympv/mpv.pyx":940 + * + * cdef class RenderContext(object): + * API_OPENGL = "opengl" # <<<<<<<<<<<<<< + * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME + * + */ +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_API_OPENGL, __pyx_n_s_opengl) < 0) __PYX_ERR(0, 938, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_API_OPENGL, __pyx_n_s_opengl) < 0) __PYX_ERR(0, 940, __pyx_L1_error) + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +- /* "vidcutter/libs/pympv/mpv.pyx":939 ++ /* "vidcutter/libs/pympv/mpv.pyx":941 + * cdef class RenderContext(object): + * API_OPENGL = "opengl" + * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME # <<<<<<<<<<<<<< + * + * cdef: + */ +- __pyx_t_7 = __Pyx_PyInt_From_enum__mpv_render_update_flag(MPV_RENDER_UPDATE_FRAME); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 939, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_PyInt_From_enum__mpv_render_update_flag(MPV_RENDER_UPDATE_FRAME); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 941, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_UPDATE_FRAME, __pyx_t_7) < 0) __PYX_ERR(0, 939, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_UPDATE_FRAME, __pyx_t_7) < 0) __PYX_ERR(0, 941, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +- /* "vidcutter/libs/pympv/mpv.pyx":1009 ++ /* "vidcutter/libs/pympv/mpv.pyx":1011 + * self.inited = True + * + * @_errors # <<<<<<<<<<<<<< + * def set_icc_profile(self, icc_blob): + * cdef: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1009, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1011, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":1010 ++ /* "vidcutter/libs/pympv/mpv.pyx":1012 + * + * @_errors + * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< + * cdef: + * mpv_render_param param + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_icc_profile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1010, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_icc_profile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1012, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26839,31 +26839,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1009, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1011, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_icc_profile, __pyx_t_7) < 0) __PYX_ERR(0, 1010, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_icc_profile, __pyx_t_7) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +- /* "vidcutter/libs/pympv/mpv.pyx":1028 ++ /* "vidcutter/libs/pympv/mpv.pyx":1030 + * return err + * + * @_errors # <<<<<<<<<<<<<< + * def set_ambient_light(self, lux): + * cdef: + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1028, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1030, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":1029 ++ /* "vidcutter/libs/pympv/mpv.pyx":1031 + * + * @_errors + * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< + * cdef: + * mpv_render_param param + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_ambient_light); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1029, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_ambient_light); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1031, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26878,31 +26878,31 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1030, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_ambient_light, __pyx_t_7) < 0) __PYX_ERR(0, 1029, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_ambient_light, __pyx_t_7) < 0) __PYX_ERR(0, 1031, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +- /* "vidcutter/libs/pympv/mpv.pyx":1068 ++ /* "vidcutter/libs/pympv/mpv.pyx":1070 + * return ret + * + * @_errors # <<<<<<<<<<<<<< + * def render(self, + * opengl_fbo=None, + */ +- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1068, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1070, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + +- /* "vidcutter/libs/pympv/mpv.pyx":1069 ++ /* "vidcutter/libs/pympv/mpv.pyx":1071 + * + * @_errors + * def render(self, # <<<<<<<<<<<<<< + * opengl_fbo=None, + * flip_y=False, + */ +- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L1_error) ++ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1071, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { +@@ -26917,114 +26917,114 @@ if (!__Pyx_RefNanny) { + __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1068, __pyx_L1_error) ++ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1070, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_render, __pyx_t_7) < 0) __PYX_ERR(0, 1069, __pyx_L1_error) ++ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_render, __pyx_t_7) < 0) __PYX_ERR(0, 1071, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); + +- /* "vidcutter/libs/pympv/mpv.pyx":1132 ++ /* "vidcutter/libs/pympv/mpv.pyx":1134 + * init_params, *args, **kwargs) + * + * class CallbackThread(Thread): # <<<<<<<<<<<<<< + * def __init__(self): + * Thread.__init__(self) + */ +- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); + __pyx_t_7 = 0; +- __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); +- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_6, __pyx_n_s_CallbackThread, __pyx_n_s_CallbackThread, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_6, __pyx_n_s_CallbackThread, __pyx_n_s_CallbackThread, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + +- /* "vidcutter/libs/pympv/mpv.pyx":1133 ++ /* "vidcutter/libs/pympv/mpv.pyx":1135 + * + * class CallbackThread(Thread): + * def __init__(self): # <<<<<<<<<<<<<< + * Thread.__init__(self) + * self.daemon = True + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, 0, __pyx_n_s_CallbackThread___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, 0, __pyx_n_s_CallbackThread___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 1133, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1141 ++ /* "vidcutter/libs/pympv/mpv.pyx":1143 + * self.isshutdown = False + * + * def shutdown(self): # <<<<<<<<<<<<<< + * self.isshutdown = True + * self.callback = None + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, 0, __pyx_n_s_CallbackThread_shutdown, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, 0, __pyx_n_s_CallbackThread_shutdown, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_shutdown, __pyx_t_1) < 0) __PYX_ERR(0, 1141, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_shutdown, __pyx_t_1) < 0) __PYX_ERR(0, 1143, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1146 ++ /* "vidcutter/libs/pympv/mpv.pyx":1148 + * self.lock.release() + * + * def call(self): # <<<<<<<<<<<<<< + * self.lock.release() + * + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call, 0, __pyx_n_s_CallbackThread_call, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call, 0, __pyx_n_s_CallbackThread_call, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_call, __pyx_t_1) < 0) __PYX_ERR(0, 1146, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_call, __pyx_t_1) < 0) __PYX_ERR(0, 1148, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1149 ++ /* "vidcutter/libs/pympv/mpv.pyx":1151 + * self.lock.release() + * + * def set(self, callback): # <<<<<<<<<<<<<< + * self.callback = callback + * + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set, 0, __pyx_n_s_CallbackThread_set, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set, 0, __pyx_n_s_CallbackThread_set, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_set, __pyx_t_1) < 0) __PYX_ERR(0, 1149, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_set, __pyx_t_1) < 0) __PYX_ERR(0, 1151, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1152 ++ /* "vidcutter/libs/pympv/mpv.pyx":1154 + * self.callback = callback + * + * def run(self): # <<<<<<<<<<<<<< + * while not self.isshutdown: + * self.lock.acquire(True) + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run, 0, __pyx_n_s_CallbackThread_run, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1152, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run, 0, __pyx_n_s_CallbackThread_run, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_run, __pyx_t_1) < 0) __PYX_ERR(0, 1152, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_run, __pyx_t_1) < 0) __PYX_ERR(0, 1154, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1157 ++ /* "vidcutter/libs/pympv/mpv.pyx":1159 + * self.mpv_callback(self.callback) if self.callback else None + * + * def mpv_callback(self, callback): # <<<<<<<<<<<<<< + * try: + * callback() + */ +- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, 0, __pyx_n_s_CallbackThread_mpv_callback, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1157, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, 0, __pyx_n_s_CallbackThread_mpv_callback, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mpv_callback, __pyx_t_1) < 0) __PYX_ERR(0, 1157, __pyx_L1_error) ++ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mpv_callback, __pyx_t_1) < 0) __PYX_ERR(0, 1159, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + +- /* "vidcutter/libs/pympv/mpv.pyx":1132 ++ /* "vidcutter/libs/pympv/mpv.pyx":1134 + * init_params, *args, **kwargs) + * + * class CallbackThread(Thread): # <<<<<<<<<<<<<< + * def __init__(self): + * Thread.__init__(self) + */ +- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_CallbackThread, __pyx_t_6, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1132, __pyx_L1_error) ++ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_CallbackThread, __pyx_t_6, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); +- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallbackThread, __pyx_t_1) < 0) __PYX_ERR(0, 1132, __pyx_L1_error) ++ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallbackThread, __pyx_t_1) < 0) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +diff --git a/vidcutter/libs/pympv/mpv.pyx b/vidcutter/libs/pympv/mpv.pyx +index 8af2dcc7..1decdda8 100644 +--- a/vidcutter/libs/pympv/mpv.pyx ++++ b/vidcutter/libs/pympv/mpv.pyx +@@ -30,8 +30,10 @@ from client cimport * + __version__ = "0.3.0" + __author__ = "Andre D" + +-_REQUIRED_CAPI_MAJOR = 2 +-_MIN_CAPI_MINOR = 0 ++#_REQUIRED_CAPI_MAJOR = 2 ++#_MIN_CAPI_MINOR = 0 ++_REQUIRED_CAPI_MAJOR = 1 ++_MIN_CAPI_MINOR = 109 + + cdef unsigned long _CAPI_VERSION + with nogil: diff --git a/srcpkgs/vidcutter/template b/srcpkgs/vidcutter/template index 07bda50c917c..93e6dbefaacc 100644 --- a/srcpkgs/vidcutter/template +++ b/srcpkgs/vidcutter/template @@ -1,7 +1,7 @@ # Template file for 'vidcutter' pkgname=vidcutter -version=6.0.0 -revision=6 +version=6.0.5.1 +revision=1 build_style=python3-module hostmakedepends="python3-setuptools python3-Cython" makedepends="mpv-devel python3-devel" @@ -12,7 +12,7 @@ maintainer="Orphaned " license="GPL-3.0-or-later" homepage="https://github.com/ozmartian/vidcutter" distfiles="https://github.com/ozmartian/vidcutter/archive/refs/tags/${version}.tar.gz" -checksum=c09be7eceaf42ff7211fe3b8125279c4fec7f7d251d272b61d579e426bd4e2c2 +checksum=c6374eaedb845f9e580e555dd12c1db1cf2ffa28d3756b08e2ae28c1a4cd4a96 pre_build() { rm -f vidcutter/libs/pympv/mpv.c From 96306bf8f59a1dcd6fa068f4aed371d9925dd850 Mon Sep 17 00:00:00 2001 From: Andrew Benson Date: Mon, 14 Nov 2022 08:08:31 -0600 Subject: [PATCH 8/9] stremio-shell: rebuild for mpv-0.35.0 --- srcpkgs/stremio-shell/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/stremio-shell/template b/srcpkgs/stremio-shell/template index 641000d6fe64..2b0c0b23af69 100644 --- a/srcpkgs/stremio-shell/template +++ b/srcpkgs/stremio-shell/template @@ -1,7 +1,7 @@ # Template file for 'stremio-shell' pkgname=stremio-shell version=4.4.159 -revision=2 +revision=3 _singleapplication_hash=f1e15081dc57a9c03f7f4f165677f18802e1437a _libmpv_hash=822a41a1087daf2911fc336fbd9509f962158fef create_wrksrc=yes From 3db5e28de693603ffdbb8b27912b966159a2b3c8 Mon Sep 17 00:00:00 2001 From: Andrew Benson Date: Mon, 14 Nov 2022 08:08:31 -0600 Subject: [PATCH 9/9] vidcutter: use system mpv headers --- srcpkgs/vidcutter/patches/mpv-0.35-1.patch | 52271 ------------------- srcpkgs/vidcutter/patches/mpv-0.35-3.patch | 13260 ----- srcpkgs/vidcutter/template | 14 +- 3 files changed, 10 insertions(+), 65535 deletions(-) diff --git a/srcpkgs/vidcutter/patches/mpv-0.35-1.patch b/srcpkgs/vidcutter/patches/mpv-0.35-1.patch index c33bad4a82bb..759b787f7a69 100644 --- a/srcpkgs/vidcutter/patches/mpv-0.35-1.patch +++ b/srcpkgs/vidcutter/patches/mpv-0.35-1.patch @@ -8,7 +8,6 @@ Subject: [PATCH] Patches to pympv to workaround opengl_cb deprecation from --- vidcutter/libs/pympv/client.pxd | 54 +- - vidcutter/libs/pympv/mpv.c | 46394 ++++++++++++++---------------- vidcutter/libs/pympv/mpv.pyx | 192 +- 3 files changed, 21832 insertions(+), 24808 deletions(-) @@ -113,52276 +112,6 @@ index befe219e..d9a8816f 100644 cdef extern from "mpv/render.h": -diff --git a/vidcutter/libs/pympv/mpv.c b/vidcutter/libs/pympv/mpv.c -index 202aae8c..a3522ef5 100644 ---- a/vidcutter/libs/pympv/mpv.c -+++ b/vidcutter/libs/pympv/mpv.c -@@ -1,4 +1,4 @@ --/* Generated by Cython 0.29.21 */ -+/* Generated by Cython 0.29.28 */ - - /* BEGIN: Cython Metadata - { -@@ -19,15 +19,17 @@ - } - END: Cython Metadata */ - -+#ifndef PY_SSIZE_T_CLEAN - #define PY_SSIZE_T_CLEAN -+#endif /* PY_SSIZE_T_CLEAN */ - #include "Python.h" - #ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. - #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. - #else --#define CYTHON_ABI "0_29_21" --#define CYTHON_HEX_VERSION 0x001D15F0 -+#define CYTHON_ABI "0_29_28" -+#define CYTHON_HEX_VERSION 0x001D1CF0 - #define CYTHON_FUTURE_DIVISION 0 - #include - #ifndef offsetof -@@ -174,7 +176,7 @@ END: Cython Metadata */ - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif -- #if PY_VERSION_HEX < 0x030300F0 -+ #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) -@@ -189,11 +191,14 @@ END: Cython Metadata */ - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif -- #ifndef CYTHON_FAST_THREAD_STATE -+ #if PY_VERSION_HEX >= 0x030B00A4 -+ #undef CYTHON_FAST_THREAD_STATE -+ #define CYTHON_FAST_THREAD_STATE 0 -+ #elif !defined(CYTHON_FAST_THREAD_STATE) - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL -- #define CYTHON_FAST_PYCALL 1 -+ #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030B00A1) - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) -@@ -204,7 +209,10 @@ END: Cython Metadata */ - #ifndef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) - #endif -- #ifndef CYTHON_USE_EXC_INFO_STACK -+ #if PY_VERSION_HEX >= 0x030B00A4 -+ #undef CYTHON_USE_EXC_INFO_STACK -+ #define CYTHON_USE_EXC_INFO_STACK 0 -+ #elif !defined(CYTHON_USE_EXC_INFO_STACK) - #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) - #endif - #endif -@@ -212,7 +220,9 @@ END: Cython Metadata */ - #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) - #endif - #if CYTHON_USE_PYLONG_INTERNALS -- #include "longintrepr.h" -+ #if PY_MAJOR_VERSION < 3 -+ #include "longintrepr.h" -+ #endif - #undef SHIFT - #undef BASE - #undef MASK -@@ -329,9 +339,68 @@ END: Cython Metadata */ - #define __Pyx_DefaultClassType PyClass_Type - #else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" --#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 -- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ -- PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -+ #define __Pyx_DefaultClassType PyType_Type -+#if PY_VERSION_HEX >= 0x030B00A1 -+ static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, -+ PyObject *code, PyObject *c, PyObject* n, PyObject *v, -+ PyObject *fv, PyObject *cell, PyObject* fn, -+ PyObject *name, int fline, PyObject *lnos) { -+ PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL; -+ PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL; -+ const char *fn_cstr=NULL; -+ const char *name_cstr=NULL; -+ PyCodeObject* co=NULL; -+ PyObject *type, *value, *traceback; -+ PyErr_Fetch(&type, &value, &traceback); -+ if (!(kwds=PyDict_New())) goto end; -+ if (!(argcount=PyLong_FromLong(a))) goto end; -+ if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end; -+ if (!(posonlyargcount=PyLong_FromLong(0))) goto end; -+ if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end; -+ if (!(kwonlyargcount=PyLong_FromLong(k))) goto end; -+ if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end; -+ if (!(nlocals=PyLong_FromLong(l))) goto end; -+ if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end; -+ if (!(stacksize=PyLong_FromLong(s))) goto end; -+ if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end; -+ if (!(flags=PyLong_FromLong(f))) goto end; -+ if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end; -+ if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end; -+ if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end; -+ if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end; -+ if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end; -+ if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end; -+ if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end; -+ if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end; -+ if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end; -+ if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end; -+ if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end; -+ if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too; -+ if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here -+ if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too; -+ Py_XDECREF((PyObject*)co); -+ co = (PyCodeObject*)call_result; -+ call_result = NULL; -+ if (0) { -+ cleanup_code_too: -+ Py_XDECREF((PyObject*)co); -+ co = NULL; -+ } -+ end: -+ Py_XDECREF(kwds); -+ Py_XDECREF(argcount); -+ Py_XDECREF(posonlyargcount); -+ Py_XDECREF(kwonlyargcount); -+ Py_XDECREF(nlocals); -+ Py_XDECREF(stacksize); -+ Py_XDECREF(replace); -+ Py_XDECREF(call_result); -+ Py_XDECREF(empty); -+ if (type) { -+ PyErr_Restore(type, value, traceback); -+ } -+ return co; -+ } - #else - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -@@ -445,8 +514,12 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - #endif - #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 -+ #if defined(PyUnicode_IS_READY) - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) -+ #else -+ #define __Pyx_PyUnicode_READY(op) (0) -+ #endif - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) -@@ -455,7 +528,11 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) -+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 -+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) -+ #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -+ #endif - #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) - #endif -@@ -627,7 +704,6 @@ static CYTHON_INLINE float __PYX_NAN() { - #include - #include - #include "mpv/client.h" --#include "mpv/opengl_cb.h" - #include "mpv/render.h" - #include "mpv/render_gl.h" - #ifdef _OPENMP -@@ -857,12 +933,10 @@ static const char *__pyx_f[] = { - - /*--- Type declarations ---*/ - struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached; --struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch; - struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage; - struct __pyx_obj_9vidcutter_4libs_3mpv_Property; - struct __pyx_obj_9vidcutter_4libs_3mpv_Event; - struct __pyx_obj_9vidcutter_4libs_3mpv_Context; --struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext; - struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams; - struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo; - struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext; -@@ -897,21 +971,6 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":169 -- * -- * -- * cdef class InputDispatch(object): # <<<<<<<<<<<<<< -- * """Data field for MPV_EVENT_SCRIPT_INPUT_DISPATCH events. -- * -- */ --struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch { -- PyObject_HEAD -- struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch *__pyx_vtab; -- PyObject *arg0; -- PyObject *type; --}; -- -- - /* "vidcutter/libs/pympv/mpv.pyx":182 - * - * -@@ -978,21 +1037,6 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_Context { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":822 -- * (ctx)() -- * -- * cdef class OpenGLContext(object): # <<<<<<<<<<<<<< -- * cdef: -- * mpv_opengl_cb_context *_ctx -- */ --struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext { -- PyObject_HEAD -- struct mpv_opengl_cb_context *_ctx; -- int inited; -- PyObject *update_cb; --}; -- -- - /* "vidcutter/libs/pympv/mpv.pyx":881 - * DEF MAX_RENDER_PARAMS = 32 - * -@@ -1080,20 +1124,6 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached { - static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached; - - --/* "vidcutter/libs/pympv/mpv.pyx":169 -- * -- * -- * cdef class InputDispatch(object): # <<<<<<<<<<<<<< -- * """Data field for MPV_EVENT_SCRIPT_INPUT_DISPATCH events. -- * -- */ -- --struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch { -- PyObject *(*_init)(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *, struct mpv_event_script_input_dispatch *); --}; --static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch *__pyx_vtabptr_9vidcutter_4libs_3mpv_InputDispatch; -- -- - /* "vidcutter/libs/pympv/mpv.pyx":182 - * - * -@@ -1318,6 +1348,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, - #ifndef Py_MEMBER_SIZE - #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) - #endif -+#if CYTHON_FAST_PYCALL - static size_t __pyx_pyframe_localsplus_offset = 0; - #include "frameobject.h" - #define __Pxy_PyFrame_Initialize_Offsets()\ -@@ -1325,6 +1356,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, - (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) - #define __Pyx_PyFrame_GetLocalsplus(frame)\ - (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) -+#endif // CYTHON_FAST_PYCALL - #endif - - /* PyCFunctionFastCall.proto */ -@@ -1747,12 +1779,23 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -+/* GCCDiagnostics.proto */ -+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -+#define __Pyx_HAS_GCC_DIAGNOSTIC -+#endif -+ - /* CIntToPy.proto */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -+/* CIntFromPy.proto */ -+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); -+ - /* CIntToPy.proto */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_event_id(enum mpv_event_id value); - -+/* CIntFromPy.proto */ -+static CYTHON_INLINE enum mpv_event_id __Pyx_PyInt_As_enum__mpv_event_id(PyObject *); -+ - /* CIntToPy.proto */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value); - -@@ -1768,30 +1811,21 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_end_file_reason(enum m - /* CIntToPy.proto */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_render_update_flag(enum mpv_render_update_flag value); - -+/* CIntFromPy.proto */ -+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); -+ - /* CIntToPy.proto */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value); - - /* CIntToPy.proto */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value); - --/* CIntToPy.proto */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_format(enum mpv_format value); -- --/* CIntToPy.proto */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); -- --/* CIntFromPy.proto */ --static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); -- --/* CIntFromPy.proto */ --static CYTHON_INLINE enum mpv_event_id __Pyx_PyInt_As_enum__mpv_event_id(PyObject *); -- --/* CIntFromPy.proto */ --static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); -- - /* CIntFromPy.proto */ - static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *); - -+/* CIntToPy.proto */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_format(enum mpv_format value); -+ - /* CIntFromPy.proto */ - static CYTHON_INLINE enum mpv_format __Pyx_PyInt_As_enum__mpv_format(PyObject *); - -@@ -1801,6 +1835,9 @@ static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *); - /* CIntFromPy.proto */ - static CYTHON_INLINE intptr_t __Pyx_PyInt_As_intptr_t(PyObject *); - -+/* CIntToPy.proto */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); -+ - /* CheckBinaryVersion.proto */ - static int __Pyx_check_binary_version(void); - -@@ -1808,7 +1845,6 @@ static int __Pyx_check_binary_version(void); - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - - static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v_self, struct mpv_event_end_file *__pyx_v_eof); /* proto*/ --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, struct mpv_event_script_input_dispatch *__pyx_v_input); /* proto*/ - static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, struct mpv_event_log_message *__pyx_v_msg); /* proto*/ - static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, struct mpv_event_property *__pyx_v_prop); /* proto*/ - static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event); /* proto*/ -@@ -1834,12 +1870,10 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(st - - /* Module declarations from 'vidcutter.libs.mpv' */ - static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached = 0; --static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_InputDispatch = 0; - static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage = 0; - static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_Property = 0; - static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_Event = 0; - static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_Context = 0; --static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_OpenGLContext = 0; - static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams = 0; - static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo = 0; - static PyTypeObject *__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext = 0; -@@ -1855,7 +1889,6 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *); /*proto*/ - static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *, PyObject *); /*proto*/ - static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *); /*proto*/ - static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *, PyObject *); /*proto*/ --static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_InputDispatch__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *, PyObject *); /*proto*/ - static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *, PyObject *); /*proto*/ - static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *, PyObject *); /*proto*/ - static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, PyObject *); /*proto*/ -@@ -1873,7 +1906,6 @@ static PyObject *__pyx_builtin_range; - static PyObject *__pyx_builtin_id; - static PyObject *__pyx_builtin_enumerate; - static PyObject *__pyx_builtin_TypeError; --static PyObject *__pyx_builtin_DeprecationWarning; - static const char __pyx_k_e[] = "e"; - static const char __pyx_k_h[] = "h"; - static const char __pyx_k_k[] = "k"; -@@ -1900,7 +1932,6 @@ static const char __pyx_k_call[] = "call"; - static const char __pyx_k_code[] = "code"; - static const char __pyx_k_data[] = "data"; - static const char __pyx_k_dict[] = "__dict__"; --static const char __pyx_k_exts[] = "exts"; - static const char __pyx_k_idle[] = "idle"; - static const char __pyx_k_info[] = "info"; - static const char __pyx_k_init[] = "__init__"; -@@ -1926,7 +1957,6 @@ static const char __pyx_k_error[] = "error"; - static const char __pyx_k_event[] = "event"; - static const char __pyx_k_fatal[] = "fatal"; - static const char __pyx_k_nomem[] = "nomem"; --static const char __pyx_k_pause[] = "pause"; - static const char __pyx_k_range[] = "range"; - static const char __pyx_k_start[] = "start"; - static const char __pyx_k_trace[] = "trace"; -@@ -1973,7 +2003,6 @@ static const char __pyx_k_present[] = "present"; - static const char __pyx_k_release[] = "release"; - static const char __pyx_k_success[] = "success"; - static const char __pyx_k_timeout[] = "timeout"; --static const char __pyx_k_unpause[] = "unpause"; - static const char __pyx_k_version[] = "__version__"; - static const char __pyx_k_wrapped[] = "wrapped"; - static const char __pyx_k_MPVError[] = "MPVError"; -@@ -1998,7 +2027,6 @@ static const char __pyx_k_pyx_state[] = "__pyx_state"; - static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; - static const char __pyx_k_render_fd[] = "render_fd"; - static const char __pyx_k_threading[] = "threading"; --static const char __pyx_k_uninit_gl[] = "uninit_gl"; - static const char __pyx_k_API_OPENGL[] = "API_OPENGL"; - static const char __pyx_k_CAPI_MAJOR[] = "_CAPI_MAJOR"; - static const char __pyx_k_CAPI_MINOR[] = "_CAPI_MINOR"; -@@ -2038,8 +2066,6 @@ static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; - static const char __pyx_k_set_property[] = "set_property"; - static const char __pyx_k_stringsource[] = "stringsource"; - static const char __pyx_k_version_info[] = "version_info"; --static const char __pyx_k_InputDispatch[] = "InputDispatch"; --static const char __pyx_k_OpenGLContext[] = "OpenGLContext"; - static const char __pyx_k_RenderContext[] = "RenderContext"; - static const char __pyx_k_ReplyUserData[] = "_ReplyUserData"; - static const char __pyx_k_command_error[] = "command_error"; -@@ -2053,18 +2079,15 @@ static const char __pyx_k_CallbackThread[] = "CallbackThread"; - static const char __pyx_k_MIN_CAPI_MINOR[] = "_MIN_CAPI_MINOR"; - static const char __pyx_k_ao_init_failed[] = "ao_init_failed"; - static const char __pyx_k_audio_reconfig[] = "audio_reconfig"; --static const char __pyx_k_chapter_change[] = "chapter_change"; - static const char __pyx_k_client_message[] = "client_message"; - static const char __pyx_k_loading_failed[] = "loading_failed"; - static const char __pyx_k_property_error[] = "property_error"; - static const char __pyx_k_skip_rendering[] = "skip_rendering"; --static const char __pyx_k_tracks_changed[] = "tracks_changed"; - static const char __pyx_k_unknown_format[] = "unknown_format"; - static const char __pyx_k_video_reconfig[] = "video_reconfig"; - static const char __pyx_k_vo_init_failed[] = "vo_init_failed"; - static const char __pyx_k_MPVError___init[] = "MPVError.__init__"; - static const char __pyx_k_internal_format[] = "internal_format"; --static const char __pyx_k_metadata_update[] = "metadata_update"; - static const char __pyx_k_not_implemented[] = "not_implemented"; - static const char __pyx_k_nothing_to_play[] = "nothing_to_play"; - static const char __pyx_k_property_change[] = "property_change"; -@@ -2073,7 +2096,6 @@ static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; - static const char __pyx_k_set_icc_profile[] = "set_icc_profile"; - static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; - static const char __pyx_k_surrogateescape[] = "surrogateescape"; --static const char __pyx_k_tracks_switched[] = "tracks_switched"; - static const char __pyx_k_EndOfFileReached[] = "EndOfFileReached"; - static const char __pyx_k_advanced_control[] = "advanced_control"; - static const char __pyx_k_drmModeAtomicReq[] = "drmModeAtomicReq*"; -@@ -2085,7 +2107,6 @@ static const char __pyx_k_invalid_parameter[] = "invalid_parameter"; - static const char __pyx_k_set_ambient_light[] = "set_ambient_light"; - static const char __pyx_k_CallbackThread_run[] = "CallbackThread.run"; - static const char __pyx_k_CallbackThread_set[] = "CallbackThread.set"; --static const char __pyx_k_DeprecationWarning[] = "DeprecationWarning"; - static const char __pyx_k_UnicodeDecodeError[] = "UnicodeDecodeError"; - static const char __pyx_k_UnicodeEncodeError[] = "UnicodeEncodeError"; - static const char __pyx_k_Unknown_api_type_r[] = "Unknown api_type %r"; -@@ -2109,12 +2130,9 @@ static const char __pyx_k_RenderParams_overflow[] = "RenderParams overflow"; - static const char __pyx_k_block_for_target_time[] = "block_for_target_time"; - static const char __pyx_k_errors_locals_wrapped[] = "_errors..wrapped"; - static const char __pyx_k_pyx_unpickle_Property[] = "__pyx_unpickle_Property"; --static const char __pyx_k_script_input_dispatch[] = "script_input_dispatch"; - static const char __pyx_k_Context_creation_error[] = "Context creation error"; - static const char __pyx_k_CallbackThread_shutdown[] = "CallbackThread.shutdown"; - static const char __pyx_k_pyx_unpickle_LogMessage[] = "__pyx_unpickle_LogMessage"; --static const char __pyx_k_OpenGL_API_not_available[] = "OpenGL API not available"; --static const char __pyx_k_pyx_unpickle_InputDispatch[] = "__pyx_unpickle_InputDispatch"; - static const char __pyx_k_CallbackThread_mpv_callback[] = "CallbackThread.mpv_callback"; - static const char __pyx_k_pyx_unpickle_RenderFrameInfo[] = "__pyx_unpickle_RenderFrameInfo"; - static const char __pyx_k_vidcutter_libs_pympv_mpv_pyx[] = "vidcutter/libs/pympv/mpv.pyx"; -@@ -2125,11 +2143,9 @@ static const char __pyx_k_self_params_cannot_be_converted[] = "self.params canno - static const char __pyx_k_Incompatible_checksums_s_vs_0x05[] = "Incompatible checksums (%s vs 0x0572d11 = (data, name))"; - static const char __pyx_k_Incompatible_checksums_s_vs_0x56[] = "Incompatible checksums (%s vs 0x56be9b6 = (error, reason))"; - static const char __pyx_k_Incompatible_checksums_s_vs_0x87[] = "Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))"; --static const char __pyx_k_Incompatible_checksums_s_vs_0xbf[] = "Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))"; - static const char __pyx_k_Incompatible_checksums_s_vs_0xd4[] = "Incompatible checksums (%s vs 0xd41d8cd = ())"; - static const char __pyx_k_Incompatible_checksums_s_vs_0xda[] = "Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))"; - static const char __pyx_k_Known_possible_values_for_EndOfF[] = "Known possible values for EndOfFileReached reason.\n\n You should handle the possibility that the reason may not be any of these values.\n "; --static const char __pyx_k_OpenGLContext_is_deprecated_plea[] = "OpenGLContext is deprecated, please switch to RenderContext"; - static const char __pyx_k_Set_of_known_error_codes_from_Mp[] = "Set of known error codes from MpvError and Event responses.\n\n Mostly wraps the enum mpv_error.\n Values might not always be integers in the future.\n You should handle the possibility that error codes may not be any of these values.\n "; - static const char __pyx_k_Set_of_known_values_for_Event_id[] = "Set of known values for Event ids.\n\n Mostly wraps the enum mpv_event_id.\n Values might not always be integers in the future.\n You should handle the possibility that event ids may not be any of these values.\n "; - static const char __pyx_k_Unknown_or_invalid_pointer_objec[] = "Unknown or invalid pointer object: %r"; -@@ -2151,7 +2167,6 @@ static PyObject *__pyx_n_s_CallbackThread_set; - static PyObject *__pyx_n_s_CallbackThread_shutdown; - static PyObject *__pyx_n_s_Context; - static PyObject *__pyx_kp_s_Context_creation_error; --static PyObject *__pyx_n_s_DeprecationWarning; - static PyObject *__pyx_n_s_EOFReasons; - static PyObject *__pyx_n_s_EndOfFileReached; - static PyObject *__pyx_n_s_Errors; -@@ -2161,20 +2176,15 @@ static PyObject *__pyx_n_s_ImportError; - static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x05; - static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x56; - static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x87; --static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xbf; - static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xd4; - static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xda; --static PyObject *__pyx_n_s_InputDispatch; - static PyObject *__pyx_kp_s_Known_possible_values_for_EndOfF; - static PyObject *__pyx_n_s_LogLevels; - static PyObject *__pyx_n_s_LogMessage; - static PyObject *__pyx_n_s_MIN_CAPI_MINOR; - static PyObject *__pyx_n_s_MPVError; - static PyObject *__pyx_n_s_MPVError___init; --static PyObject *__pyx_n_s_OpenGLContext; --static PyObject *__pyx_kp_s_OpenGLContext_is_deprecated_plea; - static PyObject *__pyx_n_s_OpenGLRenderContext; --static PyObject *__pyx_kp_s_OpenGL_API_not_available; - static PyObject *__pyx_n_s_PickleError; - static PyObject *__pyx_n_s_Property; - static PyObject *__pyx_n_s_PyMPVError; -@@ -2211,7 +2221,6 @@ static PyObject *__pyx_n_s_block_for_target_time; - static PyObject *__pyx_n_s_block_vsync; - static PyObject *__pyx_n_s_call; - static PyObject *__pyx_n_s_callback; --static PyObject *__pyx_n_s_chapter_change; - static PyObject *__pyx_n_s_client_message; - static PyObject *__pyx_n_s_cline_in_traceback; - static PyObject *__pyx_n_s_close; -@@ -2244,7 +2253,6 @@ static PyObject *__pyx_n_s_error; - static PyObject *__pyx_n_s_errors; - static PyObject *__pyx_n_s_errors_locals_wrapped; - static PyObject *__pyx_n_s_event; --static PyObject *__pyx_n_s_exts; - static PyObject *__pyx_n_s_fatal; - static PyObject *__pyx_n_s_fbo; - static PyObject *__pyx_n_s_fd; -@@ -2280,7 +2288,6 @@ static PyObject *__pyx_n_s_lock; - static PyObject *__pyx_n_s_log_message; - static PyObject *__pyx_n_s_main; - static PyObject *__pyx_n_s_metaclass; --static PyObject *__pyx_n_s_metadata_update; - static PyObject *__pyx_n_s_module; - static PyObject *__pyx_n_s_mpv; - static PyObject *__pyx_n_s_mpv_callback; -@@ -2301,7 +2308,6 @@ static PyObject *__pyx_n_s_opengl_fbo; - static PyObject *__pyx_n_s_opengl_init_params; - static PyObject *__pyx_n_s_option_error; - static PyObject *__pyx_n_s_option_format; --static PyObject *__pyx_n_s_pause; - static PyObject *__pyx_n_s_pickle; - static PyObject *__pyx_n_s_playback_restart; - static PyObject *__pyx_n_s_prepare; -@@ -2319,7 +2325,6 @@ static PyObject *__pyx_n_s_pyx_state; - static PyObject *__pyx_n_s_pyx_type; - static PyObject *__pyx_n_s_pyx_unpickle_EndOfFileReached; - static PyObject *__pyx_n_s_pyx_unpickle_Event; --static PyObject *__pyx_n_s_pyx_unpickle_InputDispatch; - static PyObject *__pyx_n_s_pyx_unpickle_LogMessage; - static PyObject *__pyx_n_s_pyx_unpickle_Property; - static PyObject *__pyx_n_s_pyx_unpickle_RenderFrameInfo; -@@ -2340,7 +2345,6 @@ static PyObject *__pyx_n_s_repeat; - static PyObject *__pyx_n_s_request_event; - static PyObject *__pyx_n_s_run; - static PyObject *__pyx_n_s_s; --static PyObject *__pyx_n_s_script_input_dispatch; - static PyObject *__pyx_n_s_seek; - static PyObject *__pyx_n_s_self; - static PyObject *__pyx_kp_s_self__ctx_cannot_be_converted_to; -@@ -2373,13 +2377,9 @@ static PyObject *__pyx_n_s_threading; - static PyObject *__pyx_n_s_tick; - static PyObject *__pyx_n_s_timeout; - static PyObject *__pyx_n_s_trace; --static PyObject *__pyx_n_s_tracks_changed; --static PyObject *__pyx_n_s_tracks_switched; --static PyObject *__pyx_n_s_uninit_gl; - static PyObject *__pyx_n_s_uninitialized; - static PyObject *__pyx_n_s_unknown_format; - static PyObject *__pyx_n_s_unobserve_property; --static PyObject *__pyx_n_s_unpause; - static PyObject *__pyx_n_s_unsupported; - static PyObject *__pyx_n_s_update; - static PyObject *__pyx_kp_s_utf_8; -@@ -2409,14 +2409,6 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_2__set__(str - static int __pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v_self); /* proto */ - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v_self); /* proto */ - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ --static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ --static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ --static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ --static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self); /* proto */ - static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ - static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self); /* proto */ -@@ -2462,41 +2454,29 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_ - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_suspend(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2resume(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4request_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_enable); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6set_log_level(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_loglevel); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8load_config(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_filename); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10_format_for(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data, PyObject *__pyx_v_cmdlist); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16try_get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data, PyObject *__pyx_v_default); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18try_get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_default); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22set_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24set_option(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28wait_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_36__cinit__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38observe_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_40unobserve_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_data); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_42shutdown(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44opengl_cb_api(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_46__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ --static int __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_2init_gl(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_exts, PyObject *__pyx_v_get_proc_address); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_4set_update_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_cb); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_6draw(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_fbo, PyObject *__pyx_v_w, PyObject *__pyx_v_h); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_8report_flip(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_time); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_10uninit_gl(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self); /* proto */ --static void __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_12__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_enable); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_loglevel); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_filename); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data, PyObject *__pyx_v_cmdlist); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data, PyObject *__pyx_v_default); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_default); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ -+static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_data); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ -+static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_42__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ - static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self); /* proto */ - static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self); /* proto */ - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self); /* proto */ -@@ -2526,18 +2506,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNU - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ - static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_InputDispatch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_LogMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Property(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_Event(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16__pyx_unpickle_RenderFrameInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_LogMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_Property(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Event(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_RenderFrameInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_InputDispatch(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Property(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Event(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Context(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -@@ -2545,13 +2522,12 @@ static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext(PyTypeOb - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ - static PyObject *__pyx_int_0; - static PyObject *__pyx_int_1; -+static PyObject *__pyx_int_2; - static PyObject *__pyx_int_3; --static PyObject *__pyx_int_9; - static PyObject *__pyx_int_32; - static PyObject *__pyx_int_5713169; - static PyObject *__pyx_int_90958262; - static PyObject *__pyx_int_142036910; --static PyObject *__pyx_int_200688041; - static PyObject *__pyx_int_222419149; - static PyObject *__pyx_int_228822053; - static PyObject *__pyx_int_neg_1; -@@ -2573,48 +2549,43 @@ static PyObject *__pyx_tuple__16; - static PyObject *__pyx_tuple__17; - static PyObject *__pyx_tuple__18; - static PyObject *__pyx_tuple__19; --static PyObject *__pyx_tuple__20; - static PyObject *__pyx_tuple__21; --static PyObject *__pyx_tuple__22; --static PyObject *__pyx_tuple__24; --static PyObject *__pyx_tuple__26; -+static PyObject *__pyx_tuple__23; -+static PyObject *__pyx_tuple__25; -+static PyObject *__pyx_tuple__27; - static PyObject *__pyx_tuple__28; - static PyObject *__pyx_tuple__30; --static PyObject *__pyx_tuple__31; --static PyObject *__pyx_tuple__33; --static PyObject *__pyx_tuple__35; --static PyObject *__pyx_tuple__37; --static PyObject *__pyx_tuple__39; --static PyObject *__pyx_tuple__41; --static PyObject *__pyx_tuple__43; --static PyObject *__pyx_tuple__45; --static PyObject *__pyx_tuple__47; --static PyObject *__pyx_tuple__49; --static PyObject *__pyx_tuple__51; --static PyObject *__pyx_tuple__53; --static PyObject *__pyx_tuple__55; --static PyObject *__pyx_tuple__57; --static PyObject *__pyx_tuple__59; -+static PyObject *__pyx_tuple__32; -+static PyObject *__pyx_tuple__34; -+static PyObject *__pyx_tuple__36; -+static PyObject *__pyx_tuple__38; -+static PyObject *__pyx_tuple__40; -+static PyObject *__pyx_tuple__42; -+static PyObject *__pyx_tuple__44; -+static PyObject *__pyx_tuple__46; -+static PyObject *__pyx_tuple__48; -+static PyObject *__pyx_tuple__50; -+static PyObject *__pyx_tuple__52; -+static PyObject *__pyx_tuple__54; - static PyObject *__pyx_codeobj__2; --static PyObject *__pyx_codeobj__23; --static PyObject *__pyx_codeobj__25; --static PyObject *__pyx_codeobj__27; -+static PyObject *__pyx_codeobj__20; -+static PyObject *__pyx_codeobj__22; -+static PyObject *__pyx_codeobj__24; -+static PyObject *__pyx_codeobj__26; - static PyObject *__pyx_codeobj__29; --static PyObject *__pyx_codeobj__32; --static PyObject *__pyx_codeobj__34; --static PyObject *__pyx_codeobj__36; --static PyObject *__pyx_codeobj__38; --static PyObject *__pyx_codeobj__40; --static PyObject *__pyx_codeobj__42; --static PyObject *__pyx_codeobj__44; --static PyObject *__pyx_codeobj__46; --static PyObject *__pyx_codeobj__48; --static PyObject *__pyx_codeobj__50; --static PyObject *__pyx_codeobj__52; --static PyObject *__pyx_codeobj__54; --static PyObject *__pyx_codeobj__56; --static PyObject *__pyx_codeobj__58; --static PyObject *__pyx_codeobj__60; -+static PyObject *__pyx_codeobj__31; -+static PyObject *__pyx_codeobj__33; -+static PyObject *__pyx_codeobj__35; -+static PyObject *__pyx_codeobj__37; -+static PyObject *__pyx_codeobj__39; -+static PyObject *__pyx_codeobj__41; -+static PyObject *__pyx_codeobj__43; -+static PyObject *__pyx_codeobj__45; -+static PyObject *__pyx_codeobj__47; -+static PyObject *__pyx_codeobj__49; -+static PyObject *__pyx_codeobj__51; -+static PyObject *__pyx_codeobj__53; -+static PyObject *__pyx_codeobj__55; - /* Late includes */ - - /* "vidcutter/libs/pympv/mpv.pyx":55 -@@ -2987,7 +2958,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - * # In python2, assume bytes and walk right through - * return s # <<<<<<<<<<<<<< - * -- * PyEval_InitThreads() -+ * Py_Initialize() - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_s); -@@ -3616,15 +3587,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_2__setstate_c - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":176 -- * cdef public object arg0, type -+/* "vidcutter/libs/pympv/mpv.pyx":189 -+ * cdef public object prefix, level, text, log_level - * -- * cdef _init(self, mpv_event_script_input_dispatch* input): # <<<<<<<<<<<<<< -- * self.arg0 = input.arg0 -- * self.type = _strdec(input.type) -+ * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< -+ * self.level = _strdec(msg.level) -+ * self.prefix = _strdec(msg.prefix) - */ - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, struct mpv_event_script_input_dispatch *__pyx_v_input) { -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, struct mpv_event_log_message *__pyx_v_msg) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -@@ -3636,31 +3607,82 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_init", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":177 -+ /* "vidcutter/libs/pympv/mpv.pyx":190 - * -- * cdef _init(self, mpv_event_script_input_dispatch* input): -- * self.arg0 = input.arg0 # <<<<<<<<<<<<<< -- * self.type = _strdec(input.type) -- * return self -+ * cdef _init(self, mpv_event_log_message* msg): -+ * self.level = _strdec(msg.level) # <<<<<<<<<<<<<< -+ * self.prefix = _strdec(msg.prefix) -+ * self.text = _strdec(msg.text) -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v_self->level); -+ __Pyx_DECREF(__pyx_v_self->level); -+ __pyx_v_self->level = __pyx_t_1; -+ __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":191 -+ * cdef _init(self, mpv_event_log_message* msg): -+ * self.level = _strdec(msg.level) -+ * self.prefix = _strdec(msg.prefix) # <<<<<<<<<<<<<< -+ * self.text = _strdec(msg.text) -+ * self.log_level = msg.log_level - */ -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_input->arg0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->arg0); -- __Pyx_DECREF(__pyx_v_self->arg0); -- __pyx_v_self->arg0 = __pyx_t_1; -+ __Pyx_GOTREF(__pyx_v_self->prefix); -+ __Pyx_DECREF(__pyx_v_self->prefix); -+ __pyx_v_self->prefix = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":178 -- * cdef _init(self, mpv_event_script_input_dispatch* input): -- * self.arg0 = input.arg0 -- * self.type = _strdec(input.type) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":192 -+ * self.level = _strdec(msg.level) -+ * self.prefix = _strdec(msg.prefix) -+ * self.text = _strdec(msg.text) # <<<<<<<<<<<<<< -+ * self.log_level = msg.log_level - * return self -- * - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_input->type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 178, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -3675,18 +3697,33 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->type); -- __Pyx_DECREF(__pyx_v_self->type); -- __pyx_v_self->type = __pyx_t_1; -+ __Pyx_GOTREF(__pyx_v_self->text); -+ __Pyx_DECREF(__pyx_v_self->text); -+ __pyx_v_self->text = __pyx_t_1; -+ __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":193 -+ * self.prefix = _strdec(msg.prefix) -+ * self.text = _strdec(msg.text) -+ * self.log_level = msg.log_level # <<<<<<<<<<<<<< -+ * return self -+ * -+ */ -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_msg->log_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v_self->log_level); -+ __Pyx_DECREF(__pyx_v_self->log_level); -+ __pyx_v_self->log_level = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":179 -- * self.arg0 = input.arg0 -- * self.type = _strdec(input.type) -+ /* "vidcutter/libs/pympv/mpv.pyx":194 -+ * self.text = _strdec(msg.text) -+ * self.log_level = msg.log_level - * return self # <<<<<<<<<<<<<< - * - * -@@ -3696,12 +3733,12 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":176 -- * cdef public object arg0, type -+ /* "vidcutter/libs/pympv/mpv.pyx":189 -+ * cdef public object prefix, level, text, log_level - * -- * cdef _init(self, mpv_event_script_input_dispatch* input): # <<<<<<<<<<<<<< -- * self.arg0 = input.arg0 -- * self.type = _strdec(input.type) -+ * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< -+ * self.level = _strdec(msg.level) -+ * self.prefix = _strdec(msg.prefix) - */ - - /* function exit code */ -@@ -3710,7 +3747,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.InputDispatch._init", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage._init", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); -@@ -3718,34 +3755,34 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init(struct __py - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":174 -- * Wraps: mpv_event_script_input_dispatch -+/* "vidcutter/libs/pympv/mpv.pyx":187 -+ * Wraps: mpv_event_log_message - * """ -- * cdef public object arg0, type # <<<<<<<<<<<<<< -+ * cdef public object prefix, level, text, log_level # <<<<<<<<<<<<<< - * -- * cdef _init(self, mpv_event_script_input_dispatch* input): -+ * cdef _init(self, mpv_event_log_message* msg): - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_1__get__(PyObject *__pyx_v_self) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->arg0); -- __pyx_r = __pyx_v_self->arg0; -+ __Pyx_INCREF(__pyx_v_self->prefix); -+ __pyx_r = __pyx_v_self->prefix; - goto __pyx_L0; - - /* function exit code */ -@@ -3756,27 +3793,27 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0___get__(st - } - - /* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v_value) { -+static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->arg0); -- __Pyx_DECREF(__pyx_v_self->arg0); -- __pyx_v_self->arg0 = __pyx_v_value; -+ __Pyx_GOTREF(__pyx_v_self->prefix); -+ __Pyx_DECREF(__pyx_v_self->prefix); -+ __pyx_v_self->prefix = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; -@@ -3785,27 +3822,27 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_2__set__(struct - } - - /* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_5__del__(PyObject *__pyx_v_self) { -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(PyObject *__pyx_v_self); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { -+static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->arg0); -- __Pyx_DECREF(__pyx_v_self->arg0); -- __pyx_v_self->arg0 = Py_None; -+ __Pyx_GOTREF(__pyx_v_self->prefix); -+ __Pyx_DECREF(__pyx_v_self->prefix); -+ __pyx_v_self->prefix = Py_None; - - /* function exit code */ - __pyx_r = 0; -@@ -3814,25 +3851,25 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_4__del__(struct - } - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_1__get__(PyObject *__pyx_v_self) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->type); -- __pyx_r = __pyx_v_self->type; -+ __Pyx_INCREF(__pyx_v_self->level); -+ __pyx_r = __pyx_v_self->level; - goto __pyx_L0; - - /* function exit code */ -@@ -3843,27 +3880,27 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type___get__(st - } - - /* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v_value) { -+static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->type); -- __Pyx_DECREF(__pyx_v_self->type); -- __pyx_v_self->type = __pyx_v_value; -+ __Pyx_GOTREF(__pyx_v_self->level); -+ __Pyx_DECREF(__pyx_v_self->level); -+ __pyx_v_self->level = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; -@@ -3872,27 +3909,27 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_2__set__(struct - } - - /* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_5__del__(PyObject *__pyx_v_self) { -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(PyObject *__pyx_v_self); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { -+static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->type); -- __Pyx_DECREF(__pyx_v_self->type); -- __pyx_v_self->type = Py_None; -+ __Pyx_GOTREF(__pyx_v_self->level); -+ __Pyx_DECREF(__pyx_v_self->level); -+ __pyx_v_self->level = Py_None; - - /* function exit code */ - __pyx_r = 0; -@@ -3900,63 +3937,243 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_4type_4__del__(struct - return __pyx_r; - } - --/* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * cdef tuple state -- * cdef object _dict -- */ -- - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self) { -- PyObject *__pyx_v_state = 0; -- PyObject *__pyx_v__dict = 0; -- int __pyx_v_use_setstate; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_self->text); -+ __pyx_r = __pyx_v_self->text; -+ goto __pyx_L0; - -- /* "(tree fragment)":5 -- * cdef object _dict -- * cdef bint use_setstate -- * state = (self.arg0, self.type) # <<<<<<<<<<<<<< -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: -- */ -- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_v_self->arg0); -- __Pyx_GIVEREF(__pyx_v_self->arg0); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->arg0); -- __Pyx_INCREF(__pyx_v_self->type); -- __Pyx_GIVEREF(__pyx_v_self->type); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->type); -+ /* function exit code */ -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__", 0); -+ __Pyx_INCREF(__pyx_v_value); -+ __Pyx_GIVEREF(__pyx_v_value); -+ __Pyx_GOTREF(__pyx_v_self->text); -+ __Pyx_DECREF(__pyx_v_self->text); -+ __pyx_v_self->text = __pyx_v_value; -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(PyObject *__pyx_v_self); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(PyObject *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__", 0); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ __Pyx_GOTREF(__pyx_v_self->text); -+ __Pyx_DECREF(__pyx_v_self->text); -+ __pyx_v_self->text = Py_None; -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_self->log_level); -+ __pyx_r = __pyx_v_self->log_level; -+ goto __pyx_L0; -+ -+ /* function exit code */ -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__", 0); -+ __Pyx_INCREF(__pyx_v_value); -+ __Pyx_GIVEREF(__pyx_v_value); -+ __Pyx_GOTREF(__pyx_v_self->log_level); -+ __Pyx_DECREF(__pyx_v_self->log_level); -+ __pyx_v_self->log_level = __pyx_v_value; -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(PyObject *__pyx_v_self); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(PyObject *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__", 0); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ __Pyx_GOTREF(__pyx_v_self->log_level); -+ __Pyx_DECREF(__pyx_v_self->log_level); -+ __pyx_v_self->log_level = Py_None; -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * cdef tuple state -+ * cdef object _dict -+ */ -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -+ PyObject *__pyx_v_state = 0; -+ PyObject *__pyx_v__dict = 0; -+ int __pyx_v_use_setstate; -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_2; -+ int __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; -+ int __pyx_t_5; -+ PyObject *__pyx_t_6 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ -+ /* "(tree fragment)":5 -+ * cdef object _dict -+ * cdef bint use_setstate -+ * state = (self.level, self.log_level, self.prefix, self.text) # <<<<<<<<<<<<<< -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: -+ */ -+ __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_INCREF(__pyx_v_self->level); -+ __Pyx_GIVEREF(__pyx_v_self->level); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->level); -+ __Pyx_INCREF(__pyx_v_self->log_level); -+ __Pyx_GIVEREF(__pyx_v_self->log_level); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->log_level); -+ __Pyx_INCREF(__pyx_v_self->prefix); -+ __Pyx_GIVEREF(__pyx_v_self->prefix); -+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->prefix); -+ __Pyx_INCREF(__pyx_v_self->text); -+ __Pyx_GIVEREF(__pyx_v_self->text); -+ PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->text); - __pyx_v_state = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "(tree fragment)":6 - * cdef bint use_setstate -- * state = (self.arg0, self.type) -+ * state = (self.level, self.log_level, self.prefix, self.text) - * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< - * if _dict is not None: - * state += (_dict,) -@@ -3967,7 +4184,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ - __pyx_t_1 = 0; - - /* "(tree fragment)":7 -- * state = (self.arg0, self.type) -+ * state = (self.level, self.log_level, self.prefix, self.text) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) -@@ -4000,12 +4217,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ - * state += (_dict,) - * use_setstate = True # <<<<<<<<<<<<<< - * else: -- * use_setstate = self.arg0 is not None or self.type is not None -+ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None - */ - __pyx_v_use_setstate = 1; - - /* "(tree fragment)":7 -- * state = (self.arg0, self.type) -+ * state = (self.level, self.log_level, self.prefix, self.text) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) -@@ -4017,19 +4234,33 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ - /* "(tree fragment)":11 - * use_setstate = True - * else: -- * use_setstate = self.arg0 is not None or self.type is not None # <<<<<<<<<<<<<< -+ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None # <<<<<<<<<<<<<< - * if use_setstate: -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state - */ - /*else*/ { -- __pyx_t_2 = (__pyx_v_self->arg0 != Py_None); -+ __pyx_t_2 = (__pyx_v_self->level != Py_None); -+ __pyx_t_5 = (__pyx_t_2 != 0); -+ if (!__pyx_t_5) { -+ } else { -+ __pyx_t_3 = __pyx_t_5; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_5 = (__pyx_v_self->log_level != Py_None); -+ __pyx_t_2 = (__pyx_t_5 != 0); -+ if (!__pyx_t_2) { -+ } else { -+ __pyx_t_3 = __pyx_t_2; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_2 = (__pyx_v_self->prefix != Py_None); - __pyx_t_5 = (__pyx_t_2 != 0); - if (!__pyx_t_5) { - } else { - __pyx_t_3 = __pyx_t_5; - goto __pyx_L4_bool_binop_done; - } -- __pyx_t_5 = (__pyx_v_self->type != Py_None); -+ __pyx_t_5 = (__pyx_v_self->text != Py_None); - __pyx_t_2 = (__pyx_t_5 != 0); - __pyx_t_3 = __pyx_t_2; - __pyx_L4_bool_binop_done:; -@@ -4039,32 +4270,32 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ - - /* "(tree fragment)":12 - * else: -- * use_setstate = self.arg0 is not None or self.type is not None -+ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None - * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state - * else: - */ - __pyx_t_3 = (__pyx_v_use_setstate != 0); - if (__pyx_t_3) { - - /* "(tree fragment)":13 -- * use_setstate = self.arg0 is not None or self.type is not None -+ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None - * if use_setstate: -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state # <<<<<<<<<<<<<< -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state # <<<<<<<<<<<<<< - * else: -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_InputDispatch); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_LogMessage); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_200688041); -- __Pyx_GIVEREF(__pyx_int_200688041); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_200688041); -+ __Pyx_INCREF(__pyx_int_142036910); -+ __Pyx_GIVEREF(__pyx_int_142036910); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_142036910); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); -@@ -4085,32 +4316,32 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ - - /* "(tree fragment)":12 - * else: -- * use_setstate = self.arg0 is not None or self.type is not None -+ * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None - * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state - * else: - */ - } - - /* "(tree fragment)":15 -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, None), state -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state - * else: -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) # <<<<<<<<<<<<<< -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_InputDispatch__set_state(self, __pyx_state) -+ * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_InputDispatch); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_LogMessage); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_200688041); -- __Pyx_GIVEREF(__pyx_int_200688041); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_200688041); -+ __Pyx_INCREF(__pyx_int_142036910); -+ __Pyx_GIVEREF(__pyx_int_142036910); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_142036910); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); -@@ -4138,7 +4369,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); -- __Pyx_AddTraceback("vidcutter.libs.mpv.InputDispatch.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_state); -@@ -4150,25 +4381,25 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch___reduce_cython_ - - /* "(tree fragment)":16 - * else: -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_InputDispatch__set_state(self, __pyx_state) -+ * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -@@ -4178,20 +4409,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cyth - __Pyx_RefNannySetupContext("__setstate_cython__", 0); - - /* "(tree fragment)":17 -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) - * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_InputDispatch__set_state(self, __pyx_state) # <<<<<<<<<<<<<< -+ * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) # <<<<<<<<<<<<<< - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_InputDispatch__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":16 - * else: -- * return __pyx_unpickle_InputDispatch, (type(self), 0xbf641a9, state) -+ * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_InputDispatch__set_state(self, __pyx_state) -+ * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) - */ - - /* function exit code */ -@@ -4199,7 +4430,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cyth - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.InputDispatch.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); -@@ -4207,1494 +4438,1687 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13InputDispatch_2__setstate_cyth - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":189 -- * cdef public object prefix, level, text, log_level -+/* "vidcutter/libs/pympv/mpv.pyx":197 - * -- * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< -- * self.level = _strdec(msg.level) -- * self.prefix = _strdec(msg.prefix) -+ * -+ * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< -+ * if node.format == MPV_FORMAT_STRING: -+ * return _strdec(node.u.string) - */ - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, struct mpv_event_log_message *__pyx_v_msg) { -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_node __pyx_v_node) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; -+ int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_init", 0); -+ __Pyx_RefNannySetupContext("_convert_node_value", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":190 -+ /* "vidcutter/libs/pympv/mpv.pyx":198 - * -- * cdef _init(self, mpv_event_log_message* msg): -- * self.level = _strdec(msg.level) # <<<<<<<<<<<<<< -- * self.prefix = _strdec(msg.prefix) -- * self.text = _strdec(msg.text) -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->level); -- __Pyx_DECREF(__pyx_v_self->level); -- __pyx_v_self->level = __pyx_t_1; -- __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":191 -- * cdef _init(self, mpv_event_log_message* msg): -- * self.level = _strdec(msg.level) -- * self.prefix = _strdec(msg.prefix) # <<<<<<<<<<<<<< -- * self.text = _strdec(msg.text) -- * self.log_level = msg.log_level -+ * cdef _convert_node_value(mpv_node node): -+ * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -+ * return _strdec(node.u.string) -+ * elif node.format == MPV_FORMAT_FLAG: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->prefix); -- __Pyx_DECREF(__pyx_v_self->prefix); -- __pyx_v_self->prefix = __pyx_t_1; -- __pyx_t_1 = 0; -+ switch (__pyx_v_node.format) { -+ case MPV_FORMAT_STRING: - -- /* "vidcutter/libs/pympv/mpv.pyx":192 -- * self.level = _strdec(msg.level) -- * self.prefix = _strdec(msg.prefix) -- * self.text = _strdec(msg.text) # <<<<<<<<<<<<<< -- * self.log_level = msg.log_level -- * return self -+ /* "vidcutter/libs/pympv/mpv.pyx":199 -+ * cdef _convert_node_value(mpv_node node): -+ * if node.format == MPV_FORMAT_STRING: -+ * return _strdec(node.u.string) # <<<<<<<<<<<<<< -+ * elif node.format == MPV_FORMAT_FLAG: -+ * return not not int(node.u.flag) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_node.u.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } - } -- } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->text); -- __Pyx_DECREF(__pyx_v_self->text); -- __pyx_v_self->text = __pyx_t_1; -- __pyx_t_1 = 0; -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":193 -- * self.prefix = _strdec(msg.prefix) -- * self.text = _strdec(msg.text) -- * self.log_level = msg.log_level # <<<<<<<<<<<<<< -- * return self -+ /* "vidcutter/libs/pympv/mpv.pyx":198 - * -+ * cdef _convert_node_value(mpv_node node): -+ * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -+ * return _strdec(node.u.string) -+ * elif node.format == MPV_FORMAT_FLAG: - */ -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_msg->log_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->log_level); -- __Pyx_DECREF(__pyx_v_self->log_level); -- __pyx_v_self->log_level = __pyx_t_1; -- __pyx_t_1 = 0; -+ break; -+ case MPV_FORMAT_FLAG: - -- /* "vidcutter/libs/pympv/mpv.pyx":194 -- * self.text = _strdec(msg.text) -- * self.log_level = msg.log_level -- * return self # <<<<<<<<<<<<<< -- * -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":201 -+ * return _strdec(node.u.string) -+ * elif node.format == MPV_FORMAT_FLAG: -+ * return not not int(node.u.flag) # <<<<<<<<<<<<<< -+ * elif node.format == MPV_FORMAT_INT64: -+ * return int(node.u.int64) - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(((PyObject *)__pyx_v_self)); -- __pyx_r = ((PyObject *)__pyx_v_self); -- goto __pyx_L0; -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_node.u.flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 201, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = __Pyx_PyBool_FromLong((!((!__pyx_t_5) != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_r = __pyx_t_2; -+ __pyx_t_2 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":189 -- * cdef public object prefix, level, text, log_level -- * -- * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< -- * self.level = _strdec(msg.level) -- * self.prefix = _strdec(msg.prefix) -+ /* "vidcutter/libs/pympv/mpv.pyx":200 -+ * if node.format == MPV_FORMAT_STRING: -+ * return _strdec(node.u.string) -+ * elif node.format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -+ * return not not int(node.u.flag) -+ * elif node.format == MPV_FORMAT_INT64: - */ -+ break; -+ case MPV_FORMAT_INT64: - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage._init", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":203 -+ * return not not int(node.u.flag) -+ * elif node.format == MPV_FORMAT_INT64: -+ * return int(node.u.int64) # <<<<<<<<<<<<<< -+ * elif node.format == MPV_FORMAT_DOUBLE: -+ * return float(node.u.double_) -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_2 = __Pyx_PyInt_From_int64_t(__pyx_v_node.u.int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - --/* "vidcutter/libs/pympv/mpv.pyx":187 -- * Wraps: mpv_event_log_message -- * """ -- * cdef public object prefix, level, text, log_level # <<<<<<<<<<<<<< -- * -- * cdef _init(self, mpv_event_log_message* msg): -+ /* "vidcutter/libs/pympv/mpv.pyx":202 -+ * elif node.format == MPV_FORMAT_FLAG: -+ * return not not int(node.u.flag) -+ * elif node.format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -+ * return int(node.u.int64) -+ * elif node.format == MPV_FORMAT_DOUBLE: - */ -+ break; -+ case MPV_FORMAT_DOUBLE: - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__", 0); -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->prefix); -- __pyx_r = __pyx_v_self->prefix; -- goto __pyx_L0; -- -- /* function exit code */ -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":205 -+ * return int(node.u.int64) -+ * elif node.format == MPV_FORMAT_DOUBLE: -+ * return float(node.u.double_) # <<<<<<<<<<<<<< -+ * elif node.format == MPV_FORMAT_NODE_MAP: -+ * return _convert_value(node.u.list, node.format) -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = PyFloat_FromDouble(__pyx_v_node.u.double_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ /* "vidcutter/libs/pympv/mpv.pyx":204 -+ * elif node.format == MPV_FORMAT_INT64: -+ * return int(node.u.int64) -+ * elif node.format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -+ * return float(node.u.double_) -+ * elif node.format == MPV_FORMAT_NODE_MAP: -+ */ -+ break; -+ case MPV_FORMAT_NODE_MAP: - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":207 -+ * return float(node.u.double_) -+ * elif node.format == MPV_FORMAT_NODE_MAP: -+ * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< -+ * elif node.format == MPV_FORMAT_NODE_ARRAY: -+ * return _convert_value(node.u.list, node.format) -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - --static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__", 0); -- __Pyx_INCREF(__pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->prefix); -- __Pyx_DECREF(__pyx_v_self->prefix); -- __pyx_v_self->prefix = __pyx_v_value; -+ /* "vidcutter/libs/pympv/mpv.pyx":206 -+ * elif node.format == MPV_FORMAT_DOUBLE: -+ * return float(node.u.double_) -+ * elif node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -+ * return _convert_value(node.u.list, node.format) -+ * elif node.format == MPV_FORMAT_NODE_ARRAY: -+ */ -+ break; -+ case MPV_FORMAT_NODE_ARRAY: - -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":209 -+ * return _convert_value(node.u.list, node.format) -+ * elif node.format == MPV_FORMAT_NODE_ARRAY: -+ * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< -+ * return None -+ * -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(PyObject *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -+ /* "vidcutter/libs/pympv/mpv.pyx":208 -+ * elif node.format == MPV_FORMAT_NODE_MAP: -+ * return _convert_value(node.u.list, node.format) -+ * elif node.format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -+ * return _convert_value(node.u.list, node.format) -+ * return None -+ */ -+ break; -+ default: break; -+ } - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":210 -+ * elif node.format == MPV_FORMAT_NODE_ARRAY: -+ * return _convert_value(node.u.list, node.format) -+ * return None # <<<<<<<<<<<<<< -+ * -+ * -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - --static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_6prefix_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__", 0); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->prefix); -- __Pyx_DECREF(__pyx_v_self->prefix); -- __pyx_v_self->prefix = Py_None; -+ /* "vidcutter/libs/pympv/mpv.pyx":197 -+ * -+ * -+ * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< -+ * if node.format == MPV_FORMAT_STRING: -+ * return _strdec(node.u.string) -+ */ - - /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._convert_node_value", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+/* "vidcutter/libs/pympv/mpv.pyx":213 -+ * -+ * -+ * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< -+ * cdef mpv_node node -+ * cdef mpv_node_list nodelist -+ */ - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data, enum mpv_format __pyx_v_format) { -+ struct mpv_node __pyx_v_node; -+ struct mpv_node_list __pyx_v_nodelist; -+ PyObject *__pyx_v_values = NULL; -+ int __pyx_v_i; -+ PyObject *__pyx_v_value = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__", 0); -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->level); -- __pyx_r = __pyx_v_self->level; -- goto __pyx_L0; -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_2; -+ int __pyx_t_3; -+ int __pyx_t_4; -+ int __pyx_t_5; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_8 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("_convert_value", 0); - -- /* function exit code */ -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":216 -+ * cdef mpv_node node -+ * cdef mpv_node_list nodelist -+ * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< -+ * node = (data)[0] -+ * return _convert_node_value(node) -+ */ -+ switch (__pyx_v_format) { -+ case MPV_FORMAT_NODE: - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ /* "vidcutter/libs/pympv/mpv.pyx":217 -+ * cdef mpv_node_list nodelist -+ * if format == MPV_FORMAT_NODE: -+ * node = (data)[0] # <<<<<<<<<<<<<< -+ * return _convert_node_value(node) -+ * elif format == MPV_FORMAT_NODE_ARRAY: -+ */ -+ __pyx_v_node = (((struct mpv_node *)__pyx_v_data)[0]); - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":218 -+ * if format == MPV_FORMAT_NODE: -+ * node = (data)[0] -+ * return _convert_node_value(node) # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_NODE_ARRAY: -+ * nodelist = (data)[0] -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - --static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__", 0); -- __Pyx_INCREF(__pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->level); -- __Pyx_DECREF(__pyx_v_self->level); -- __pyx_v_self->level = __pyx_v_value; -+ /* "vidcutter/libs/pympv/mpv.pyx":216 -+ * cdef mpv_node node -+ * cdef mpv_node_list nodelist -+ * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< -+ * node = (data)[0] -+ * return _convert_node_value(node) -+ */ -+ break; -+ case MPV_FORMAT_NODE_ARRAY: - -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":220 -+ * return _convert_node_value(node) -+ * elif format == MPV_FORMAT_NODE_ARRAY: -+ * nodelist = (data)[0] # <<<<<<<<<<<<<< -+ * values = [] -+ * for i in range(nodelist.num): -+ */ -+ __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(PyObject *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -+ /* "vidcutter/libs/pympv/mpv.pyx":221 -+ * elif format == MPV_FORMAT_NODE_ARRAY: -+ * nodelist = (data)[0] -+ * values = [] # <<<<<<<<<<<<<< -+ * for i in range(nodelist.num): -+ * values.append(_convert_node_value(nodelist.values[i])) -+ */ -+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v_values = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":222 -+ * nodelist = (data)[0] -+ * values = [] -+ * for i in range(nodelist.num): # <<<<<<<<<<<<<< -+ * values.append(_convert_node_value(nodelist.values[i])) -+ * return values -+ */ -+ __pyx_t_2 = __pyx_v_nodelist.num; -+ __pyx_t_3 = __pyx_t_2; -+ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { -+ __pyx_v_i = __pyx_t_4; - --static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_5level_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__", 0); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->level); -- __Pyx_DECREF(__pyx_v_self->level); -- __pyx_v_self->level = Py_None; -+ /* "vidcutter/libs/pympv/mpv.pyx":223 -+ * values = [] -+ * for i in range(nodelist.num): -+ * values.append(_convert_node_value(nodelist.values[i])) # <<<<<<<<<<<<<< -+ * return values -+ * elif format == MPV_FORMAT_NODE_MAP: -+ */ -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_values, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 223, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } - -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":224 -+ * for i in range(nodelist.num): -+ * values.append(_convert_node_value(nodelist.values[i])) -+ * return values # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_NODE_MAP: -+ * nodelist = (data)[0] -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_values); -+ __pyx_r = __pyx_v_values; -+ goto __pyx_L0; - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -+ /* "vidcutter/libs/pympv/mpv.pyx":219 -+ * node = (data)[0] -+ * return _convert_node_value(node) -+ * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -+ * nodelist = (data)[0] -+ * values = [] -+ */ -+ break; -+ case MPV_FORMAT_NODE_MAP: - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":226 -+ * return values -+ * elif format == MPV_FORMAT_NODE_MAP: -+ * nodelist = (data)[0] # <<<<<<<<<<<<<< -+ * values = {} -+ * for i in range(nodelist.num): -+ */ -+ __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__", 0); -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->text); -- __pyx_r = __pyx_v_self->text; -- goto __pyx_L0; -+ /* "vidcutter/libs/pympv/mpv.pyx":227 -+ * elif format == MPV_FORMAT_NODE_MAP: -+ * nodelist = (data)[0] -+ * values = {} # <<<<<<<<<<<<<< -+ * for i in range(nodelist.num): -+ * value = _convert_node_value(nodelist.values[i]) -+ */ -+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v_values = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* function exit code */ -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":228 -+ * nodelist = (data)[0] -+ * values = {} -+ * for i in range(nodelist.num): # <<<<<<<<<<<<<< -+ * value = _convert_node_value(nodelist.values[i]) -+ * values[_strdec(nodelist.keys[i])] = value -+ */ -+ __pyx_t_2 = __pyx_v_nodelist.num; -+ __pyx_t_3 = __pyx_t_2; -+ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { -+ __pyx_v_i = __pyx_t_4; - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ /* "vidcutter/libs/pympv/mpv.pyx":229 -+ * values = {} -+ * for i in range(nodelist.num): -+ * value = _convert_node_value(nodelist.values[i]) # <<<<<<<<<<<<<< -+ * values[_strdec(nodelist.keys[i])] = value -+ * return values -+ */ -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); -+ __pyx_t_1 = 0; - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":230 -+ * for i in range(nodelist.num): -+ * value = _convert_node_value(nodelist.values[i]) -+ * values[_strdec(nodelist.keys[i])] = value # <<<<<<<<<<<<<< -+ * return values -+ * elif format == MPV_FORMAT_STRING: -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 230, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_7 = __Pyx_PyBytes_FromString((__pyx_v_nodelist.keys[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_8 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_8)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_8); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(PyObject_SetItem(__pyx_v_values, __pyx_t_1, __pyx_v_value) < 0)) __PYX_ERR(0, 230, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } - --static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__", 0); -- __Pyx_INCREF(__pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->text); -- __Pyx_DECREF(__pyx_v_self->text); -- __pyx_v_self->text = __pyx_v_value; -+ /* "vidcutter/libs/pympv/mpv.pyx":231 -+ * value = _convert_node_value(nodelist.values[i]) -+ * values[_strdec(nodelist.keys[i])] = value -+ * return values # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_STRING: -+ * return _strdec(((data)[0])) -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_values); -+ __pyx_r = __pyx_v_values; -+ goto __pyx_L0; - -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":225 -+ * values.append(_convert_node_value(nodelist.values[i])) -+ * return values -+ * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -+ * nodelist = (data)[0] -+ * values = {} -+ */ -+ break; -+ case MPV_FORMAT_STRING: - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(PyObject *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_4text_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__", 0); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->text); -- __Pyx_DECREF(__pyx_v_self->text); -- __pyx_v_self->text = Py_None; -- -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":233 -+ * return values -+ * elif format == MPV_FORMAT_STRING: -+ * return _strdec(((data)[0])) # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_FLAG: -+ * return not not (data)[0] -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 233, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_7 = __Pyx_PyBytes_FromString((((char **)__pyx_v_data)[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_8 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_8)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_8); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__", 0); -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->log_level); -- __pyx_r = __pyx_v_self->log_level; -- goto __pyx_L0; -+ /* "vidcutter/libs/pympv/mpv.pyx":232 -+ * values[_strdec(nodelist.keys[i])] = value -+ * return values -+ * elif format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -+ * return _strdec(((data)[0])) -+ * elif format == MPV_FORMAT_FLAG: -+ */ -+ break; -+ case MPV_FORMAT_FLAG: - -- /* function exit code */ -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":235 -+ * return _strdec(((data)[0])) -+ * elif format == MPV_FORMAT_FLAG: -+ * return not not (data)[0] # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_INT64: -+ * return int((data)[0]) -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!((!((((uint64_t *)__pyx_v_data)[0]) != 0)) != 0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ /* "vidcutter/libs/pympv/mpv.pyx":234 -+ * elif format == MPV_FORMAT_STRING: -+ * return _strdec(((data)[0])) -+ * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -+ * return not not (data)[0] -+ * elif format == MPV_FORMAT_INT64: -+ */ -+ break; -+ case MPV_FORMAT_INT64: - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":237 -+ * return not not (data)[0] -+ * elif format == MPV_FORMAT_INT64: -+ * return int((data)[0]) # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_DOUBLE: -+ * return float((data)[0]) -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t((((uint64_t *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 237, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_r = __pyx_t_6; -+ __pyx_t_6 = 0; -+ goto __pyx_L0; - --static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__", 0); -- __Pyx_INCREF(__pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->log_level); -- __Pyx_DECREF(__pyx_v_self->log_level); -- __pyx_v_self->log_level = __pyx_v_value; -+ /* "vidcutter/libs/pympv/mpv.pyx":236 -+ * elif format == MPV_FORMAT_FLAG: -+ * return not not (data)[0] -+ * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -+ * return int((data)[0]) -+ * elif format == MPV_FORMAT_DOUBLE: -+ */ -+ break; -+ case MPV_FORMAT_DOUBLE: - -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":239 -+ * return int((data)[0]) -+ * elif format == MPV_FORMAT_DOUBLE: -+ * return float((data)[0]) # <<<<<<<<<<<<<< -+ * return None -+ * -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_6 = PyFloat_FromDouble((((double *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 239, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_r = __pyx_t_6; -+ __pyx_t_6 = 0; -+ goto __pyx_L0; - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(PyObject *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -+ /* "vidcutter/libs/pympv/mpv.pyx":238 -+ * elif format == MPV_FORMAT_INT64: -+ * return int((data)[0]) -+ * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -+ * return float((data)[0]) -+ * return None -+ */ -+ break; -+ default: break; -+ } - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":240 -+ * elif format == MPV_FORMAT_DOUBLE: -+ * return float((data)[0]) -+ * return None # <<<<<<<<<<<<<< -+ * -+ * -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - --static int __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_9log_level_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__", 0); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->log_level); -- __Pyx_DECREF(__pyx_v_self->log_level); -- __pyx_v_self->log_level = Py_None; -+ /* "vidcutter/libs/pympv/mpv.pyx":213 -+ * -+ * -+ * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< -+ * cdef mpv_node node -+ * cdef mpv_node_list nodelist -+ */ - - /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._convert_value", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; -+ __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_values); -+ __Pyx_XDECREF(__pyx_v_value); -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * cdef tuple state -- * cdef object _dict -+/* "vidcutter/libs/pympv/mpv.pyx":250 -+ * cdef public object name, data -+ * -+ * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< -+ * self.name = _strdec(prop.name) -+ * self.data = _convert_value(prop.data, prop.format) - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, struct mpv_event_property *__pyx_v_prop) { -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self)); -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("_init", 0); - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self) { -- PyObject *__pyx_v_state = 0; -- PyObject *__pyx_v__dict = 0; -- int __pyx_v_use_setstate; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__reduce_cython__", 0); -- -- /* "(tree fragment)":5 -- * cdef object _dict -- * cdef bint use_setstate -- * state = (self.level, self.log_level, self.prefix, self.text) # <<<<<<<<<<<<<< -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: -+ /* "vidcutter/libs/pympv/mpv.pyx":251 -+ * -+ * cdef _init(self, mpv_event_property* prop): -+ * self.name = _strdec(prop.name) # <<<<<<<<<<<<<< -+ * self.data = _convert_value(prop.data, prop.format) -+ * return self - */ -- __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_prop->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_v_self->level); -- __Pyx_GIVEREF(__pyx_v_self->level); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->level); -- __Pyx_INCREF(__pyx_v_self->log_level); -- __Pyx_GIVEREF(__pyx_v_self->log_level); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->log_level); -- __Pyx_INCREF(__pyx_v_self->prefix); -- __Pyx_GIVEREF(__pyx_v_self->prefix); -- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->prefix); -- __Pyx_INCREF(__pyx_v_self->text); -- __Pyx_GIVEREF(__pyx_v_self->text); -- PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->text); -- __pyx_v_state = ((PyObject*)__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v_self->name); -+ __Pyx_DECREF(__pyx_v_self->name); -+ __pyx_v_self->name = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "(tree fragment)":6 -- * cdef bint use_setstate -- * state = (self.level, self.log_level, self.prefix, self.text) -- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< -- * if _dict is not None: -- * state += (_dict,) -+ /* "vidcutter/libs/pympv/mpv.pyx":252 -+ * cdef _init(self, mpv_event_property* prop): -+ * self.name = _strdec(prop.name) -+ * self.data = _convert_value(prop.data, prop.format) # <<<<<<<<<<<<<< -+ * return self -+ * - */ -- __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_prop->data, __pyx_v_prop->format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_v__dict = __pyx_t_1; -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v_self->data); -+ __Pyx_DECREF(__pyx_v_self->data); -+ __pyx_v_self->data = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "(tree fragment)":7 -- * state = (self.level, self.log_level, self.prefix, self.text) -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: # <<<<<<<<<<<<<< -- * state += (_dict,) -- * use_setstate = True -+ /* "vidcutter/libs/pympv/mpv.pyx":253 -+ * self.name = _strdec(prop.name) -+ * self.data = _convert_value(prop.data, prop.format) -+ * return self # <<<<<<<<<<<<<< -+ * -+ * - */ -- __pyx_t_2 = (__pyx_v__dict != Py_None); -- __pyx_t_3 = (__pyx_t_2 != 0); -- if (__pyx_t_3) { -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(((PyObject *)__pyx_v_self)); -+ __pyx_r = ((PyObject *)__pyx_v_self); -+ goto __pyx_L0; - -- /* "(tree fragment)":8 -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: -- * state += (_dict,) # <<<<<<<<<<<<<< -- * use_setstate = True -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":250 -+ * cdef public object name, data -+ * -+ * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< -+ * self.name = _strdec(prop.name) -+ * self.data = _convert_value(prop.data, prop.format) - */ -- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_v__dict); -- __Pyx_GIVEREF(__pyx_v__dict); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); -- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); -- __pyx_t_4 = 0; - -- /* "(tree fragment)":9 -- * if _dict is not None: -- * state += (_dict,) -- * use_setstate = True # <<<<<<<<<<<<<< -- * else: -- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None -- */ -- __pyx_v_use_setstate = 1; -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Property._init", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "(tree fragment)":7 -- * state = (self.level, self.log_level, self.prefix, self.text) -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: # <<<<<<<<<<<<<< -- * state += (_dict,) -- * use_setstate = True -+/* "vidcutter/libs/pympv/mpv.pyx":248 -+ * Wraps: mpv_event_property -+ * """ -+ * cdef public object name, data # <<<<<<<<<<<<<< -+ * -+ * cdef _init(self, mpv_event_property* prop): - */ -- goto __pyx_L3; -- } - -- /* "(tree fragment)":11 -- * use_setstate = True -- * else: -- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None # <<<<<<<<<<<<<< -- * if use_setstate: -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state -- */ -- /*else*/ { -- __pyx_t_2 = (__pyx_v_self->level != Py_None); -- __pyx_t_5 = (__pyx_t_2 != 0); -- if (!__pyx_t_5) { -- } else { -- __pyx_t_3 = __pyx_t_5; -- goto __pyx_L4_bool_binop_done; -- } -- __pyx_t_5 = (__pyx_v_self->log_level != Py_None); -- __pyx_t_2 = (__pyx_t_5 != 0); -- if (!__pyx_t_2) { -- } else { -- __pyx_t_3 = __pyx_t_2; -- goto __pyx_L4_bool_binop_done; -- } -- __pyx_t_2 = (__pyx_v_self->prefix != Py_None); -- __pyx_t_5 = (__pyx_t_2 != 0); -- if (!__pyx_t_5) { -- } else { -- __pyx_t_3 = __pyx_t_5; -- goto __pyx_L4_bool_binop_done; -- } -- __pyx_t_5 = (__pyx_v_self->text != Py_None); -- __pyx_t_2 = (__pyx_t_5 != 0); -- __pyx_t_3 = __pyx_t_2; -- __pyx_L4_bool_binop_done:; -- __pyx_v_use_setstate = __pyx_t_3; -- } -- __pyx_L3:; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); - -- /* "(tree fragment)":12 -- * else: -- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None -- * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state -- * else: -- */ -- __pyx_t_3 = (__pyx_v_use_setstate != 0); -- if (__pyx_t_3) { -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "(tree fragment)":13 -- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None -- * if use_setstate: -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state # <<<<<<<<<<<<<< -- * else: -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_LogMessage); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_142036910); -- __Pyx_GIVEREF(__pyx_int_142036910); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_142036910); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); -- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_GIVEREF(__pyx_t_4); -- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); -- __Pyx_INCREF(__pyx_v_state); -- __Pyx_GIVEREF(__pyx_v_state); -- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state); -- __pyx_t_4 = 0; -- __pyx_t_1 = 0; -- __pyx_r = __pyx_t_6; -- __pyx_t_6 = 0; -- goto __pyx_L0; -- -- /* "(tree fragment)":12 -- * else: -- * use_setstate = self.level is not None or self.log_level is not None or self.prefix is not None or self.text is not None -- * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state -- * else: -- */ -- } -- -- /* "(tree fragment)":15 -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, None), state -- * else: -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) -- */ -- /*else*/ { -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_LogMessage); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_142036910); -- __Pyx_GIVEREF(__pyx_int_142036910); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_142036910); -- __Pyx_INCREF(__pyx_v_state); -- __Pyx_GIVEREF(__pyx_v_state); -- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); -- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_GIVEREF(__pyx_t_6); -- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); -- __pyx_t_6 = 0; -- __pyx_t_1 = 0; -- __pyx_r = __pyx_t_4; -- __pyx_t_4 = 0; -- goto __pyx_L0; -- } -- -- /* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * cdef tuple state -- * cdef object _dict -- */ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_self->name); -+ __pyx_r = __pyx_v_self->name; -+ goto __pyx_L0; - - /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_state); -- __Pyx_XDECREF(__pyx_v__dict); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "(tree fragment)":16 -- * else: -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) -- */ -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__", 0); -+ __Pyx_INCREF(__pyx_v_value); -+ __Pyx_GIVEREF(__pyx_v_value); -+ __Pyx_GOTREF(__pyx_v_self->name); -+ __Pyx_DECREF(__pyx_v_self->name); -+ __pyx_v_self->name = __pyx_v_value; -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = 0; -+static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(PyObject *__pyx_v_self); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(PyObject *__pyx_v_self) { -+ int __pyx_r; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -+static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -+ int __pyx_r; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__setstate_cython__", 0); -+ __Pyx_RefNannySetupContext("__del__", 0); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ __Pyx_GOTREF(__pyx_v_self->name); -+ __Pyx_DECREF(__pyx_v_self->name); -+ __pyx_v_self->name = Py_None; - -- /* "(tree fragment)":17 -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) -- * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) # <<<<<<<<<<<<<< -- */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "(tree fragment)":16 -- * else: -- * return __pyx_unpickle_LogMessage, (type(self), 0x8774fae, state) -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_LogMessage__set_state(self, __pyx_state) -- */ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_4data___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_self->data); -+ __pyx_r = __pyx_v_self->data; - goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.LogMessage.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ -+ /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":197 -- * -- * -- * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< -- * if node.format == MPV_FORMAT_STRING: -- * return _strdec(node.u.string) -- */ -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_node __pyx_v_node) { -- PyObject *__pyx_r = NULL; -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_t_5; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_convert_node_value", 0); -+ __Pyx_RefNannySetupContext("__set__", 0); -+ __Pyx_INCREF(__pyx_v_value); -+ __Pyx_GIVEREF(__pyx_v_value); -+ __Pyx_GOTREF(__pyx_v_self->data); -+ __Pyx_DECREF(__pyx_v_self->data); -+ __pyx_v_self->data = __pyx_v_value; - -- /* "vidcutter/libs/pympv/mpv.pyx":198 -- * -- * cdef _convert_node_value(mpv_node node): -- * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -- * return _strdec(node.u.string) -- * elif node.format == MPV_FORMAT_FLAG: -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(PyObject *__pyx_v_self); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(PyObject *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__", 0); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ __Pyx_GOTREF(__pyx_v_self->data); -+ __Pyx_DECREF(__pyx_v_self->data); -+ __pyx_v_self->data = Py_None; -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * cdef tuple state -+ * cdef object _dict - */ -- switch (__pyx_v_node.format) { -- case MPV_FORMAT_STRING: - -- /* "vidcutter/libs/pympv/mpv.pyx":199 -- * cdef _convert_node_value(mpv_node node): -- * if node.format == MPV_FORMAT_STRING: -- * return _strdec(node.u.string) # <<<<<<<<<<<<<< -- * elif node.format == MPV_FORMAT_FLAG: -- * return not not int(node.u.flag) -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -+ PyObject *__pyx_v_state = 0; -+ PyObject *__pyx_v__dict = 0; -+ int __pyx_v_use_setstate; -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_2; -+ int __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; -+ int __pyx_t_5; -+ PyObject *__pyx_t_6 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ -+ /* "(tree fragment)":5 -+ * cdef object _dict -+ * cdef bint use_setstate -+ * state = (self.data, self.name) # <<<<<<<<<<<<<< -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_node.u.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_INCREF(__pyx_v_self->data); -+ __Pyx_GIVEREF(__pyx_v_self->data); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->data); -+ __Pyx_INCREF(__pyx_v_self->name); -+ __Pyx_GIVEREF(__pyx_v_self->name); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->name); -+ __pyx_v_state = ((PyObject*)__pyx_t_1); -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":198 -- * -- * cdef _convert_node_value(mpv_node node): -- * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -- * return _strdec(node.u.string) -- * elif node.format == MPV_FORMAT_FLAG: -+ /* "(tree fragment)":6 -+ * cdef bint use_setstate -+ * state = (self.data, self.name) -+ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< -+ * if _dict is not None: -+ * state += (_dict,) - */ -- break; -- case MPV_FORMAT_FLAG: -+ __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v__dict = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":201 -- * return _strdec(node.u.string) -- * elif node.format == MPV_FORMAT_FLAG: -- * return not not int(node.u.flag) # <<<<<<<<<<<<<< -- * elif node.format == MPV_FORMAT_INT64: -- * return int(node.u.int64) -+ /* "(tree fragment)":7 -+ * state = (self.data, self.name) -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: # <<<<<<<<<<<<<< -+ * state += (_dict,) -+ * use_setstate = True - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_node.u.flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) -+ __pyx_t_2 = (__pyx_v__dict != Py_None); -+ __pyx_t_3 = (__pyx_t_2 != 0); -+ if (__pyx_t_3) { -+ -+ /* "(tree fragment)":8 -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: -+ * state += (_dict,) # <<<<<<<<<<<<<< -+ * use_setstate = True -+ * else: -+ */ -+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_v__dict); -+ __Pyx_GIVEREF(__pyx_v__dict); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); -+ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 201, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_PyBool_FromLong((!((!__pyx_t_5) != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_r = __pyx_t_2; -- __pyx_t_2 = 0; -- goto __pyx_L0; -+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); -+ __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":200 -- * if node.format == MPV_FORMAT_STRING: -- * return _strdec(node.u.string) -- * elif node.format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -- * return not not int(node.u.flag) -- * elif node.format == MPV_FORMAT_INT64: -+ /* "(tree fragment)":9 -+ * if _dict is not None: -+ * state += (_dict,) -+ * use_setstate = True # <<<<<<<<<<<<<< -+ * else: -+ * use_setstate = self.data is not None or self.name is not None - */ -- break; -- case MPV_FORMAT_INT64: -+ __pyx_v_use_setstate = 1; - -- /* "vidcutter/libs/pympv/mpv.pyx":203 -- * return not not int(node.u.flag) -- * elif node.format == MPV_FORMAT_INT64: -- * return int(node.u.int64) # <<<<<<<<<<<<<< -- * elif node.format == MPV_FORMAT_DOUBLE: -- * return float(node.u.double_) -+ /* "(tree fragment)":7 -+ * state = (self.data, self.name) -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: # <<<<<<<<<<<<<< -+ * state += (_dict,) -+ * use_setstate = True - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyInt_From_int64_t(__pyx_v_node.u.int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ goto __pyx_L3; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":202 -- * elif node.format == MPV_FORMAT_FLAG: -- * return not not int(node.u.flag) -- * elif node.format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -- * return int(node.u.int64) -- * elif node.format == MPV_FORMAT_DOUBLE: -+ /* "(tree fragment)":11 -+ * use_setstate = True -+ * else: -+ * use_setstate = self.data is not None or self.name is not None # <<<<<<<<<<<<<< -+ * if use_setstate: -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state - */ -- break; -- case MPV_FORMAT_DOUBLE: -+ /*else*/ { -+ __pyx_t_2 = (__pyx_v_self->data != Py_None); -+ __pyx_t_5 = (__pyx_t_2 != 0); -+ if (!__pyx_t_5) { -+ } else { -+ __pyx_t_3 = __pyx_t_5; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_5 = (__pyx_v_self->name != Py_None); -+ __pyx_t_2 = (__pyx_t_5 != 0); -+ __pyx_t_3 = __pyx_t_2; -+ __pyx_L4_bool_binop_done:; -+ __pyx_v_use_setstate = __pyx_t_3; -+ } -+ __pyx_L3:; - -- /* "vidcutter/libs/pympv/mpv.pyx":205 -- * return int(node.u.int64) -- * elif node.format == MPV_FORMAT_DOUBLE: -- * return float(node.u.double_) # <<<<<<<<<<<<<< -- * elif node.format == MPV_FORMAT_NODE_MAP: -- * return _convert_value(node.u.list, node.format) -+ /* "(tree fragment)":12 -+ * else: -+ * use_setstate = self.data is not None or self.name is not None -+ * if use_setstate: # <<<<<<<<<<<<<< -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state -+ * else: -+ */ -+ __pyx_t_3 = (__pyx_v_use_setstate != 0); -+ if (__pyx_t_3) { -+ -+ /* "(tree fragment)":13 -+ * use_setstate = self.data is not None or self.name is not None -+ * if use_setstate: -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state # <<<<<<<<<<<<<< -+ * else: -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = PyFloat_FromDouble(__pyx_v_node.u.double_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Property); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_INCREF(__pyx_int_5713169); -+ __Pyx_GIVEREF(__pyx_int_5713169); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_5713169); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); -+ __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_GIVEREF(__pyx_t_4); -+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); -+ __Pyx_GIVEREF(__pyx_t_1); -+ PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); -+ __Pyx_INCREF(__pyx_v_state); -+ __Pyx_GIVEREF(__pyx_v_state); -+ PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state); -+ __pyx_t_4 = 0; - __pyx_t_1 = 0; -+ __pyx_r = __pyx_t_6; -+ __pyx_t_6 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":204 -- * elif node.format == MPV_FORMAT_INT64: -- * return int(node.u.int64) -- * elif node.format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -- * return float(node.u.double_) -- * elif node.format == MPV_FORMAT_NODE_MAP: -+ /* "(tree fragment)":12 -+ * else: -+ * use_setstate = self.data is not None or self.name is not None -+ * if use_setstate: # <<<<<<<<<<<<<< -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state -+ * else: - */ -- break; -- case MPV_FORMAT_NODE_MAP: -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":207 -- * return float(node.u.double_) -- * elif node.format == MPV_FORMAT_NODE_MAP: -- * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< -- * elif node.format == MPV_FORMAT_NODE_ARRAY: -- * return _convert_value(node.u.list, node.format) -+ /* "(tree fragment)":15 -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state -+ * else: -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * __pyx_unpickle_Property__set_state(self, __pyx_state) - */ -+ /*else*/ { - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_Property); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_INCREF(__pyx_int_5713169); -+ __Pyx_GIVEREF(__pyx_int_5713169); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_5713169); -+ __Pyx_INCREF(__pyx_v_state); -+ __Pyx_GIVEREF(__pyx_v_state); -+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); -+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_GIVEREF(__pyx_t_6); -+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); -+ __Pyx_GIVEREF(__pyx_t_1); -+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); -+ __pyx_t_6 = 0; - __pyx_t_1 = 0; -+ __pyx_r = __pyx_t_4; -+ __pyx_t_4 = 0; - goto __pyx_L0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":206 -- * elif node.format == MPV_FORMAT_DOUBLE: -- * return float(node.u.double_) -- * elif node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -- * return _convert_value(node.u.list, node.format) -- * elif node.format == MPV_FORMAT_NODE_ARRAY: -+ /* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * cdef tuple state -+ * cdef object _dict - */ -- break; -- case MPV_FORMAT_NODE_ARRAY: - -- /* "vidcutter/libs/pympv/mpv.pyx":209 -- * return _convert_value(node.u.list, node.format) -- * elif node.format == MPV_FORMAT_NODE_ARRAY: -- * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< -- * return None -- * -- */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Property.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_state); -+ __Pyx_XDECREF(__pyx_v__dict); -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":208 -- * elif node.format == MPV_FORMAT_NODE_MAP: -- * return _convert_value(node.u.list, node.format) -- * elif node.format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -- * return _convert_value(node.u.list, node.format) -- * return None -+/* "(tree fragment)":16 -+ * else: -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_unpickle_Property__set_state(self, __pyx_state) - */ -- break; -- default: break; -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":210 -- * elif node.format == MPV_FORMAT_NODE_ARRAY: -- * return _convert_value(node.u.list, node.format) -- * return None # <<<<<<<<<<<<<< -- * -- * -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__setstate_cython__", 0); -+ -+ /* "(tree fragment)":17 -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) -+ * def __setstate_cython__(self, __pyx_state): -+ * __pyx_unpickle_Property__set_state(self, __pyx_state) # <<<<<<<<<<<<<< - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":197 -- * -- * -- * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< -- * if node.format == MPV_FORMAT_STRING: -- * return _strdec(node.u.string) -+ /* "(tree fragment)":16 -+ * else: -+ * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_unpickle_Property__set_state(self, __pyx_state) - */ - - /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv._convert_node_value", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Property.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":213 -- * -+/* "vidcutter/libs/pympv/mpv.pyx":263 - * -- * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< -- * cdef mpv_node node -- * cdef mpv_node_list nodelist -+ * @property -+ * def error_str(self): # <<<<<<<<<<<<<< -+ * """mpv_error_string of the error proeprty""" -+ * cdef const char* err_c - */ - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data, enum mpv_format __pyx_v_format) { -- struct mpv_node __pyx_v_node; -- struct mpv_node_list __pyx_v_nodelist; -- PyObject *__pyx_v_values = NULL; -- int __pyx_v_i; -- PyObject *__pyx_v_value = NULL; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+ char const *__pyx_v_err_c; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- int __pyx_t_3; -- int __pyx_t_4; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_convert_value", 0); -+ __Pyx_RefNannySetupContext("__get__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":216 -- * cdef mpv_node node -- * cdef mpv_node_list nodelist -- * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< -- * node = (data)[0] -- * return _convert_node_value(node) -+ /* "vidcutter/libs/pympv/mpv.pyx":266 -+ * """mpv_error_string of the error proeprty""" -+ * cdef const char* err_c -+ * with nogil: # <<<<<<<<<<<<<< -+ * err_c = mpv_error_string(self.error) -+ * return _strdec(err_c) - */ -- switch (__pyx_v_format) { -- case MPV_FORMAT_NODE: -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":217 -- * cdef mpv_node_list nodelist -- * if format == MPV_FORMAT_NODE: -- * node = (data)[0] # <<<<<<<<<<<<<< -- * return _convert_node_value(node) -- * elif format == MPV_FORMAT_NODE_ARRAY: -+ /* "vidcutter/libs/pympv/mpv.pyx":267 -+ * cdef const char* err_c -+ * with nogil: -+ * err_c = mpv_error_string(self.error) # <<<<<<<<<<<<<< -+ * return _strdec(err_c) -+ * - */ -- __pyx_v_node = (((struct mpv_node *)__pyx_v_data)[0]); -+ __pyx_v_err_c = mpv_error_string(__pyx_v_self->error); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":218 -- * if format == MPV_FORMAT_NODE: -- * node = (data)[0] -- * return _convert_node_value(node) # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_NODE_ARRAY: -- * nodelist = (data)[0] -+ /* "vidcutter/libs/pympv/mpv.pyx":266 -+ * """mpv_error_string of the error proeprty""" -+ * cdef const char* err_c -+ * with nogil: # <<<<<<<<<<<<<< -+ * err_c = mpv_error_string(self.error) -+ * return _strdec(err_c) - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":216 -- * cdef mpv_node node -- * cdef mpv_node_list nodelist -- * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< -- * node = (data)[0] -- * return _convert_node_value(node) -+ /* "vidcutter/libs/pympv/mpv.pyx":268 -+ * with nogil: -+ * err_c = mpv_error_string(self.error) -+ * return _strdec(err_c) # <<<<<<<<<<<<<< -+ * -+ * cdef _data(self, mpv_event* event): - */ -- break; -- case MPV_FORMAT_NODE_ARRAY: -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":220 -- * return _convert_node_value(node) -- * elif format == MPV_FORMAT_NODE_ARRAY: -- * nodelist = (data)[0] # <<<<<<<<<<<<<< -- * values = [] -- * for i in range(nodelist.num): -+ /* "vidcutter/libs/pympv/mpv.pyx":263 -+ * -+ * @property -+ * def error_str(self): # <<<<<<<<<<<<<< -+ * """mpv_error_string of the error proeprty""" -+ * cdef const char* err_c - */ -- __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); - -- /* "vidcutter/libs/pympv/mpv.pyx":221 -- * elif format == MPV_FORMAT_NODE_ARRAY: -- * nodelist = (data)[0] -- * values = [] # <<<<<<<<<<<<<< -- * for i in range(nodelist.num): -- * values.append(_convert_node_value(nodelist.values[i])) -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error_str.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "vidcutter/libs/pympv/mpv.pyx":270 -+ * return _strdec(err_c) -+ * -+ * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< -+ * cdef void* data = event.data -+ * cdef mpv_event_client_message* climsg - */ -- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_values = __pyx_t_1; -- __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":222 -- * nodelist = (data)[0] -- * values = [] -- * for i in range(nodelist.num): # <<<<<<<<<<<<<< -- * values.append(_convert_node_value(nodelist.values[i])) -- * return values -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event) { -+ void *__pyx_v_data; -+ struct mpv_event_client_message *__pyx_v_climsg; -+ PyObject *__pyx_v_args = NULL; -+ int __pyx_v_num_args; -+ int __pyx_v_i; -+ PyObject *__pyx_v_arg = NULL; -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ void *__pyx_t_1; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ int __pyx_t_4; -+ int __pyx_t_5; -+ int __pyx_t_6; -+ PyObject *__pyx_t_7 = NULL; -+ int __pyx_t_8; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("_data", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":271 -+ * -+ * cdef _data(self, mpv_event* event): -+ * cdef void* data = event.data # <<<<<<<<<<<<<< -+ * cdef mpv_event_client_message* climsg -+ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: - */ -- __pyx_t_2 = __pyx_v_nodelist.num; -- __pyx_t_3 = __pyx_t_2; -- for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { -- __pyx_v_i = __pyx_t_4; -+ __pyx_t_1 = __pyx_v_event->data; -+ __pyx_v_data = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":223 -- * values = [] -- * for i in range(nodelist.num): -- * values.append(_convert_node_value(nodelist.values[i])) # <<<<<<<<<<<<<< -- * return values -- * elif format == MPV_FORMAT_NODE_MAP: -+ /* "vidcutter/libs/pympv/mpv.pyx":273 -+ * cdef void* data = event.data -+ * cdef mpv_event_client_message* climsg -+ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< -+ * return Property()._init(data) -+ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: - */ -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_values, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 223, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- } -+ switch (__pyx_v_self->id) { -+ case MPV_EVENT_GET_PROPERTY_REPLY: - -- /* "vidcutter/libs/pympv/mpv.pyx":224 -- * for i in range(nodelist.num): -- * values.append(_convert_node_value(nodelist.values[i])) -- * return values # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_NODE_MAP: -- * nodelist = (data)[0] -+ /* "vidcutter/libs/pympv/mpv.pyx":274 -+ * cdef mpv_event_client_message* climsg -+ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: -+ * return Property()._init(data) # <<<<<<<<<<<<<< -+ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: -+ * return Property()._init(data) - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_values); -- __pyx_r = __pyx_v_values; -+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":219 -- * node = (data)[0] -- * return _convert_node_value(node) -- * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -- * nodelist = (data)[0] -- * values = [] -+ /* "vidcutter/libs/pympv/mpv.pyx":273 -+ * cdef void* data = event.data -+ * cdef mpv_event_client_message* climsg -+ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< -+ * return Property()._init(data) -+ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: - */ - break; -- case MPV_FORMAT_NODE_MAP: -+ case MPV_EVENT_PROPERTY_CHANGE: - -- /* "vidcutter/libs/pympv/mpv.pyx":226 -- * return values -- * elif format == MPV_FORMAT_NODE_MAP: -- * nodelist = (data)[0] # <<<<<<<<<<<<<< -- * values = {} -- * for i in range(nodelist.num): -+ /* "vidcutter/libs/pympv/mpv.pyx":276 -+ * return Property()._init(data) -+ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: -+ * return Property()._init(data) # <<<<<<<<<<<<<< -+ * elif self.id == MPV_EVENT_LOG_MESSAGE: -+ * return LogMessage()._init(data) - */ -- __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_r = __pyx_t_2; -+ __pyx_t_2 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":227 -- * elif format == MPV_FORMAT_NODE_MAP: -- * nodelist = (data)[0] -- * values = {} # <<<<<<<<<<<<<< -- * for i in range(nodelist.num): -- * value = _convert_node_value(nodelist.values[i]) -+ /* "vidcutter/libs/pympv/mpv.pyx":275 -+ * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: -+ * return Property()._init(data) -+ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< -+ * return Property()._init(data) -+ * elif self.id == MPV_EVENT_LOG_MESSAGE: - */ -- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_values = __pyx_t_1; -- __pyx_t_1 = 0; -+ break; -+ case MPV_EVENT_LOG_MESSAGE: - -- /* "vidcutter/libs/pympv/mpv.pyx":228 -- * nodelist = (data)[0] -- * values = {} -- * for i in range(nodelist.num): # <<<<<<<<<<<<<< -- * value = _convert_node_value(nodelist.values[i]) -- * values[_strdec(nodelist.keys[i])] = value -+ /* "vidcutter/libs/pympv/mpv.pyx":278 -+ * return Property()._init(data) -+ * elif self.id == MPV_EVENT_LOG_MESSAGE: -+ * return LogMessage()._init(data) # <<<<<<<<<<<<<< -+ * # elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: -+ * # return InputDispatch()._init(data) - */ -- __pyx_t_2 = __pyx_v_nodelist.num; -- __pyx_t_3 = __pyx_t_2; -- for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { -- __pyx_v_i = __pyx_t_4; -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *)((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2), ((struct mpv_event_log_message *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":229 -- * values = {} -- * for i in range(nodelist.num): -- * value = _convert_node_value(nodelist.values[i]) # <<<<<<<<<<<<<< -- * values[_strdec(nodelist.keys[i])] = value -- * return values -- */ -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); -- __pyx_t_1 = 0; -+ /* "vidcutter/libs/pympv/mpv.pyx":277 -+ * elif self.id == MPV_EVENT_PROPERTY_CHANGE: -+ * return Property()._init(data) -+ * elif self.id == MPV_EVENT_LOG_MESSAGE: # <<<<<<<<<<<<<< -+ * return LogMessage()._init(data) -+ * # elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: -+ */ -+ break; -+ case MPV_EVENT_CLIENT_MESSAGE: - -- /* "vidcutter/libs/pympv/mpv.pyx":230 -- * for i in range(nodelist.num): -- * value = _convert_node_value(nodelist.values[i]) -- * values[_strdec(nodelist.keys[i])] = value # <<<<<<<<<<<<<< -- * return values -- * elif format == MPV_FORMAT_STRING: -+ /* "vidcutter/libs/pympv/mpv.pyx":282 -+ * # return InputDispatch()._init(data) -+ * elif self.id == MPV_EVENT_CLIENT_MESSAGE: -+ * climsg = data # <<<<<<<<<<<<<< -+ * args = [] -+ * num_args = climsg.num_args - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 230, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = __Pyx_PyBytes_FromString((__pyx_v_nodelist.keys[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(PyObject_SetItem(__pyx_v_values, __pyx_t_1, __pyx_v_value) < 0)) __PYX_ERR(0, 230, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- } -+ __pyx_v_climsg = ((struct mpv_event_client_message *)__pyx_v_data); - -- /* "vidcutter/libs/pympv/mpv.pyx":231 -- * value = _convert_node_value(nodelist.values[i]) -- * values[_strdec(nodelist.keys[i])] = value -- * return values # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_STRING: -- * return _strdec(((data)[0])) -+ /* "vidcutter/libs/pympv/mpv.pyx":283 -+ * elif self.id == MPV_EVENT_CLIENT_MESSAGE: -+ * climsg = data -+ * args = [] # <<<<<<<<<<<<<< -+ * num_args = climsg.num_args -+ * for i in range(num_args): - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_values); -- __pyx_r = __pyx_v_values; -- goto __pyx_L0; -+ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 283, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_v_args = ((PyObject*)__pyx_t_3); -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":225 -- * values.append(_convert_node_value(nodelist.values[i])) -- * return values -- * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -- * nodelist = (data)[0] -- * values = {} -+ /* "vidcutter/libs/pympv/mpv.pyx":284 -+ * climsg = data -+ * args = [] -+ * num_args = climsg.num_args # <<<<<<<<<<<<<< -+ * for i in range(num_args): -+ * arg = climsg.args[i] - */ -- break; -- case MPV_FORMAT_STRING: -+ __pyx_t_4 = __pyx_v_climsg->num_args; -+ __pyx_v_num_args = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":233 -- * return values -- * elif format == MPV_FORMAT_STRING: -- * return _strdec(((data)[0])) # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_FLAG: -- * return not not (data)[0] -+ /* "vidcutter/libs/pympv/mpv.pyx":285 -+ * args = [] -+ * num_args = climsg.num_args -+ * for i in range(num_args): # <<<<<<<<<<<<<< -+ * arg = climsg.args[i] -+ * arg = _strdec(arg) - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 233, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = __Pyx_PyBytes_FromString((((char **)__pyx_v_data)[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __pyx_t_4 = __pyx_v_num_args; -+ __pyx_t_5 = __pyx_t_4; -+ for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { -+ __pyx_v_i = __pyx_t_6; - -- /* "vidcutter/libs/pympv/mpv.pyx":232 -- * values[_strdec(nodelist.keys[i])] = value -- * return values -- * elif format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -- * return _strdec(((data)[0])) -- * elif format == MPV_FORMAT_FLAG: -+ /* "vidcutter/libs/pympv/mpv.pyx":286 -+ * num_args = climsg.num_args -+ * for i in range(num_args): -+ * arg = climsg.args[i] # <<<<<<<<<<<<<< -+ * arg = _strdec(arg) -+ * args.append(arg) - */ -- break; -- case MPV_FORMAT_FLAG: -+ __pyx_t_3 = __Pyx_PyBytes_FromString(((char *)(__pyx_v_climsg->args[__pyx_v_i]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_3); -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":235 -- * return _strdec(((data)[0])) -- * elif format == MPV_FORMAT_FLAG: -- * return not not (data)[0] # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_INT64: -- * return int((data)[0]) -+ /* "vidcutter/libs/pympv/mpv.pyx":287 -+ * for i in range(num_args): -+ * arg = climsg.args[i] -+ * arg = _strdec(arg) # <<<<<<<<<<<<<< -+ * args.append(arg) -+ * return args - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyBool_FromLong((!((!((((uint64_t *)__pyx_v_data)[0]) != 0)) != 0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 287, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_7 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_7)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_7); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_arg) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_arg); -+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF_SET(__pyx_v_arg, __pyx_t_3); -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":234 -- * elif format == MPV_FORMAT_STRING: -- * return _strdec(((data)[0])) -- * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -- * return not not (data)[0] -- * elif format == MPV_FORMAT_INT64: -+ /* "vidcutter/libs/pympv/mpv.pyx":288 -+ * arg = climsg.args[i] -+ * arg = _strdec(arg) -+ * args.append(arg) # <<<<<<<<<<<<<< -+ * return args -+ * elif self.id == MPV_EVENT_END_FILE: - */ -- break; -- case MPV_FORMAT_INT64: -+ __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_args, __pyx_v_arg); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 288, __pyx_L1_error) -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":237 -- * return not not (data)[0] -- * elif format == MPV_FORMAT_INT64: -- * return int((data)[0]) # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_DOUBLE: -- * return float((data)[0]) -+ /* "vidcutter/libs/pympv/mpv.pyx":289 -+ * arg = _strdec(arg) -+ * args.append(arg) -+ * return args # <<<<<<<<<<<<<< -+ * elif self.id == MPV_EVENT_END_FILE: -+ * return EndOfFileReached()._init(data) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t((((uint64_t *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 237, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_r = __pyx_t_6; -- __pyx_t_6 = 0; -+ __Pyx_INCREF(__pyx_v_args); -+ __pyx_r = __pyx_v_args; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":236 -- * elif format == MPV_FORMAT_FLAG: -- * return not not (data)[0] -- * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -- * return int((data)[0]) -- * elif format == MPV_FORMAT_DOUBLE: -+ /* "vidcutter/libs/pympv/mpv.pyx":281 -+ * # elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: -+ * # return InputDispatch()._init(data) -+ * elif self.id == MPV_EVENT_CLIENT_MESSAGE: # <<<<<<<<<<<<<< -+ * climsg = data -+ * args = [] - */ - break; -- case MPV_FORMAT_DOUBLE: -+ case MPV_EVENT_END_FILE: - -- /* "vidcutter/libs/pympv/mpv.pyx":239 -- * return int((data)[0]) -- * elif format == MPV_FORMAT_DOUBLE: -- * return float((data)[0]) # <<<<<<<<<<<<<< -- * return None -+ /* "vidcutter/libs/pympv/mpv.pyx":291 -+ * return args -+ * elif self.id == MPV_EVENT_END_FILE: -+ * return EndOfFileReached()._init(data) # <<<<<<<<<<<<<< -+ * return None - * - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_6 = PyFloat_FromDouble((((double *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 239, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_r = __pyx_t_6; -- __pyx_t_6 = 0; -+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *)((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3), ((struct mpv_event_end_file *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_r = __pyx_t_2; -+ __pyx_t_2 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":238 -- * elif format == MPV_FORMAT_INT64: -- * return int((data)[0]) -- * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -- * return float((data)[0]) -- * return None -+ /* "vidcutter/libs/pympv/mpv.pyx":290 -+ * args.append(arg) -+ * return args -+ * elif self.id == MPV_EVENT_END_FILE: # <<<<<<<<<<<<<< -+ * return EndOfFileReached()._init(data) -+ * return None - */ - break; - default: break; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":240 -- * elif format == MPV_FORMAT_DOUBLE: -- * return float((data)[0]) -- * return None # <<<<<<<<<<<<<< -- * -- * -- */ -+ /* "vidcutter/libs/pympv/mpv.pyx":292 -+ * elif self.id == MPV_EVENT_END_FILE: -+ * return EndOfFileReached()._init(data) -+ * return None # <<<<<<<<<<<<<< -+ * -+ * @property -+ */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":213 -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":270 -+ * return _strdec(err_c) - * -- * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< -- * cdef mpv_node node -- * cdef mpv_node_list nodelist -+ * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< -+ * cdef void* data = event.data -+ * cdef mpv_event_client_message* climsg - */ - - /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_AddTraceback("vidcutter.libs.mpv._convert_value", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event._data", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_values); -- __Pyx_XDECREF(__pyx_v_value); -+ __Pyx_XDECREF(__pyx_v_args); -+ __Pyx_XDECREF(__pyx_v_arg); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":250 -- * cdef public object name, data -+/* "vidcutter/libs/pympv/mpv.pyx":295 - * -- * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< -- * self.name = _strdec(prop.name) -- * self.data = _convert_value(prop.data, prop.format) -+ * @property -+ * def name(self): # <<<<<<<<<<<<<< -+ * """mpv_event_name of the event id""" -+ * cdef const char* name_c - */ - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, struct mpv_event_property *__pyx_v_prop) { -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+ char const *__pyx_v_name_c; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -@@ -5704,18 +6128,63 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_init", 0); -+ __Pyx_RefNannySetupContext("__get__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":251 -+ /* "vidcutter/libs/pympv/mpv.pyx":298 -+ * """mpv_event_name of the event id""" -+ * cdef const char* name_c -+ * with nogil: # <<<<<<<<<<<<<< -+ * name_c = mpv_event_name(self.id) -+ * return _strdec(name_c) -+ */ -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":299 -+ * cdef const char* name_c -+ * with nogil: -+ * name_c = mpv_event_name(self.id) # <<<<<<<<<<<<<< -+ * return _strdec(name_c) - * -- * cdef _init(self, mpv_event_property* prop): -- * self.name = _strdec(prop.name) # <<<<<<<<<<<<<< -- * self.data = _convert_value(prop.data, prop.format) -- * return self - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) -+ __pyx_v_name_c = mpv_event_name(__pyx_v_self->id); -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":298 -+ * """mpv_event_name of the event id""" -+ * cdef const char* name_c -+ * with nogil: # <<<<<<<<<<<<<< -+ * name_c = mpv_event_name(self.id) -+ * return _strdec(name_c) -+ */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":300 -+ * with nogil: -+ * name_c = mpv_event_name(self.id) -+ * return _strdec(name_c) # <<<<<<<<<<<<<< -+ * -+ * cdef _init(self, mpv_event* event, ctx): -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_prop->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -5730,48 +6199,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->name); -- __Pyx_DECREF(__pyx_v_self->name); -- __pyx_v_self->name = __pyx_t_1; -- __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":252 -- * cdef _init(self, mpv_event_property* prop): -- * self.name = _strdec(prop.name) -- * self.data = _convert_value(prop.data, prop.format) # <<<<<<<<<<<<<< -- * return self -- * -- */ -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_prop->data, __pyx_v_prop->format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->data); -- __Pyx_DECREF(__pyx_v_self->data); -- __pyx_v_self->data = __pyx_t_1; -+ __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":253 -- * self.name = _strdec(prop.name) -- * self.data = _convert_value(prop.data, prop.format) -- * return self # <<<<<<<<<<<<<< -- * -- * -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(((PyObject *)__pyx_v_self)); -- __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":250 -- * cdef public object name, data -+ /* "vidcutter/libs/pympv/mpv.pyx":295 - * -- * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< -- * self.name = _strdec(prop.name) -- * self.data = _convert_value(prop.data, prop.format) -+ * @property -+ * def name(self): # <<<<<<<<<<<<<< -+ * """mpv_event_name of the event id""" -+ * cdef const char* name_c - */ - - /* function exit code */ -@@ -5780,1547 +6220,1710 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Property._init", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":248 -- * Wraps: mpv_event_property -- * """ -- * cdef public object name, data # <<<<<<<<<<<<<< -+/* "vidcutter/libs/pympv/mpv.pyx":302 -+ * return _strdec(name_c) - * -- * cdef _init(self, mpv_event_property* prop): -+ * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< -+ * cdef uint64_t ctxid = id(ctx) -+ * self.id = event.event_id - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event, PyObject *__pyx_v_ctx) { -+ uint64_t __pyx_v_ctxid; -+ PyObject *__pyx_v_userdata = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__", 0); -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->name); -- __pyx_r = __pyx_v_self->name; -- goto __pyx_L0; -- -- /* function exit code */ -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ PyObject *__pyx_t_1 = NULL; -+ uint64_t __pyx_t_2; -+ enum mpv_event_id __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_6 = NULL; -+ int __pyx_t_7; -+ PyObject *__pyx_t_8 = NULL; -+ int __pyx_t_9; -+ int __pyx_t_10; -+ int __pyx_t_11; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("_init", 0); - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ /* "vidcutter/libs/pympv/mpv.pyx":303 -+ * -+ * cdef _init(self, mpv_event* event, ctx): -+ * cdef uint64_t ctxid = id(ctx) # <<<<<<<<<<<<<< -+ * self.id = event.event_id -+ * self.data = self._data(event) -+ */ -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 303, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_ctxid = ((uint64_t)__pyx_t_2); - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":304 -+ * cdef _init(self, mpv_event* event, ctx): -+ * cdef uint64_t ctxid = id(ctx) -+ * self.id = event.event_id # <<<<<<<<<<<<<< -+ * self.data = self._data(event) -+ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -+ */ -+ __pyx_t_3 = __pyx_v_event->event_id; -+ __pyx_v_self->id = __pyx_t_3; - --static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__", 0); -- __Pyx_INCREF(__pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->name); -- __Pyx_DECREF(__pyx_v_self->name); -- __pyx_v_self->name = __pyx_v_value; -+ /* "vidcutter/libs/pympv/mpv.pyx":305 -+ * cdef uint64_t ctxid = id(ctx) -+ * self.id = event.event_id -+ * self.data = self._data(event) # <<<<<<<<<<<<<< -+ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -+ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -+ */ -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)__pyx_v_self->__pyx_vtab)->_data(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v_self->data); -+ __Pyx_DECREF(__pyx_v_self->data); -+ __pyx_v_self->data = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":306 -+ * self.id = event.event_id -+ * self.data = self._data(event) -+ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) # <<<<<<<<<<<<<< -+ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -+ * userdata.remove() -+ */ -+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_event->reply_userdata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_6 = NULL; -+ __pyx_t_7 = 0; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); -+ if (likely(__pyx_t_6)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_6); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_5, function); -+ __pyx_t_7 = 1; -+ } -+ } -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_5)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_8); -+ if (__pyx_t_6) { -+ __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; -+ } -+ __Pyx_GIVEREF(__pyx_t_4); -+ PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, Py_None); -+ __pyx_t_4 = 0; -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -+ } -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __pyx_v_userdata = __pyx_t_1; -+ __pyx_t_1 = 0; - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(PyObject *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); -+ /* "vidcutter/libs/pympv/mpv.pyx":307 -+ * self.data = self._data(event) -+ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -+ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< -+ * userdata.remove() -+ * if not userdata.observed and userdata.counter <= 0: -+ */ -+ __pyx_t_10 = (__pyx_v_userdata != Py_None); -+ __pyx_t_11 = (__pyx_t_10 != 0); -+ if (__pyx_t_11) { -+ } else { -+ __pyx_t_9 = __pyx_t_11; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_11 = ((__pyx_v_self->id != MPV_EVENT_PROPERTY_CHANGE) != 0); -+ __pyx_t_9 = __pyx_t_11; -+ __pyx_L4_bool_binop_done:; -+ if (__pyx_t_9) { - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":308 -+ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -+ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -+ * userdata.remove() # <<<<<<<<<<<<<< -+ * if not userdata.observed and userdata.counter <= 0: -+ * del _reply_userdatas[ctxid][event.reply_userdata] -+ */ -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_8 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); -+ if (likely(__pyx_t_8)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_8); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_5, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - --static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4name_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__", 0); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->name); -- __Pyx_DECREF(__pyx_v_self->name); -- __pyx_v_self->name = Py_None; -+ /* "vidcutter/libs/pympv/mpv.pyx":309 -+ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -+ * userdata.remove() -+ * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< -+ * del _reply_userdatas[ctxid][event.reply_userdata] -+ * if userdata is not None: -+ */ -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_observed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_10 = ((!__pyx_t_11) != 0); -+ if (__pyx_t_10) { -+ } else { -+ __pyx_t_9 = __pyx_t_10; -+ goto __pyx_L7_bool_binop_done; -+ } -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __pyx_t_9 = __pyx_t_10; -+ __pyx_L7_bool_binop_done:; -+ if (__pyx_t_9) { - -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":310 -+ * userdata.remove() -+ * if not userdata.observed and userdata.counter <= 0: -+ * del _reply_userdatas[ctxid][event.reply_userdata] # <<<<<<<<<<<<<< -+ * if userdata is not None: -+ * userdata = userdata.data -+ */ -+ __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ if (unlikely(__Pyx_DelItemInt(__pyx_t_5, __pyx_v_event->reply_userdata, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 310, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); -+ /* "vidcutter/libs/pympv/mpv.pyx":309 -+ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -+ * userdata.remove() -+ * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< -+ * del _reply_userdatas[ctxid][event.reply_userdata] -+ * if userdata is not None: -+ */ -+ } - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":307 -+ * self.data = self._data(event) -+ * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -+ * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< -+ * userdata.remove() -+ * if not userdata.observed and userdata.counter <= 0: -+ */ -+ } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_4data___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__", 0); -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->data); -- __pyx_r = __pyx_v_self->data; -- goto __pyx_L0; -+ /* "vidcutter/libs/pympv/mpv.pyx":311 -+ * if not userdata.observed and userdata.counter <= 0: -+ * del _reply_userdatas[ctxid][event.reply_userdata] -+ * if userdata is not None: # <<<<<<<<<<<<<< -+ * userdata = userdata.data -+ * self.reply_userdata = userdata -+ */ -+ __pyx_t_9 = (__pyx_v_userdata != Py_None); -+ __pyx_t_10 = (__pyx_t_9 != 0); -+ if (__pyx_t_10) { - -- /* function exit code */ -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":312 -+ * del _reply_userdatas[ctxid][event.reply_userdata] -+ * if userdata is not None: -+ * userdata = userdata.data # <<<<<<<<<<<<<< -+ * self.reply_userdata = userdata -+ * self.error = event.error -+ */ -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 312, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF_SET(__pyx_v_userdata, __pyx_t_5); -+ __pyx_t_5 = 0; - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ /* "vidcutter/libs/pympv/mpv.pyx":311 -+ * if not userdata.observed and userdata.counter <= 0: -+ * del _reply_userdatas[ctxid][event.reply_userdata] -+ * if userdata is not None: # <<<<<<<<<<<<<< -+ * userdata = userdata.data -+ * self.reply_userdata = userdata -+ */ -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":313 -+ * if userdata is not None: -+ * userdata = userdata.data -+ * self.reply_userdata = userdata # <<<<<<<<<<<<<< -+ * self.error = event.error -+ * return self -+ */ -+ __Pyx_INCREF(__pyx_v_userdata); -+ __Pyx_GIVEREF(__pyx_v_userdata); -+ __Pyx_GOTREF(__pyx_v_self->reply_userdata); -+ __Pyx_DECREF(__pyx_v_self->reply_userdata); -+ __pyx_v_self->reply_userdata = __pyx_v_userdata; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":314 -+ * userdata = userdata.data -+ * self.reply_userdata = userdata -+ * self.error = event.error # <<<<<<<<<<<<<< -+ * return self -+ * -+ */ -+ __pyx_t_7 = __pyx_v_event->error; -+ __pyx_v_self->error = __pyx_t_7; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":315 -+ * self.reply_userdata = userdata -+ * self.error = event.error -+ * return self # <<<<<<<<<<<<<< -+ * -+ * -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(((PyObject *)__pyx_v_self)); -+ __pyx_r = ((PyObject *)__pyx_v_self); -+ goto __pyx_L0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":302 -+ * return _strdec(name_c) -+ * -+ * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< -+ * cdef uint64_t ctxid = id(ctx) -+ * self.id = event.event_id -+ */ - - /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event._init", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; -+ __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_userdata); -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -+/* "vidcutter/libs/pympv/mpv.pyx":258 -+ * cdef class Event(object): -+ * """Wraps: mpv_event""" -+ * cdef public mpv_event_id id # <<<<<<<<<<<<<< -+ * cdef public int error -+ * cdef public object data, reply_userdata -+ */ -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__", 0); -- __Pyx_INCREF(__pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->data); -- __Pyx_DECREF(__pyx_v_self->data); -- __pyx_v_self->data = __pyx_v_value; -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); - - /* function exit code */ -- __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; -+ -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - - /* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(PyObject *__pyx_v_self) { -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_8Property_4data_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -+static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__", 0); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->data); -- __Pyx_DECREF(__pyx_v_self->data); -- __pyx_v_self->data = Py_None; -+ enum mpv_event_id __pyx_t_1; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__set__", 0); -+ __pyx_t_1 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_value)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) -+ __pyx_v_self->id = __pyx_t_1; - - /* function exit code */ - __pyx_r = 0; -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = -1; -+ __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * cdef tuple state -- * cdef object _dict -+/* "vidcutter/libs/pympv/mpv.pyx":259 -+ * """Wraps: mpv_event""" -+ * cdef public mpv_event_id id -+ * cdef public int error # <<<<<<<<<<<<<< -+ * cdef public object data, reply_userdata -+ * - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self) { -- PyObject *__pyx_v_state = 0; -- PyObject *__pyx_v__dict = 0; -- int __pyx_v_use_setstate; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__reduce_cython__", 0); -- -- /* "(tree fragment)":5 -- * cdef object _dict -- * cdef bint use_setstate -- * state = (self.data, self.name) # <<<<<<<<<<<<<< -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: -- */ -- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_v_self->data); -- __Pyx_GIVEREF(__pyx_v_self->data); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->data); -- __Pyx_INCREF(__pyx_v_self->name); -- __Pyx_GIVEREF(__pyx_v_self->name); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->name); -- __pyx_v_state = ((PyObject*)__pyx_t_1); -+ __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; -+ goto __pyx_L0; - -- /* "(tree fragment)":6 -- * cdef bint use_setstate -- * state = (self.data, self.name) -- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< -- * if _dict is not None: -- * state += (_dict,) -- */ -- __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v__dict = __pyx_t_1; -- __pyx_t_1 = 0; -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "(tree fragment)":7 -- * state = (self.data, self.name) -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: # <<<<<<<<<<<<<< -- * state += (_dict,) -- * use_setstate = True -- */ -- __pyx_t_2 = (__pyx_v__dict != Py_None); -- __pyx_t_3 = (__pyx_t_2 != 0); -- if (__pyx_t_3) { -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - -- /* "(tree fragment)":8 -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: -- * state += (_dict,) # <<<<<<<<<<<<<< -- * use_setstate = True -- * else: -- */ -- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_v__dict); -- __Pyx_GIVEREF(__pyx_v__dict); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); -- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); -- __pyx_t_4 = 0; -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "(tree fragment)":9 -- * if _dict is not None: -- * state += (_dict,) -- * use_setstate = True # <<<<<<<<<<<<<< -- * else: -- * use_setstate = self.data is not None or self.name is not None -- */ -- __pyx_v_use_setstate = 1; -- -- /* "(tree fragment)":7 -- * state = (self.data, self.name) -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: # <<<<<<<<<<<<<< -- * state += (_dict,) -- * use_setstate = True -- */ -- goto __pyx_L3; -- } -- -- /* "(tree fragment)":11 -- * use_setstate = True -- * else: -- * use_setstate = self.data is not None or self.name is not None # <<<<<<<<<<<<<< -- * if use_setstate: -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state -- */ -- /*else*/ { -- __pyx_t_2 = (__pyx_v_self->data != Py_None); -- __pyx_t_5 = (__pyx_t_2 != 0); -- if (!__pyx_t_5) { -- } else { -- __pyx_t_3 = __pyx_t_5; -- goto __pyx_L4_bool_binop_done; -- } -- __pyx_t_5 = (__pyx_v_self->name != Py_None); -- __pyx_t_2 = (__pyx_t_5 != 0); -- __pyx_t_3 = __pyx_t_2; -- __pyx_L4_bool_binop_done:; -- __pyx_v_use_setstate = __pyx_t_3; -- } -- __pyx_L3:; -- -- /* "(tree fragment)":12 -- * else: -- * use_setstate = self.data is not None or self.name is not None -- * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state -- * else: -- */ -- __pyx_t_3 = (__pyx_v_use_setstate != 0); -- if (__pyx_t_3) { -- -- /* "(tree fragment)":13 -- * use_setstate = self.data is not None or self.name is not None -- * if use_setstate: -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state # <<<<<<<<<<<<<< -- * else: -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Property); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_5713169); -- __Pyx_GIVEREF(__pyx_int_5713169); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_5713169); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); -- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_GIVEREF(__pyx_t_4); -- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); -- __Pyx_INCREF(__pyx_v_state); -- __Pyx_GIVEREF(__pyx_v_state); -- PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state); -- __pyx_t_4 = 0; -- __pyx_t_1 = 0; -- __pyx_r = __pyx_t_6; -- __pyx_t_6 = 0; -- goto __pyx_L0; -- -- /* "(tree fragment)":12 -- * else: -- * use_setstate = self.data is not None or self.name is not None -- * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state -- * else: -- */ -- } -- -- /* "(tree fragment)":15 -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, None), state -- * else: -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_Property__set_state(self, __pyx_state) -- */ -- /*else*/ { -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_Property); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_5713169); -- __Pyx_GIVEREF(__pyx_int_5713169); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_5713169); -- __Pyx_INCREF(__pyx_v_state); -- __Pyx_GIVEREF(__pyx_v_state); -- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); -- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_GIVEREF(__pyx_t_6); -- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); -- __pyx_t_6 = 0; -- __pyx_t_1 = 0; -- __pyx_r = __pyx_t_4; -- __pyx_t_4 = 0; -- goto __pyx_L0; -- } -- -- /* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * cdef tuple state -- * cdef object _dict -- */ -+static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ int __pyx_t_1; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__set__", 0); -+ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L1_error) -+ __pyx_v_self->error = __pyx_t_1; - - /* function exit code */ -+ __pyx_r = 0; -+ goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Property.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = -1; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_state); -- __Pyx_XDECREF(__pyx_v__dict); -- __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "(tree fragment)":16 -- * else: -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_Property__set_state(self, __pyx_state) -+/* "vidcutter/libs/pympv/mpv.pyx":260 -+ * cdef public mpv_event_id id -+ * cdef public int error -+ * cdef public object data, reply_userdata # <<<<<<<<<<<<<< -+ * -+ * @property - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4data___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__setstate_cython__", 0); -- -- /* "(tree fragment)":17 -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) -- * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_Property__set_state(self, __pyx_state) # <<<<<<<<<<<<<< -- */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "(tree fragment)":16 -- * else: -- * return __pyx_unpickle_Property, (type(self), 0x0572d11, state) -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_Property__set_state(self, __pyx_state) -- */ -+ __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_self->data); -+ __pyx_r = __pyx_v_self->data; -+ goto __pyx_L0; - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Property.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":263 -- * -- * @property -- * def error_str(self): # <<<<<<<<<<<<<< -- * """mpv_error_string of the error proeprty""" -- * cdef const char* err_c -- */ -- - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -- char const *__pyx_v_err_c; -- PyObject *__pyx_r = NULL; -+static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_RefNannySetupContext("__set__", 0); -+ __Pyx_INCREF(__pyx_v_value); -+ __Pyx_GIVEREF(__pyx_v_value); -+ __Pyx_GOTREF(__pyx_v_self->data); -+ __Pyx_DECREF(__pyx_v_self->data); -+ __pyx_v_self->data = __pyx_v_value; - -- /* "vidcutter/libs/pympv/mpv.pyx":266 -- * """mpv_error_string of the error proeprty""" -- * cdef const char* err_c -- * with nogil: # <<<<<<<<<<<<<< -- * err_c = mpv_error_string(self.error) -- * return _strdec(err_c) -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":267 -- * cdef const char* err_c -- * with nogil: -- * err_c = mpv_error_string(self.error) # <<<<<<<<<<<<<< -- * return _strdec(err_c) -- * -- */ -- __pyx_v_err_c = mpv_error_string(__pyx_v_self->error); -- } -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(PyObject *__pyx_v_self); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(PyObject *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); - -- /* "vidcutter/libs/pympv/mpv.pyx":266 -- * """mpv_error_string of the error proeprty""" -- * cdef const char* err_c -- * with nogil: # <<<<<<<<<<<<<< -- * err_c = mpv_error_string(self.error) -- * return _strdec(err_c) -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":268 -- * with nogil: -- * err_c = mpv_error_string(self.error) -- * return _strdec(err_c) # <<<<<<<<<<<<<< -- * -- * cdef _data(self, mpv_event* event): -- */ -+static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__", 0); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ __Pyx_GOTREF(__pyx_v_self->data); -+ __Pyx_DECREF(__pyx_v_self->data); -+ __pyx_v_self->data = Py_None; -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -+ __Pyx_INCREF(__pyx_v_self->reply_userdata); -+ __pyx_r = __pyx_v_self->reply_userdata; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":263 -- * -- * @property -- * def error_str(self): # <<<<<<<<<<<<<< -- * """mpv_error_string of the error proeprty""" -- * cdef const char* err_c -- */ -- - /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error_str.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":270 -- * return _strdec(err_c) -- * -- * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< -- * cdef void* data = event.data -- * cdef mpv_event_client_message* climsg -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__set__", 0); -+ __Pyx_INCREF(__pyx_v_value); -+ __Pyx_GIVEREF(__pyx_v_value); -+ __Pyx_GOTREF(__pyx_v_self->reply_userdata); -+ __Pyx_DECREF(__pyx_v_self->reply_userdata); -+ __pyx_v_self->reply_userdata = __pyx_v_value; -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(PyObject *__pyx_v_self); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(PyObject *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__del__", 0); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ __Pyx_GOTREF(__pyx_v_self->reply_userdata); -+ __Pyx_DECREF(__pyx_v_self->reply_userdata); -+ __pyx_v_self->reply_userdata = Py_None; -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * cdef tuple state -+ * cdef object _dict - */ - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event) { -- void *__pyx_v_data; -- struct mpv_event_client_message *__pyx_v_climsg; -- PyObject *__pyx_v_args = NULL; -- int __pyx_v_num_args; -- int __pyx_v_i; -- PyObject *__pyx_v_arg = NULL; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+ PyObject *__pyx_v_state = 0; -+ PyObject *__pyx_v__dict = 0; -+ int __pyx_v_use_setstate; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- void *__pyx_t_1; -+ PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; -- PyObject *__pyx_t_7 = NULL; -- int __pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_data", 0); -+ __Pyx_RefNannySetupContext("__reduce_cython__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":271 -- * -- * cdef _data(self, mpv_event* event): -- * cdef void* data = event.data # <<<<<<<<<<<<<< -- * cdef mpv_event_client_message* climsg -- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: -+ /* "(tree fragment)":5 -+ * cdef object _dict -+ * cdef bint use_setstate -+ * state = (self.data, self.error, self.id, self.reply_userdata) # <<<<<<<<<<<<<< -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: - */ -- __pyx_t_1 = __pyx_v_event->data; -- __pyx_v_data = __pyx_t_1; -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_INCREF(__pyx_v_self->data); -+ __Pyx_GIVEREF(__pyx_v_self->data); -+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->data); -+ __Pyx_GIVEREF(__pyx_t_1); -+ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_2); -+ PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); -+ __Pyx_INCREF(__pyx_v_self->reply_userdata); -+ __Pyx_GIVEREF(__pyx_v_self->reply_userdata); -+ PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->reply_userdata); -+ __pyx_t_1 = 0; -+ __pyx_t_2 = 0; -+ __pyx_v_state = ((PyObject*)__pyx_t_3); -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":273 -- * cdef void* data = event.data -- * cdef mpv_event_client_message* climsg -- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< -- * return Property()._init(data) -- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: -- */ -- switch (__pyx_v_self->id) { -- case MPV_EVENT_GET_PROPERTY_REPLY: -- -- /* "vidcutter/libs/pympv/mpv.pyx":274 -- * cdef mpv_event_client_message* climsg -- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: -- * return Property()._init(data) # <<<<<<<<<<<<<< -- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: -- * return Property()._init(data) -+ /* "(tree fragment)":6 -+ * cdef bint use_setstate -+ * state = (self.data, self.error, self.id, self.reply_userdata) -+ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< -+ * if _dict is not None: -+ * state += (_dict,) - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_v__dict = __pyx_t_3; -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":273 -- * cdef void* data = event.data -- * cdef mpv_event_client_message* climsg -- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< -- * return Property()._init(data) -- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: -+ /* "(tree fragment)":7 -+ * state = (self.data, self.error, self.id, self.reply_userdata) -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: # <<<<<<<<<<<<<< -+ * state += (_dict,) -+ * use_setstate = True - */ -- break; -- case MPV_EVENT_PROPERTY_CHANGE: -+ __pyx_t_4 = (__pyx_v__dict != Py_None); -+ __pyx_t_5 = (__pyx_t_4 != 0); -+ if (__pyx_t_5) { - -- /* "vidcutter/libs/pympv/mpv.pyx":276 -- * return Property()._init(data) -- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: -- * return Property()._init(data) # <<<<<<<<<<<<<< -- * elif self.id == MPV_EVENT_LOG_MESSAGE: -- * return LogMessage()._init(data) -+ /* "(tree fragment)":8 -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: -+ * state += (_dict,) # <<<<<<<<<<<<<< -+ * use_setstate = True -+ * else: - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) -+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) -+ __Pyx_INCREF(__pyx_v__dict); -+ __Pyx_GIVEREF(__pyx_v__dict); -+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict); -+ __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_r = __pyx_t_2; -+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2)); - __pyx_t_2 = 0; -- goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":275 -- * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: -- * return Property()._init(data) -- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< -- * return Property()._init(data) -- * elif self.id == MPV_EVENT_LOG_MESSAGE: -+ /* "(tree fragment)":9 -+ * if _dict is not None: -+ * state += (_dict,) -+ * use_setstate = True # <<<<<<<<<<<<<< -+ * else: -+ * use_setstate = self.data is not None or self.reply_userdata is not None - */ -- break; -- case MPV_EVENT_LOG_MESSAGE: -+ __pyx_v_use_setstate = 1; - -- /* "vidcutter/libs/pympv/mpv.pyx":278 -- * return Property()._init(data) -- * elif self.id == MPV_EVENT_LOG_MESSAGE: -- * return LogMessage()._init(data) # <<<<<<<<<<<<<< -- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: -- * return InputDispatch()._init(data) -+ /* "(tree fragment)":7 -+ * state = (self.data, self.error, self.id, self.reply_userdata) -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: # <<<<<<<<<<<<<< -+ * state += (_dict,) -+ * use_setstate = True -+ */ -+ goto __pyx_L3; -+ } -+ -+ /* "(tree fragment)":11 -+ * use_setstate = True -+ * else: -+ * use_setstate = self.data is not None or self.reply_userdata is not None # <<<<<<<<<<<<<< -+ * if use_setstate: -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state -+ */ -+ /*else*/ { -+ __pyx_t_4 = (__pyx_v_self->data != Py_None); -+ __pyx_t_6 = (__pyx_t_4 != 0); -+ if (!__pyx_t_6) { -+ } else { -+ __pyx_t_5 = __pyx_t_6; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_6 = (__pyx_v_self->reply_userdata != Py_None); -+ __pyx_t_4 = (__pyx_t_6 != 0); -+ __pyx_t_5 = __pyx_t_4; -+ __pyx_L4_bool_binop_done:; -+ __pyx_v_use_setstate = __pyx_t_5; -+ } -+ __pyx_L3:; -+ -+ /* "(tree fragment)":12 -+ * else: -+ * use_setstate = self.data is not None or self.reply_userdata is not None -+ * if use_setstate: # <<<<<<<<<<<<<< -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state -+ * else: -+ */ -+ __pyx_t_5 = (__pyx_v_use_setstate != 0); -+ if (__pyx_t_5) { -+ -+ /* "(tree fragment)":13 -+ * use_setstate = self.data is not None or self.reply_userdata is not None -+ * if use_setstate: -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state # <<<<<<<<<<<<<< -+ * else: -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_Event); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *)((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2), ((struct mpv_event_log_message *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) -+ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_r = __pyx_t_3; -+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_INCREF(__pyx_int_228822053); -+ __Pyx_GIVEREF(__pyx_int_228822053); -+ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228822053); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None); -+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_2); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); -+ __Pyx_INCREF(__pyx_v_state); -+ __Pyx_GIVEREF(__pyx_v_state); -+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); -+ __pyx_t_2 = 0; - __pyx_t_3 = 0; -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":277 -- * elif self.id == MPV_EVENT_PROPERTY_CHANGE: -- * return Property()._init(data) -- * elif self.id == MPV_EVENT_LOG_MESSAGE: # <<<<<<<<<<<<<< -- * return LogMessage()._init(data) -- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: -+ /* "(tree fragment)":12 -+ * else: -+ * use_setstate = self.data is not None or self.reply_userdata is not None -+ * if use_setstate: # <<<<<<<<<<<<<< -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state -+ * else: - */ -- break; -- case MPV_EVENT_SCRIPT_INPUT_DISPATCH: -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":280 -- * return LogMessage()._init(data) -- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: -- * return InputDispatch()._init(data) # <<<<<<<<<<<<<< -- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: -- * climsg = data -+ /* "(tree fragment)":15 -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state -+ * else: -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * __pyx_unpickle_Event__set_state(self, __pyx_state) - */ -+ /*else*/ { - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_InputDispatch)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 280, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Event); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch *)((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_t_3), ((struct mpv_event_script_input_dispatch *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L1_error) -+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_INCREF(__pyx_int_228822053); -+ __Pyx_GIVEREF(__pyx_int_228822053); -+ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228822053); -+ __Pyx_INCREF(__pyx_v_state); -+ __Pyx_GIVEREF(__pyx_v_state); -+ PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state); -+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_GIVEREF(__pyx_t_1); -+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); -+ __pyx_t_1 = 0; -+ __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":279 -- * elif self.id == MPV_EVENT_LOG_MESSAGE: -- * return LogMessage()._init(data) -- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: # <<<<<<<<<<<<<< -- * return InputDispatch()._init(data) -- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: -+ /* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * cdef tuple state -+ * cdef object _dict - */ -- break; -- case MPV_EVENT_CLIENT_MESSAGE: - -- /* "vidcutter/libs/pympv/mpv.pyx":282 -- * return InputDispatch()._init(data) -- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: -- * climsg = data # <<<<<<<<<<<<<< -- * args = [] -- * num_args = climsg.num_args -- */ -- __pyx_v_climsg = ((struct mpv_event_client_message *)__pyx_v_data); -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_state); -+ __Pyx_XDECREF(__pyx_v__dict); -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":283 -- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: -- * climsg = data -- * args = [] # <<<<<<<<<<<<<< -- * num_args = climsg.num_args -- * for i in range(num_args): -+/* "(tree fragment)":16 -+ * else: -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_unpickle_Event__set_state(self, __pyx_state) - */ -- __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 283, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_v_args = ((PyObject*)__pyx_t_2); -- __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":284 -- * climsg = data -- * args = [] -- * num_args = climsg.num_args # <<<<<<<<<<<<<< -- * for i in range(num_args): -- * arg = climsg.args[i] -- */ -- __pyx_t_4 = __pyx_v_climsg->num_args; -- __pyx_v_num_args = __pyx_t_4; -- -- /* "vidcutter/libs/pympv/mpv.pyx":285 -- * args = [] -- * num_args = climsg.num_args -- * for i in range(num_args): # <<<<<<<<<<<<<< -- * arg = climsg.args[i] -- * arg = _strdec(arg) -- */ -- __pyx_t_4 = __pyx_v_num_args; -- __pyx_t_5 = __pyx_t_4; -- for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { -- __pyx_v_i = __pyx_t_6; -- -- /* "vidcutter/libs/pympv/mpv.pyx":286 -- * num_args = climsg.num_args -- * for i in range(num_args): -- * arg = climsg.args[i] # <<<<<<<<<<<<<< -- * arg = _strdec(arg) -- * args.append(arg) -- */ -- __pyx_t_2 = __Pyx_PyBytes_FromString(((char *)(__pyx_v_climsg->args[__pyx_v_i]))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 286, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_2); -- __pyx_t_2 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":287 -- * for i in range(num_args): -- * arg = climsg.args[i] -- * arg = _strdec(arg) # <<<<<<<<<<<<<< -- * args.append(arg) -- * return args -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strdec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_7 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_7)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_7); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } -- } -- __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_arg) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_arg); -- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 287, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF_SET(__pyx_v_arg, __pyx_t_2); -- __pyx_t_2 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":288 -- * arg = climsg.args[i] -- * arg = _strdec(arg) -- * args.append(arg) # <<<<<<<<<<<<<< -- * return args -- * elif self.id == MPV_EVENT_END_FILE: -- */ -- __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_args, __pyx_v_arg); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 288, __pyx_L1_error) -- } -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - -- /* "vidcutter/libs/pympv/mpv.pyx":289 -- * arg = _strdec(arg) -- * args.append(arg) -- * return args # <<<<<<<<<<<<<< -- * elif self.id == MPV_EVENT_END_FILE: -- * return EndOfFileReached()._init(data) -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_args); -- __pyx_r = __pyx_v_args; -- goto __pyx_L0; -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":281 -- * elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: -- * return InputDispatch()._init(data) -- * elif self.id == MPV_EVENT_CLIENT_MESSAGE: # <<<<<<<<<<<<<< -- * climsg = data -- * args = [] -- */ -- break; -- case MPV_EVENT_END_FILE: -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__setstate_cython__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":291 -- * return args -- * elif self.id == MPV_EVENT_END_FILE: -- * return EndOfFileReached()._init(data) # <<<<<<<<<<<<<< -- * return None -- * -+ /* "(tree fragment)":17 -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) -+ * def __setstate_cython__(self, __pyx_state): -+ * __pyx_unpickle_Event__set_state(self, __pyx_state) # <<<<<<<<<<<<<< - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *)((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_2), ((struct mpv_event_end_file *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":290 -- * args.append(arg) -- * return args -- * elif self.id == MPV_EVENT_END_FILE: # <<<<<<<<<<<<<< -- * return EndOfFileReached()._init(data) -- * return None -+ /* "(tree fragment)":16 -+ * else: -+ * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_unpickle_Event__set_state(self, __pyx_state) - */ -- break; -- default: break; -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":292 -- * elif self.id == MPV_EVENT_END_FILE: -- * return EndOfFileReached()._init(data) -- * return None # <<<<<<<<<<<<<< -- * -- * @property -- */ -- __Pyx_XDECREF(__pyx_r); -+ /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Event.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":270 -- * return _strdec(err_c) -+/* "vidcutter/libs/pympv/mpv.pyx":318 - * -- * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< -- * cdef void* data = event.data -- * cdef mpv_event_client_message* climsg -+ * -+ * def _errors(fn): # <<<<<<<<<<<<<< -+ * def wrapped(*k, **kw): -+ * v = fn(*k, **kw) - */ - -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, PyObject *__pyx_v_fn); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_5_errors = {"_errors", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5_errors, METH_O, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, PyObject *__pyx_v_fn) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("_errors (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_4_errors(__pyx_self, ((PyObject *)__pyx_v_fn)); -+ - /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event._data", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_args); -- __Pyx_XDECREF(__pyx_v_arg); -- __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":295 -+/* "vidcutter/libs/pympv/mpv.pyx":319 - * -- * @property -- * def name(self): # <<<<<<<<<<<<<< -- * """mpv_event_name of the event id""" -- * cdef const char* name_c -+ * def _errors(fn): -+ * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -+ * v = fn(*k, **kw) -+ * if v < 0: - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(PyObject *__pyx_v_self) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped = {"wrapped", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_k = 0; -+ PyObject *__pyx_v_kw = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("wrapped (wrapper)", 0); -+ if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "wrapped", 1))) return NULL; -+ __pyx_v_kw = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kw)) return NULL; -+ __Pyx_GOTREF(__pyx_v_kw); -+ __Pyx_INCREF(__pyx_args); -+ __pyx_v_k = __pyx_args; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(__pyx_self, __pyx_v_k, __pyx_v_kw); - - /* function exit code */ -+ __Pyx_XDECREF(__pyx_v_k); -+ __Pyx_XDECREF(__pyx_v_kw); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -- char const *__pyx_v_name_c; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_kw) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_cur_scope; -+ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_outer_scope; -+ PyObject *__pyx_v_v = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -+ int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_RefNannySetupContext("wrapped", 0); -+ __pyx_outer_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *) __Pyx_CyFunction_GetClosure(__pyx_self); -+ __pyx_cur_scope = __pyx_outer_scope; - -- /* "vidcutter/libs/pympv/mpv.pyx":298 -- * """mpv_event_name of the event id""" -- * cdef const char* name_c -- * with nogil: # <<<<<<<<<<<<<< -- * name_c = mpv_event_name(self.id) -- * return _strdec(name_c) -+ /* "vidcutter/libs/pympv/mpv.pyx":320 -+ * def _errors(fn): -+ * def wrapped(*k, **kw): -+ * v = fn(*k, **kw) # <<<<<<<<<<<<<< -+ * if v < 0: -+ * raise MPVError(v) - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ if (unlikely(!__pyx_cur_scope->__pyx_v_fn)) { __Pyx_RaiseClosureNameError("fn"); __PYX_ERR(0, 320, __pyx_L1_error) } -+ __pyx_t_1 = PyDict_Copy(__pyx_v_kw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_fn, __pyx_v_k, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_v = __pyx_t_2; -+ __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":299 -- * cdef const char* name_c -- * with nogil: -- * name_c = mpv_event_name(self.id) # <<<<<<<<<<<<<< -- * return _strdec(name_c) -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":321 -+ * def wrapped(*k, **kw): -+ * v = fn(*k, **kw) -+ * if v < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(v) -+ * return wrapped - */ -- __pyx_v_name_c = mpv_event_name(__pyx_v_self->id); -- } -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_v, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 321, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (unlikely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":298 -- * """mpv_event_name of the event id""" -- * cdef const char* name_c -- * with nogil: # <<<<<<<<<<<<<< -- * name_c = mpv_event_name(self.id) -- * return _strdec(name_c) -+ /* "vidcutter/libs/pympv/mpv.pyx":322 -+ * v = fn(*k, **kw) -+ * if v < 0: -+ * raise MPVError(v) # <<<<<<<<<<<<<< -+ * return wrapped -+ * - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_1, function); - } -- } -+ } -+ __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_v) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_v); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_Raise(__pyx_t_2, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __PYX_ERR(0, 322, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":300 -- * with nogil: -- * name_c = mpv_event_name(self.id) -- * return _strdec(name_c) # <<<<<<<<<<<<<< -- * -- * cdef _init(self, mpv_event* event, ctx): -+ /* "vidcutter/libs/pympv/mpv.pyx":321 -+ * def wrapped(*k, **kw): -+ * v = fn(*k, **kw) -+ * if v < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(v) -+ * return wrapped - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } - } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":295 -+ /* "vidcutter/libs/pympv/mpv.pyx":319 - * -- * @property -- * def name(self): # <<<<<<<<<<<<<< -- * """mpv_event_name of the event id""" -- * cdef const char* name_c -+ * def _errors(fn): -+ * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -+ * v = fn(*k, **kw) -+ * if v < 0: - */ - - /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._errors.wrapped", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_v); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":302 -- * return _strdec(name_c) -+/* "vidcutter/libs/pympv/mpv.pyx":318 - * -- * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< -- * cdef uint64_t ctxid = id(ctx) -- * self.id = event.event_id -+ * -+ * def _errors(fn): # <<<<<<<<<<<<<< -+ * def wrapped(*k, **kw): -+ * v = fn(*k, **kw) - */ - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, struct mpv_event *__pyx_v_event, PyObject *__pyx_v_ctx) { -- uint64_t __pyx_v_ctxid; -- PyObject *__pyx_v_userdata = NULL; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fn) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_cur_scope; -+ PyObject *__pyx_v_wrapped = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- uint64_t __pyx_t_2; -- enum mpv_event_id __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- PyObject *__pyx_t_6 = NULL; -- int __pyx_t_7; -- PyObject *__pyx_t_8 = NULL; -- int __pyx_t_9; -- int __pyx_t_10; -- int __pyx_t_11; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_init", 0); -+ __Pyx_RefNannySetupContext("_errors", 0); -+ __pyx_cur_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(__pyx_ptype_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, __pyx_empty_tuple, NULL); -+ if (unlikely(!__pyx_cur_scope)) { -+ __pyx_cur_scope = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)Py_None); -+ __Pyx_INCREF(Py_None); -+ __PYX_ERR(0, 318, __pyx_L1_error) -+ } else { -+ __Pyx_GOTREF(__pyx_cur_scope); -+ } -+ __pyx_cur_scope->__pyx_v_fn = __pyx_v_fn; -+ __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fn); -+ __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fn); - -- /* "vidcutter/libs/pympv/mpv.pyx":303 -+ /* "vidcutter/libs/pympv/mpv.pyx":319 - * -- * cdef _init(self, mpv_event* event, ctx): -- * cdef uint64_t ctxid = id(ctx) # <<<<<<<<<<<<<< -- * self.id = event.event_id -- * self.data = self._data(event) -+ * def _errors(fn): -+ * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -+ * v = fn(*k, **kw) -+ * if v < 0: - */ -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped, 0, __pyx_n_s_errors_locals_wrapped, ((PyObject*)__pyx_cur_scope), __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 303, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_ctxid = ((uint64_t)__pyx_t_2); -+ __pyx_v_wrapped = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":304 -- * cdef _init(self, mpv_event* event, ctx): -- * cdef uint64_t ctxid = id(ctx) -- * self.id = event.event_id # <<<<<<<<<<<<<< -- * self.data = self._data(event) -- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -+ /* "vidcutter/libs/pympv/mpv.pyx":323 -+ * if v < 0: -+ * raise MPVError(v) -+ * return wrapped # <<<<<<<<<<<<<< -+ * -+ * - */ -- __pyx_t_3 = __pyx_v_event->event_id; -- __pyx_v_self->id = __pyx_t_3; -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_wrapped); -+ __pyx_r = __pyx_v_wrapped; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":305 -- * cdef uint64_t ctxid = id(ctx) -- * self.id = event.event_id -- * self.data = self._data(event) # <<<<<<<<<<<<<< -- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -+ /* "vidcutter/libs/pympv/mpv.pyx":318 -+ * -+ * -+ * def _errors(fn): # <<<<<<<<<<<<<< -+ * def wrapped(*k, **kw): -+ * v = fn(*k, **kw) - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)__pyx_v_self->__pyx_vtab)->_data(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->data); -- __Pyx_DECREF(__pyx_v_self->data); -- __pyx_v_self->data = __pyx_t_1; -- __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":306 -- * self.id = event.event_id -- * self.data = self._data(event) -- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) # <<<<<<<<<<<<<< -- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -- * userdata.remove() -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._errors", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_wrapped); -+ __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "vidcutter/libs/pympv/mpv.pyx":329 -+ * code = None -+ * -+ * def __init__(self, e): # <<<<<<<<<<<<<< -+ * self.code = e -+ * cdef const char* err_c - */ -- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 306, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_event->reply_userdata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_6 = NULL; -- __pyx_t_7 = 0; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); -- if (likely(__pyx_t_6)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -- __Pyx_INCREF(__pyx_t_6); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_5, function); -- __pyx_t_7 = 1; -- } -- } -- #if CYTHON_FAST_PYCALL -- if (PyFunction_Check(__pyx_t_5)) { -- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; -- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- } else -- #endif -- #if CYTHON_FAST_PYCCALL -- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { -- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; -- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- } else -- #endif -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_self = 0; -+ PyObject *__pyx_v_e = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { -- __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 306, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_8); -- if (__pyx_t_6) { -- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_e,0}; -+ PyObject* values[2] = {0,0}; -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_e)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 329, __pyx_L3_error) -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 329, __pyx_L3_error) -+ } -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -+ goto __pyx_L5_argtuple_error; -+ } else { -+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } -- __Pyx_GIVEREF(__pyx_t_4); -- PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, Py_None); -- __pyx_t_4 = 0; -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __pyx_v_self = values[0]; -+ __pyx_v_e = values[1]; - } -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __pyx_v_userdata = __pyx_t_1; -- __pyx_t_1 = 0; -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 329, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(__pyx_self, __pyx_v_self, __pyx_v_e); - -- /* "vidcutter/libs/pympv/mpv.pyx":307 -- * self.data = self._data(event) -- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< -- * userdata.remove() -- * if not userdata.observed and userdata.counter <= 0: -- */ -- __pyx_t_10 = (__pyx_v_userdata != Py_None); -- __pyx_t_11 = (__pyx_t_10 != 0); -- if (__pyx_t_11) { -- } else { -- __pyx_t_9 = __pyx_t_11; -- goto __pyx_L4_bool_binop_done; -- } -- __pyx_t_11 = ((__pyx_v_self->id != MPV_EVENT_PROPERTY_CHANGE) != 0); -- __pyx_t_9 = __pyx_t_11; -- __pyx_L4_bool_binop_done:; -- if (__pyx_t_9) { -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":308 -- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -- * userdata.remove() # <<<<<<<<<<<<<< -- * if not userdata.observed and userdata.counter <= 0: -- * del _reply_userdatas[ctxid][event.reply_userdata] -- */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_5, function); -- } -- } -- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_e) { -+ char const *__pyx_v_err_c; -+ int __pyx_v_e_i; -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ int __pyx_t_1; -+ int __pyx_t_2; -+ int __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__init__", 0); -+ __Pyx_INCREF(__pyx_v_e); - -- /* "vidcutter/libs/pympv/mpv.pyx":309 -- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -- * userdata.remove() -- * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< -- * del _reply_userdatas[ctxid][event.reply_userdata] -- * if userdata is not None: -+ /* "vidcutter/libs/pympv/mpv.pyx":330 -+ * -+ * def __init__(self, e): -+ * self.code = e # <<<<<<<<<<<<<< -+ * cdef const char* err_c -+ * cdef int e_i - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_observed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_10 = ((!__pyx_t_11) != 0); -- if (__pyx_t_10) { -- } else { -- __pyx_t_9 = __pyx_t_10; -- goto __pyx_L7_bool_binop_done; -- } -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __pyx_t_9 = __pyx_t_10; -- __pyx_L7_bool_binop_done:; -- if (__pyx_t_9) { -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_e) < 0) __PYX_ERR(0, 330, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":310 -- * userdata.remove() -- * if not userdata.observed and userdata.counter <= 0: -- * del _reply_userdatas[ctxid][event.reply_userdata] # <<<<<<<<<<<<<< -- * if userdata is not None: -- * userdata = userdata.data -+ /* "vidcutter/libs/pympv/mpv.pyx":333 -+ * cdef const char* err_c -+ * cdef int e_i -+ * if not isinstance(e, basestring): # <<<<<<<<<<<<<< -+ * e_i = e -+ * with nogil: - */ -- __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- if (unlikely(__Pyx_DelItemInt(__pyx_t_5, __pyx_v_event->reply_userdata, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 310, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __pyx_t_1 = __Pyx_PyBaseString_Check(__pyx_v_e); -+ __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); -+ if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":309 -- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: -- * userdata.remove() -- * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< -- * del _reply_userdatas[ctxid][event.reply_userdata] -- * if userdata is not None: -+ /* "vidcutter/libs/pympv/mpv.pyx":334 -+ * cdef int e_i -+ * if not isinstance(e, basestring): -+ * e_i = e # <<<<<<<<<<<<<< -+ * with nogil: -+ * err_c = mpv_error_string(e_i) - */ -- } -+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_e); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L1_error) -+ __pyx_v_e_i = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":307 -- * self.data = self._data(event) -- * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) -- * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< -- * userdata.remove() -- * if not userdata.observed and userdata.counter <= 0: -+ /* "vidcutter/libs/pympv/mpv.pyx":335 -+ * if not isinstance(e, basestring): -+ * e_i = e -+ * with nogil: # <<<<<<<<<<<<<< -+ * err_c = mpv_error_string(e_i) -+ * e = _strdec(err_c) - */ -- } -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":311 -- * if not userdata.observed and userdata.counter <= 0: -- * del _reply_userdatas[ctxid][event.reply_userdata] -- * if userdata is not None: # <<<<<<<<<<<<<< -- * userdata = userdata.data -- * self.reply_userdata = userdata -+ /* "vidcutter/libs/pympv/mpv.pyx":336 -+ * e_i = e -+ * with nogil: -+ * err_c = mpv_error_string(e_i) # <<<<<<<<<<<<<< -+ * e = _strdec(err_c) -+ * Exception.__init__(self, e) - */ -- __pyx_t_9 = (__pyx_v_userdata != Py_None); -- __pyx_t_10 = (__pyx_t_9 != 0); -- if (__pyx_t_10) { -+ __pyx_v_err_c = mpv_error_string(__pyx_v_e_i); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":312 -- * del _reply_userdatas[ctxid][event.reply_userdata] -- * if userdata is not None: -- * userdata = userdata.data # <<<<<<<<<<<<<< -- * self.reply_userdata = userdata -- * self.error = event.error -+ /* "vidcutter/libs/pympv/mpv.pyx":335 -+ * if not isinstance(e, basestring): -+ * e_i = e -+ * with nogil: # <<<<<<<<<<<<<< -+ * err_c = mpv_error_string(e_i) -+ * e = _strdec(err_c) - */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 312, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF_SET(__pyx_v_userdata, __pyx_t_5); -- __pyx_t_5 = 0; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L6; -+ } -+ __pyx_L6:; -+ } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":311 -- * if not userdata.observed and userdata.counter <= 0: -- * del _reply_userdatas[ctxid][event.reply_userdata] -- * if userdata is not None: # <<<<<<<<<<<<<< -- * userdata = userdata.data -- * self.reply_userdata = userdata -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":313 -- * if userdata is not None: -- * userdata = userdata.data -- * self.reply_userdata = userdata # <<<<<<<<<<<<<< -- * self.error = event.error -- * return self -+ /* "vidcutter/libs/pympv/mpv.pyx":337 -+ * with nogil: -+ * err_c = mpv_error_string(e_i) -+ * e = _strdec(err_c) # <<<<<<<<<<<<<< -+ * Exception.__init__(self, e) -+ * - */ -- __Pyx_INCREF(__pyx_v_userdata); -- __Pyx_GIVEREF(__pyx_v_userdata); -- __Pyx_GOTREF(__pyx_v_self->reply_userdata); -- __Pyx_DECREF(__pyx_v_self->reply_userdata); -- __pyx_v_self->reply_userdata = __pyx_v_userdata; -+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_strdec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_7 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { -+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); -+ if (likely(__pyx_t_7)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_7); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_5, function); -+ } -+ } -+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF_SET(__pyx_v_e, __pyx_t_4); -+ __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":314 -- * userdata = userdata.data -- * self.reply_userdata = userdata -- * self.error = event.error # <<<<<<<<<<<<<< -- * return self -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":333 -+ * cdef const char* err_c -+ * cdef int e_i -+ * if not isinstance(e, basestring): # <<<<<<<<<<<<<< -+ * e_i = e -+ * with nogil: - */ -- __pyx_t_7 = __pyx_v_event->error; -- __pyx_v_self->error = __pyx_t_7; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":315 -- * self.reply_userdata = userdata -- * self.error = event.error -- * return self # <<<<<<<<<<<<<< -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":338 -+ * err_c = mpv_error_string(e_i) -+ * e = _strdec(err_c) -+ * Exception.__init__(self, e) # <<<<<<<<<<<<<< - * -+ * class PyMPVError(Exception): - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(((PyObject *)__pyx_v_self)); -- __pyx_r = ((PyObject *)__pyx_v_self); -- goto __pyx_L0; -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_6 = NULL; -+ __pyx_t_3 = 0; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); -+ if (likely(__pyx_t_6)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_6); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_5, function); -+ __pyx_t_3 = 1; -+ } -+ } -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_5)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; -+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_GOTREF(__pyx_t_4); -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; -+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_GOTREF(__pyx_t_4); -+ } else -+ #endif -+ { -+ __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ if (__pyx_t_6) { -+ __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; -+ } -+ __Pyx_INCREF(__pyx_v_self); -+ __Pyx_GIVEREF(__pyx_v_self); -+ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_3, __pyx_v_self); -+ __Pyx_INCREF(__pyx_v_e); -+ __Pyx_GIVEREF(__pyx_v_e); -+ PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_v_e); -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ } -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":302 -- * return _strdec(name_c) -+ /* "vidcutter/libs/pympv/mpv.pyx":329 -+ * code = None - * -- * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< -- * cdef uint64_t ctxid = id(ctx) -- * self.id = event.event_id -+ * def __init__(self, e): # <<<<<<<<<<<<<< -+ * self.code = e -+ * cdef const char* err_c - */ - - /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event._init", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_userdata); -+ __Pyx_XDECREF(__pyx_v_e); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":258 -- * cdef class Event(object): -- * """Wraps: mpv_event""" -- * cdef public mpv_event_id id # <<<<<<<<<<<<<< -- * cdef public int error -- * cdef public object data, reply_userdata -+/* "vidcutter/libs/pympv/mpv.pyx":347 -+ * -+ * class _ReplyUserData(object): -+ * def __init__(self, data): # <<<<<<<<<<<<<< -+ * self.counter = 0 -+ * self.data = data - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(PyObject *__pyx_v_self) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_self = 0; -+ PyObject *__pyx_v_data = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_data,0}; -+ PyObject* values[2] = {0,0}; -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 347, __pyx_L3_error) -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 347, __pyx_L3_error) -+ } -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -+ goto __pyx_L5_argtuple_error; -+ } else { -+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ } -+ __pyx_v_self = values[0]; -+ __pyx_v_data = values[1]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 347, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(__pyx_self, __pyx_v_self, __pyx_v_data); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_data) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__get__", 0); -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -- -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ __Pyx_RefNannySetupContext("__init__", 0); - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ /* "vidcutter/libs/pympv/mpv.pyx":348 -+ * class _ReplyUserData(object): -+ * def __init__(self, data): -+ * self.counter = 0 # <<<<<<<<<<<<<< -+ * self.data = data -+ * self.observed = False -+ */ -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_int_0) < 0) __PYX_ERR(0, 348, __pyx_L1_error) - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":349 -+ * def __init__(self, data): -+ * self.counter = 0 -+ * self.data = data # <<<<<<<<<<<<<< -+ * self.observed = False -+ * -+ */ -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 349, __pyx_L1_error) - --static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- enum mpv_event_id __pyx_t_1; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__set__", 0); -- __pyx_t_1 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_value)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) -- __pyx_v_self->id = __pyx_t_1; -+ /* "vidcutter/libs/pympv/mpv.pyx":350 -+ * self.counter = 0 -+ * self.data = data -+ * self.observed = False # <<<<<<<<<<<<<< -+ * -+ * def add(self): -+ */ -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 350, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":347 -+ * -+ * class _ReplyUserData(object): -+ * def __init__(self, data): # <<<<<<<<<<<<<< -+ * self.counter = 0 -+ * self.data = data -+ */ - - /* function exit code */ -- __pyx_r = 0; -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = -1; -+ __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":259 -- * """Wraps: mpv_event""" -- * cdef public mpv_event_id id -- * cdef public int error # <<<<<<<<<<<<<< -- * cdef public object data, reply_userdata -+/* "vidcutter/libs/pympv/mpv.pyx":352 -+ * self.observed = False -+ * -+ * def add(self): # <<<<<<<<<<<<<< -+ * self.counter += 1 - * - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(PyObject *__pyx_v_self) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add = {"add", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, METH_O, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add(PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("add (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(__pyx_self, ((PyObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__get__", 0); -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error) -+ __Pyx_RefNannySetupContext("add", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":353 -+ * -+ * def add(self): -+ * self.counter += 1 # <<<<<<<<<<<<<< -+ * -+ * def remove(self): -+ */ -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 353, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":352 -+ * self.observed = False -+ * -+ * def add(self): # <<<<<<<<<<<<<< -+ * self.counter += 1 -+ * -+ */ - - /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.add", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); -@@ -7328,1181 +7931,1253 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(struct __p - return __pyx_r; - } - -+/* "vidcutter/libs/pympv/mpv.pyx":355 -+ * self.counter += 1 -+ * -+ * def remove(self): # <<<<<<<<<<<<<< -+ * self.counter -= 1 -+ * -+ */ -+ - /* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove = {"remove", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, METH_O, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove(PyObject *__pyx_self, PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ __Pyx_RefNannySetupContext("remove (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(__pyx_self, ((PyObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- int __pyx_t_1; -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__set__", 0); -- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L1_error) -- __pyx_v_self->error = __pyx_t_1; -+ __Pyx_RefNannySetupContext("remove", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":356 -+ * -+ * def remove(self): -+ * self.counter -= 1 # <<<<<<<<<<<<<< -+ * -+ * -+ */ -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 356, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":355 -+ * self.counter += 1 -+ * -+ * def remove(self): # <<<<<<<<<<<<<< -+ * self.counter -= 1 -+ * -+ */ - - /* function exit code */ -- __pyx_r = 0; -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.error.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = -1; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":260 -- * cdef public mpv_event_id id -- * cdef public int error -- * cdef public object data, reply_userdata # <<<<<<<<<<<<<< -+/* "vidcutter/libs/pympv/mpv.pyx":370 - * - * @property -+ * def api_version(self): # <<<<<<<<<<<<<< -+ * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION -+ * - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(PyObject *__pyx_v_self) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4data___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":371 -+ * @property -+ * def api_version(self): -+ * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION # <<<<<<<<<<<<<< -+ * -+ * @property -+ */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->data); -- __pyx_r = __pyx_v_self->data; -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_GIVEREF(__pyx_t_1); -+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_2); -+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); -+ __pyx_t_1 = 0; -+ __pyx_t_2 = 0; -+ __pyx_t_3 = 0; -+ __pyx_r = __pyx_t_4; -+ __pyx_t_4 = 0; - goto __pyx_L0; - -+ /* "vidcutter/libs/pympv/mpv.pyx":370 -+ * -+ * @property -+ * def api_version(self): # <<<<<<<<<<<<<< -+ * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION -+ * -+ */ -+ - /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.api_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - -+/* "vidcutter/libs/pympv/mpv.pyx":374 -+ * -+ * @property -+ * def name(self): # <<<<<<<<<<<<<< -+ * """Unique name for every context created. -+ * -+ */ -+ - /* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -+ char const *__pyx_v_name; -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__", 0); -- __Pyx_INCREF(__pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->data); -- __Pyx_DECREF(__pyx_v_self->data); -- __pyx_v_self->data = __pyx_v_value; -- -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(PyObject *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__get__", 0); - --static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_4data_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__", 0); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->data); -- __Pyx_DECREF(__pyx_v_self->data); -- __pyx_v_self->data = Py_None; -+ /* "vidcutter/libs/pympv/mpv.pyx":380 -+ * """ -+ * cdef const char* name -+ * assert self._ctx # <<<<<<<<<<<<<< -+ * with nogil: -+ * name = mpv_client_name(self._ctx) -+ */ -+ #ifndef CYTHON_WITHOUT_ASSERTIONS -+ if (unlikely(!Py_OptimizeFlag)) { -+ if (unlikely(!(__pyx_v_self->_ctx != 0))) { -+ PyErr_SetNone(PyExc_AssertionError); -+ __PYX_ERR(0, 380, __pyx_L1_error) -+ } -+ } -+ #endif - -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":381 -+ * cdef const char* name -+ * assert self._ctx -+ * with nogil: # <<<<<<<<<<<<<< -+ * name = mpv_client_name(self._ctx) -+ * return _strdec(name) -+ */ -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ /* "vidcutter/libs/pympv/mpv.pyx":382 -+ * assert self._ctx -+ * with nogil: -+ * name = mpv_client_name(self._ctx) # <<<<<<<<<<<<<< -+ * return _strdec(name) -+ * -+ */ -+ __pyx_v_name = mpv_client_name(__pyx_v_self->_ctx); -+ } - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":381 -+ * cdef const char* name -+ * assert self._ctx -+ * with nogil: # <<<<<<<<<<<<<< -+ * name = mpv_client_name(self._ctx) -+ * return _strdec(name) -+ */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__", 0); -+ /* "vidcutter/libs/pympv/mpv.pyx":383 -+ * with nogil: -+ * name = mpv_client_name(self._ctx) -+ * return _strdec(name) # <<<<<<<<<<<<<< -+ * -+ * @property -+ */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_self->reply_userdata); -- __pyx_r = __pyx_v_self->reply_userdata; -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 383, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 383, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 383, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; - goto __pyx_L0; - -+ /* "vidcutter/libs/pympv/mpv.pyx":374 -+ * -+ * @property -+ * def name(self): # <<<<<<<<<<<<<< -+ * """Unique name for every context created. -+ * -+ */ -+ - /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_2__set__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_2__set__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v_value) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__set__", 0); -- __Pyx_INCREF(__pyx_v_value); -- __Pyx_GIVEREF(__pyx_v_value); -- __Pyx_GOTREF(__pyx_v_self->reply_userdata); -- __Pyx_DECREF(__pyx_v_self->reply_userdata); -- __pyx_v_self->reply_userdata = __pyx_v_value; -- -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(PyObject *__pyx_v_self); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(PyObject *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_4__del__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_14reply_userdata_4__del__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__del__", 0); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->reply_userdata); -- __Pyx_DECREF(__pyx_v_self->reply_userdata); -- __pyx_v_self->reply_userdata = Py_None; -- -- /* function exit code */ -- __pyx_r = 0; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * cdef tuple state -- * cdef object _dict -+/* "vidcutter/libs/pympv/mpv.pyx":386 -+ * -+ * @property -+ * def time(self): # <<<<<<<<<<<<<< -+ * """Internal mpv client time. -+ * - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(PyObject *__pyx_v_self); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self) { -- PyObject *__pyx_v_state = 0; -- PyObject *__pyx_v__dict = 0; -- int __pyx_v_use_setstate; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -+ int64_t __pyx_v_time; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- int __pyx_t_4; -- int __pyx_t_5; -- int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ __Pyx_RefNannySetupContext("__get__", 0); - -- /* "(tree fragment)":5 -- * cdef object _dict -- * cdef bint use_setstate -- * state = (self.data, self.error, self.id, self.reply_userdata) # <<<<<<<<<<<<<< -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: -- */ -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_INCREF(__pyx_v_self->data); -- __Pyx_GIVEREF(__pyx_v_self->data); -- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->data); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_2); -- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); -- __Pyx_INCREF(__pyx_v_self->reply_userdata); -- __Pyx_GIVEREF(__pyx_v_self->reply_userdata); -- PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->reply_userdata); -- __pyx_t_1 = 0; -- __pyx_t_2 = 0; -- __pyx_v_state = ((PyObject*)__pyx_t_3); -- __pyx_t_3 = 0; -- -- /* "(tree fragment)":6 -- * cdef bint use_setstate -- * state = (self.data, self.error, self.id, self.reply_userdata) -- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< -- * if _dict is not None: -- * state += (_dict,) -- */ -- __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_v__dict = __pyx_t_3; -- __pyx_t_3 = 0; -- -- /* "(tree fragment)":7 -- * state = (self.data, self.error, self.id, self.reply_userdata) -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: # <<<<<<<<<<<<<< -- * state += (_dict,) -- * use_setstate = True -- */ -- __pyx_t_4 = (__pyx_v__dict != Py_None); -- __pyx_t_5 = (__pyx_t_4 != 0); -- if (__pyx_t_5) { -- -- /* "(tree fragment)":8 -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: -- * state += (_dict,) # <<<<<<<<<<<<<< -- * use_setstate = True -- * else: -- */ -- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_INCREF(__pyx_v__dict); -- __Pyx_GIVEREF(__pyx_v__dict); -- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict); -- __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2)); -- __pyx_t_2 = 0; -- -- /* "(tree fragment)":9 -- * if _dict is not None: -- * state += (_dict,) -- * use_setstate = True # <<<<<<<<<<<<<< -- * else: -- * use_setstate = self.data is not None or self.reply_userdata is not None -- */ -- __pyx_v_use_setstate = 1; -- -- /* "(tree fragment)":7 -- * state = (self.data, self.error, self.id, self.reply_userdata) -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: # <<<<<<<<<<<<<< -- * state += (_dict,) -- * use_setstate = True -- */ -- goto __pyx_L3; -- } -- -- /* "(tree fragment)":11 -- * use_setstate = True -- * else: -- * use_setstate = self.data is not None or self.reply_userdata is not None # <<<<<<<<<<<<<< -- * if use_setstate: -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state -+ /* "vidcutter/libs/pympv/mpv.pyx":394 -+ * """ -+ * cdef int64_t time -+ * assert self._ctx # <<<<<<<<<<<<<< -+ * with nogil: -+ * time = mpv_get_time_us(self._ctx) - */ -- /*else*/ { -- __pyx_t_4 = (__pyx_v_self->data != Py_None); -- __pyx_t_6 = (__pyx_t_4 != 0); -- if (!__pyx_t_6) { -- } else { -- __pyx_t_5 = __pyx_t_6; -- goto __pyx_L4_bool_binop_done; -+ #ifndef CYTHON_WITHOUT_ASSERTIONS -+ if (unlikely(!Py_OptimizeFlag)) { -+ if (unlikely(!(__pyx_v_self->_ctx != 0))) { -+ PyErr_SetNone(PyExc_AssertionError); -+ __PYX_ERR(0, 394, __pyx_L1_error) - } -- __pyx_t_6 = (__pyx_v_self->reply_userdata != Py_None); -- __pyx_t_4 = (__pyx_t_6 != 0); -- __pyx_t_5 = __pyx_t_4; -- __pyx_L4_bool_binop_done:; -- __pyx_v_use_setstate = __pyx_t_5; - } -- __pyx_L3:; -+ #endif - -- /* "(tree fragment)":12 -- * else: -- * use_setstate = self.data is not None or self.reply_userdata is not None -- * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":395 -+ * cdef int64_t time -+ * assert self._ctx -+ * with nogil: # <<<<<<<<<<<<<< -+ * time = mpv_get_time_us(self._ctx) -+ * return time - */ -- __pyx_t_5 = (__pyx_v_use_setstate != 0); -- if (__pyx_t_5) { -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "(tree fragment)":13 -- * use_setstate = self.data is not None or self.reply_userdata is not None -- * if use_setstate: -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state # <<<<<<<<<<<<<< -- * else: -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) -+ /* "vidcutter/libs/pympv/mpv.pyx":396 -+ * assert self._ctx -+ * with nogil: -+ * time = mpv_get_time_us(self._ctx) # <<<<<<<<<<<<<< -+ * return time -+ * - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_Event); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_228822053); -- __Pyx_GIVEREF(__pyx_int_228822053); -- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228822053); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None); -- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_2); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); -- __Pyx_GIVEREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); -- __Pyx_INCREF(__pyx_v_state); -- __Pyx_GIVEREF(__pyx_v_state); -- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); -- __pyx_t_2 = 0; -- __pyx_t_3 = 0; -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __pyx_v_time = mpv_get_time_us(__pyx_v_self->_ctx); -+ } - -- /* "(tree fragment)":12 -- * else: -- * use_setstate = self.data is not None or self.reply_userdata is not None -- * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":395 -+ * cdef int64_t time -+ * assert self._ctx -+ * with nogil: # <<<<<<<<<<<<<< -+ * time = mpv_get_time_us(self._ctx) -+ * return time - */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } - } - -- /* "(tree fragment)":15 -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, None), state -- * else: -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_Event__set_state(self, __pyx_state) -+ /* "vidcutter/libs/pympv/mpv.pyx":397 -+ * with nogil: -+ * time = mpv_get_time_us(self._ctx) -+ * return time # <<<<<<<<<<<<<< -+ * -+ * # def suspend(self): - */ -- /*else*/ { -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Event); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_228822053); -- __Pyx_GIVEREF(__pyx_int_228822053); -- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_228822053); -- __Pyx_INCREF(__pyx_v_state); -- __Pyx_GIVEREF(__pyx_v_state); -- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state); -- __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); -- __pyx_t_1 = 0; -- __pyx_t_3 = 0; -- __pyx_r = __pyx_t_2; -- __pyx_t_2 = 0; -- goto __pyx_L0; -- } -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_v_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - -- /* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * cdef tuple state -- * cdef object _dict -+ /* "vidcutter/libs/pympv/mpv.pyx":386 -+ * -+ * @property -+ * def time(self): # <<<<<<<<<<<<<< -+ * """Internal mpv client time. -+ * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_state); -- __Pyx_XDECREF(__pyx_v__dict); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "(tree fragment)":16 -- * else: -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_Event__set_state(self, __pyx_state) -+/* "vidcutter/libs/pympv/mpv.pyx":412 -+ * -+ * @_errors -+ * def request_event(self, event, enable): # <<<<<<<<<<<<<< -+ * """Enable or disable a given event. -+ * - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_request_event[] = "Enable or disable a given event.\n\n Arguments:\n event - See Events\n enable - True to enable, False to disable\n\n Wraps: mpv_request_event\n "; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_event = 0; -+ PyObject *__pyx_v_enable = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ __Pyx_RefNannySetupContext("request_event (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_event,&__pyx_n_s_enable,0}; -+ PyObject* values[2] = {0,0}; -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, 1); __PYX_ERR(0, 412, __pyx_L3_error) -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "request_event") < 0)) __PYX_ERR(0, 412, __pyx_L3_error) -+ } -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -+ goto __pyx_L5_argtuple_error; -+ } else { -+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ } -+ __pyx_v_event = values[0]; -+ __pyx_v_enable = values[1]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 412, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_event, __pyx_v_enable); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_enable) { -+ int __pyx_v_enable_i; -+ int __pyx_v_err; -+ enum mpv_event_id __pyx_v_event_id; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_1; -+ int __pyx_t_2; -+ enum mpv_event_id __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__setstate_cython__", 0); -+ __Pyx_RefNannySetupContext("request_event", 0); - -- /* "(tree fragment)":17 -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) -- * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_Event__set_state(self, __pyx_state) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":421 -+ * Wraps: mpv_request_event -+ * """ -+ * assert self._ctx # <<<<<<<<<<<<<< -+ * cdef int enable_i = 1 if enable else 0 -+ * cdef int err - */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ #ifndef CYTHON_WITHOUT_ASSERTIONS -+ if (unlikely(!Py_OptimizeFlag)) { -+ if (unlikely(!(__pyx_v_self->_ctx != 0))) { -+ PyErr_SetNone(PyExc_AssertionError); -+ __PYX_ERR(0, 421, __pyx_L1_error) -+ } -+ } -+ #endif - -- /* "(tree fragment)":16 -- * else: -- * return __pyx_unpickle_Event, (type(self), 0xda38c25, state) -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_Event__set_state(self, __pyx_state) -+ /* "vidcutter/libs/pympv/mpv.pyx":422 -+ * """ -+ * assert self._ctx -+ * cdef int enable_i = 1 if enable else 0 # <<<<<<<<<<<<<< -+ * cdef int err -+ * cdef mpv_event_id event_id = event - */ -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_enable); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 422, __pyx_L1_error) -+ if (__pyx_t_2) { -+ __pyx_t_1 = 1; -+ } else { -+ __pyx_t_1 = 0; -+ } -+ __pyx_v_enable_i = __pyx_t_1; - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Event.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":424 -+ * cdef int enable_i = 1 if enable else 0 -+ * cdef int err -+ * cdef mpv_event_id event_id = event # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_request_event(self._ctx, event_id, enable_i) -+ */ -+ __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_event)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 424, __pyx_L1_error) -+ __pyx_v_event_id = __pyx_t_3; - --/* "vidcutter/libs/pympv/mpv.pyx":318 -+ /* "vidcutter/libs/pympv/mpv.pyx":425 -+ * cdef int err -+ * cdef mpv_event_id event_id = event -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_request_event(self._ctx, event_id, enable_i) -+ * return err -+ */ -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":426 -+ * cdef mpv_event_id event_id = event -+ * with nogil: -+ * err = mpv_request_event(self._ctx, event_id, enable_i) # <<<<<<<<<<<<<< -+ * return err - * -+ */ -+ __pyx_v_err = mpv_request_event(__pyx_v_self->_ctx, __pyx_v_event_id, __pyx_v_enable_i); -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":425 -+ * cdef int err -+ * cdef mpv_event_id event_id = event -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_request_event(self._ctx, event_id, enable_i) -+ * return err -+ */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":427 -+ * with nogil: -+ * err = mpv_request_event(self._ctx, event_id, enable_i) -+ * return err # <<<<<<<<<<<<<< - * -- * def _errors(fn): # <<<<<<<<<<<<<< -- * def wrapped(*k, **kw): -- * v = fn(*k, **kw) -+ * @_errors - */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_r = __pyx_t_4; -+ __pyx_t_4 = 0; -+ goto __pyx_L0; - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, PyObject *__pyx_v_fn); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_5_errors = {"_errors", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5_errors, METH_O, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, PyObject *__pyx_v_fn) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("_errors (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_4_errors(__pyx_self, ((PyObject *)__pyx_v_fn)); -+ /* "vidcutter/libs/pympv/mpv.pyx":412 -+ * -+ * @_errors -+ * def request_event(self, event, enable): # <<<<<<<<<<<<<< -+ * """Enable or disable a given event. -+ * -+ */ - - /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":319 -+/* "vidcutter/libs/pympv/mpv.pyx":430 - * -- * def _errors(fn): -- * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -- * v = fn(*k, **kw) -- * if v < 0: -+ * @_errors -+ * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_request_log_messages""" -+ * assert self._ctx - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped = {"wrapped", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7_errors_1wrapped(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_k = 0; -- PyObject *__pyx_v_kw = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_3set_log_level(PyObject *__pyx_v_self, PyObject *__pyx_v_loglevel); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_2set_log_level[] = "Wraps: mpv_request_log_messages"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_3set_log_level(PyObject *__pyx_v_self, PyObject *__pyx_v_loglevel) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("wrapped (wrapper)", 0); -- if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "wrapped", 1))) return NULL; -- if (unlikely(__pyx_kwds)) { -- __pyx_v_kw = PyDict_Copy(__pyx_kwds); if (unlikely(!__pyx_v_kw)) return NULL; -- __Pyx_GOTREF(__pyx_v_kw); -- } else { -- __pyx_v_kw = NULL; -- } -- __Pyx_INCREF(__pyx_args); -- __pyx_v_k = __pyx_args; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(__pyx_self, __pyx_v_k, __pyx_v_kw); -+ __Pyx_RefNannySetupContext("set_log_level (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_loglevel)); - - /* function exit code */ -- __Pyx_XDECREF(__pyx_v_k); -- __Pyx_XDECREF(__pyx_v_kw); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_kw) { -- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_cur_scope; -- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_outer_scope; -- PyObject *__pyx_v_v = NULL; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_loglevel) { -+ char const *__pyx_v_loglevel_c; -+ int __pyx_v_err; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -+ PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -+ char const *__pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("wrapped", 0); -- __pyx_outer_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *) __Pyx_CyFunction_GetClosure(__pyx_self); -- __pyx_cur_scope = __pyx_outer_scope; -+ __Pyx_RefNannySetupContext("set_log_level", 0); -+ __Pyx_INCREF(__pyx_v_loglevel); - -- /* "vidcutter/libs/pympv/mpv.pyx":320 -- * def _errors(fn): -- * def wrapped(*k, **kw): -- * v = fn(*k, **kw) # <<<<<<<<<<<<<< -- * if v < 0: -- * raise MPVError(v) -+ /* "vidcutter/libs/pympv/mpv.pyx":432 -+ * def set_log_level(self, loglevel): -+ * """Wraps: mpv_request_log_messages""" -+ * assert self._ctx # <<<<<<<<<<<<<< -+ * loglevel = _strenc(loglevel) -+ * cdef const char* loglevel_c = loglevel - */ -- if (unlikely(!__pyx_cur_scope->__pyx_v_fn)) { __Pyx_RaiseClosureNameError("fn"); __PYX_ERR(0, 320, __pyx_L1_error) } -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_fn, __pyx_v_k, __pyx_v_kw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) -+ #ifndef CYTHON_WITHOUT_ASSERTIONS -+ if (unlikely(!Py_OptimizeFlag)) { -+ if (unlikely(!(__pyx_v_self->_ctx != 0))) { -+ PyErr_SetNone(PyExc_AssertionError); -+ __PYX_ERR(0, 432, __pyx_L1_error) -+ } -+ } -+ #endif -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":433 -+ * """Wraps: mpv_request_log_messages""" -+ * assert self._ctx -+ * loglevel = _strenc(loglevel) # <<<<<<<<<<<<<< -+ * cdef const char* loglevel_c = loglevel -+ * cdef int err -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 433, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_loglevel) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_loglevel); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_v = __pyx_t_1; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF_SET(__pyx_v_loglevel, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":321 -- * def wrapped(*k, **kw): -- * v = fn(*k, **kw) -- * if v < 0: # <<<<<<<<<<<<<< -- * raise MPVError(v) -- * return wrapped -+ /* "vidcutter/libs/pympv/mpv.pyx":434 -+ * assert self._ctx -+ * loglevel = _strenc(loglevel) -+ * cdef const char* loglevel_c = loglevel # <<<<<<<<<<<<<< -+ * cdef int err -+ * with nogil: - */ -- __pyx_t_1 = PyObject_RichCompare(__pyx_v_v, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error) -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 321, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- if (unlikely(__pyx_t_2)) { -+ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_loglevel); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 434, __pyx_L1_error) -+ __pyx_v_loglevel_c = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":322 -- * v = fn(*k, **kw) -- * if v < 0: -- * raise MPVError(v) # <<<<<<<<<<<<<< -- * return wrapped -+ /* "vidcutter/libs/pympv/mpv.pyx":436 -+ * cdef const char* loglevel_c = loglevel -+ * cdef int err -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_request_log_messages(self._ctx, loglevel_c) -+ * return err -+ */ -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":437 -+ * cdef int err -+ * with nogil: -+ * err = mpv_request_log_messages(self._ctx, loglevel_c) # <<<<<<<<<<<<<< -+ * return err - * - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -+ __pyx_v_err = mpv_request_log_messages(__pyx_v_self->_ctx, __pyx_v_loglevel_c); - } -- } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_v) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_v); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 322, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":321 -- * def wrapped(*k, **kw): -- * v = fn(*k, **kw) -- * if v < 0: # <<<<<<<<<<<<<< -- * raise MPVError(v) -- * return wrapped -+ /* "vidcutter/libs/pympv/mpv.pyx":436 -+ * cdef const char* loglevel_c = loglevel -+ * cdef int err -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_request_log_messages(self._ctx, loglevel_c) -+ * return err - */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":319 -+ /* "vidcutter/libs/pympv/mpv.pyx":438 -+ * with nogil: -+ * err = mpv_request_log_messages(self._ctx, loglevel_c) -+ * return err # <<<<<<<<<<<<<< - * -- * def _errors(fn): -- * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -- * v = fn(*k, **kw) -- * if v < 0: -+ * @_errors -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":430 -+ * -+ * @_errors -+ * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_request_log_messages""" -+ * assert self._ctx - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv._errors.wrapped", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_v); -+ __Pyx_XDECREF(__pyx_v_loglevel); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":318 -- * -+/* "vidcutter/libs/pympv/mpv.pyx":441 - * -- * def _errors(fn): # <<<<<<<<<<<<<< -- * def wrapped(*k, **kw): -- * v = fn(*k, **kw) -+ * @_errors -+ * def load_config(self, filename): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_load_config_file""" -+ * assert self._ctx - */ - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fn) { -- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_cur_scope; -- PyObject *__pyx_v_wrapped = 0; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_5load_config(PyObject *__pyx_v_self, PyObject *__pyx_v_filename); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_4load_config[] = "Wraps: mpv_load_config_file"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_5load_config(PyObject *__pyx_v_self, PyObject *__pyx_v_filename) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("load_config (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_filename)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_filename) { -+ char const *__pyx_v__filename; -+ int __pyx_v_err; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ char const *__pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_errors", 0); -- __pyx_cur_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(__pyx_ptype_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, __pyx_empty_tuple, NULL); -- if (unlikely(!__pyx_cur_scope)) { -- __pyx_cur_scope = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)Py_None); -- __Pyx_INCREF(Py_None); -- __PYX_ERR(0, 318, __pyx_L1_error) -- } else { -- __Pyx_GOTREF(__pyx_cur_scope); -+ __Pyx_RefNannySetupContext("load_config", 0); -+ __Pyx_INCREF(__pyx_v_filename); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":443 -+ * def load_config(self, filename): -+ * """Wraps: mpv_load_config_file""" -+ * assert self._ctx # <<<<<<<<<<<<<< -+ * filename = _strenc(filename) -+ * cdef const char* _filename = filename -+ */ -+ #ifndef CYTHON_WITHOUT_ASSERTIONS -+ if (unlikely(!Py_OptimizeFlag)) { -+ if (unlikely(!(__pyx_v_self->_ctx != 0))) { -+ PyErr_SetNone(PyExc_AssertionError); -+ __PYX_ERR(0, 443, __pyx_L1_error) -+ } - } -- __pyx_cur_scope->__pyx_v_fn = __pyx_v_fn; -- __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fn); -- __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fn); -+ #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":319 -- * -- * def _errors(fn): -- * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -- * v = fn(*k, **kw) -- * if v < 0: -+ /* "vidcutter/libs/pympv/mpv.pyx":444 -+ * """Wraps: mpv_load_config_file""" -+ * assert self._ctx -+ * filename = _strenc(filename) # <<<<<<<<<<<<<< -+ * cdef const char* _filename = filename -+ * cdef int err - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped, 0, __pyx_n_s_errors_locals_wrapped, ((PyObject*)__pyx_cur_scope), __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 444, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_wrapped = __pyx_t_1; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":323 -- * if v < 0: -- * raise MPVError(v) -- * return wrapped # <<<<<<<<<<<<<< -- * -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":445 -+ * assert self._ctx -+ * filename = _strenc(filename) -+ * cdef const char* _filename = filename # <<<<<<<<<<<<<< -+ * cdef int err -+ * with nogil: -+ */ -+ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 445, __pyx_L1_error) -+ __pyx_v__filename = __pyx_t_4; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":447 -+ * cdef const char* _filename = filename -+ * cdef int err -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_load_config_file(self._ctx, _filename) -+ * return err -+ */ -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":448 -+ * cdef int err -+ * with nogil: -+ * err = mpv_load_config_file(self._ctx, _filename) # <<<<<<<<<<<<<< -+ * return err -+ * -+ */ -+ __pyx_v_err = mpv_load_config_file(__pyx_v_self->_ctx, __pyx_v__filename); -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":447 -+ * cdef const char* _filename = filename -+ * cdef int err -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_load_config_file(self._ctx, _filename) -+ * return err -+ */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":449 -+ * with nogil: -+ * err = mpv_load_config_file(self._ctx, _filename) -+ * return err # <<<<<<<<<<<<<< -+ * -+ * def _format_for(self, value): - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_wrapped); -- __pyx_r = __pyx_v_wrapped; -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":318 -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":441 - * -- * def _errors(fn): # <<<<<<<<<<<<<< -- * def wrapped(*k, **kw): -- * v = fn(*k, **kw) -+ * @_errors -+ * def load_config(self, filename): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_load_config_file""" -+ * assert self._ctx - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv._errors", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.load_config", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_wrapped); -- __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); -+ __Pyx_XDECREF(__pyx_v_filename); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":329 -- * code = None -+/* "vidcutter/libs/pympv/mpv.pyx":451 -+ * return err - * -- * def __init__(self, e): # <<<<<<<<<<<<<< -- * self.code = e -- * cdef const char* err_c -+ * def _format_for(self, value): # <<<<<<<<<<<<<< -+ * if isinstance(value, basestring): -+ * return MPV_FORMAT_STRING - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_self = 0; -- PyObject *__pyx_v_e = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_7_format_for(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_7_format_for(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_e,0}; -- PyObject* values[2] = {0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_e)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 329, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 329, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- } -- __pyx_v_self = values[0]; -- __pyx_v_e = values[1]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 329, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(__pyx_self, __pyx_v_self, __pyx_v_e); -+ __Pyx_RefNannySetupContext("_format_for (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_e) { -- char const *__pyx_v_err_c; -- int __pyx_v_e_i; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__init__", 0); -- __Pyx_INCREF(__pyx_v_e); -+ __Pyx_RefNannySetupContext("_format_for", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":330 -+ /* "vidcutter/libs/pympv/mpv.pyx":452 - * -- * def __init__(self, e): -- * self.code = e # <<<<<<<<<<<<<< -- * cdef const char* err_c -- * cdef int e_i -- */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_e) < 0) __PYX_ERR(0, 330, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":333 -- * cdef const char* err_c -- * cdef int e_i -- * if not isinstance(e, basestring): # <<<<<<<<<<<<<< -- * e_i = e -- * with nogil: -+ * def _format_for(self, value): -+ * if isinstance(value, basestring): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_STRING -+ * elif isinstance(value, bool): - */ -- __pyx_t_1 = __Pyx_PyBaseString_Check(__pyx_v_e); -- __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); -+ __pyx_t_1 = __Pyx_PyBaseString_Check(__pyx_v_value); -+ __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":334 -- * cdef int e_i -- * if not isinstance(e, basestring): -- * e_i = e # <<<<<<<<<<<<<< -- * with nogil: -- * err_c = mpv_error_string(e_i) -+ /* "vidcutter/libs/pympv/mpv.pyx":453 -+ * def _format_for(self, value): -+ * if isinstance(value, basestring): -+ * return MPV_FORMAT_STRING # <<<<<<<<<<<<<< -+ * elif isinstance(value, bool): -+ * return MPV_FORMAT_FLAG - */ -- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_e); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L1_error) -- __pyx_v_e_i = __pyx_t_3; -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":335 -- * if not isinstance(e, basestring): -- * e_i = e -- * with nogil: # <<<<<<<<<<<<<< -- * err_c = mpv_error_string(e_i) -- * e = _strdec(err_c) -+ /* "vidcutter/libs/pympv/mpv.pyx":452 -+ * -+ * def _format_for(self, value): -+ * if isinstance(value, basestring): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_STRING -+ * elif isinstance(value, bool): - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":336 -- * e_i = e -- * with nogil: -- * err_c = mpv_error_string(e_i) # <<<<<<<<<<<<<< -- * e = _strdec(err_c) -- * Exception.__init__(self, e) -+ /* "vidcutter/libs/pympv/mpv.pyx":454 -+ * if isinstance(value, basestring): -+ * return MPV_FORMAT_STRING -+ * elif isinstance(value, bool): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_FLAG -+ * elif isinstance(value, int): - */ -- __pyx_v_err_c = mpv_error_string(__pyx_v_e_i); -- } -+ __pyx_t_3 = ((PyObject*)&PyBool_Type); -+ __Pyx_INCREF(__pyx_t_3); -+ __pyx_t_2 = PyObject_IsInstance(__pyx_v_value, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 454, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_1 = (__pyx_t_2 != 0); -+ if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":335 -- * if not isinstance(e, basestring): -- * e_i = e -- * with nogil: # <<<<<<<<<<<<<< -- * err_c = mpv_error_string(e_i) -- * e = _strdec(err_c) -+ /* "vidcutter/libs/pympv/mpv.pyx":455 -+ * return MPV_FORMAT_STRING -+ * elif isinstance(value, bool): -+ * return MPV_FORMAT_FLAG # <<<<<<<<<<<<<< -+ * elif isinstance(value, int): -+ * return MPV_FORMAT_INT64 - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L6; -- } -- __pyx_L6:; -- } -- } -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":337 -- * with nogil: -- * err_c = mpv_error_string(e_i) -- * e = _strdec(err_c) # <<<<<<<<<<<<<< -- * Exception.__init__(self, e) -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":454 -+ * if isinstance(value, basestring): -+ * return MPV_FORMAT_STRING -+ * elif isinstance(value, bool): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_FLAG -+ * elif isinstance(value, int): - */ -- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_strdec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { -- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); -- if (likely(__pyx_t_7)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -- __Pyx_INCREF(__pyx_t_7); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_5, function); -- } -- } -- __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF_SET(__pyx_v_e, __pyx_t_4); -- __pyx_t_4 = 0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":333 -- * cdef const char* err_c -- * cdef int e_i -- * if not isinstance(e, basestring): # <<<<<<<<<<<<<< -- * e_i = e -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":456 -+ * elif isinstance(value, bool): -+ * return MPV_FORMAT_FLAG -+ * elif isinstance(value, int): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_INT64 -+ * elif isinstance(value, float): -+ */ -+ __pyx_t_1 = PyInt_Check(__pyx_v_value); -+ __pyx_t_2 = (__pyx_t_1 != 0); -+ if (__pyx_t_2) { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":457 -+ * return MPV_FORMAT_FLAG -+ * elif isinstance(value, int): -+ * return MPV_FORMAT_INT64 # <<<<<<<<<<<<<< -+ * elif isinstance(value, float): -+ * return MPV_FORMAT_DOUBLE -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":456 -+ * elif isinstance(value, bool): -+ * return MPV_FORMAT_FLAG -+ * elif isinstance(value, int): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_INT64 -+ * elif isinstance(value, float): - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":338 -- * err_c = mpv_error_string(e_i) -- * e = _strdec(err_c) -- * Exception.__init__(self, e) # <<<<<<<<<<<<<< -- * -- * class PyMPVError(Exception): -+ /* "vidcutter/libs/pympv/mpv.pyx":458 -+ * elif isinstance(value, int): -+ * return MPV_FORMAT_INT64 -+ * elif isinstance(value, float): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_DOUBLE -+ * elif isinstance(value, (tuple, list)): -+ */ -+ __pyx_t_2 = PyFloat_Check(__pyx_v_value); -+ __pyx_t_1 = (__pyx_t_2 != 0); -+ if (__pyx_t_1) { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":459 -+ * return MPV_FORMAT_INT64 -+ * elif isinstance(value, float): -+ * return MPV_FORMAT_DOUBLE # <<<<<<<<<<<<<< -+ * elif isinstance(value, (tuple, list)): -+ * return MPV_FORMAT_NODE_ARRAY -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":458 -+ * elif isinstance(value, int): -+ * return MPV_FORMAT_INT64 -+ * elif isinstance(value, float): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_DOUBLE -+ * elif isinstance(value, (tuple, list)): - */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_6 = NULL; -- __pyx_t_3 = 0; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); -- if (likely(__pyx_t_6)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -- __Pyx_INCREF(__pyx_t_6); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_5, function); -- __pyx_t_3 = 1; -- } - } -- #if CYTHON_FAST_PYCALL -- if (PyFunction_Check(__pyx_t_5)) { -- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; -- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_GOTREF(__pyx_t_4); -- } else -- #endif -- #if CYTHON_FAST_PYCCALL -- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { -- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; -- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_GOTREF(__pyx_t_4); -- } else -- #endif -- { -- __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 338, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- if (__pyx_t_6) { -- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; -- } -- __Pyx_INCREF(__pyx_v_self); -- __Pyx_GIVEREF(__pyx_v_self); -- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_3, __pyx_v_self); -- __Pyx_INCREF(__pyx_v_e); -- __Pyx_GIVEREF(__pyx_v_e); -- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_v_e); -- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":460 -+ * elif isinstance(value, float): -+ * return MPV_FORMAT_DOUBLE -+ * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_NODE_ARRAY -+ * elif isinstance(value, dict): -+ */ -+ __pyx_t_2 = PyTuple_Check(__pyx_v_value); -+ __pyx_t_4 = (__pyx_t_2 != 0); -+ if (!__pyx_t_4) { -+ } else { -+ __pyx_t_1 = __pyx_t_4; -+ goto __pyx_L4_bool_binop_done; - } -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_4 = PyList_Check(__pyx_v_value); -+ __pyx_t_2 = (__pyx_t_4 != 0); -+ __pyx_t_1 = __pyx_t_2; -+ __pyx_L4_bool_binop_done:; -+ __pyx_t_2 = (__pyx_t_1 != 0); -+ if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":329 -- * code = None -- * -- * def __init__(self, e): # <<<<<<<<<<<<<< -- * self.code = e -- * cdef const char* err_c -+ /* "vidcutter/libs/pympv/mpv.pyx":461 -+ * return MPV_FORMAT_DOUBLE -+ * elif isinstance(value, (tuple, list)): -+ * return MPV_FORMAT_NODE_ARRAY # <<<<<<<<<<<<<< -+ * elif isinstance(value, dict): -+ * return MPV_FORMAT_NODE_MAP - */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_e); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":460 -+ * elif isinstance(value, float): -+ * return MPV_FORMAT_DOUBLE -+ * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_NODE_ARRAY -+ * elif isinstance(value, dict): -+ */ -+ } - --/* "vidcutter/libs/pympv/mpv.pyx":347 -- * -- * class _ReplyUserData(object): -- * def __init__(self, data): # <<<<<<<<<<<<<< -- * self.counter = 0 -- * self.data = data -+ /* "vidcutter/libs/pympv/mpv.pyx":462 -+ * elif isinstance(value, (tuple, list)): -+ * return MPV_FORMAT_NODE_ARRAY -+ * elif isinstance(value, dict): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_NODE_MAP -+ * return MPV_FORMAT_NONE - */ -+ __pyx_t_2 = PyDict_Check(__pyx_v_value); -+ __pyx_t_1 = (__pyx_t_2 != 0); -+ if (__pyx_t_1) { - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_self = 0; -- PyObject *__pyx_v_data = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_data,0}; -- PyObject* values[2] = {0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 347, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 347, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- } -- __pyx_v_self = values[0]; -- __pyx_v_data = values[1]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 347, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(__pyx_self, __pyx_v_self, __pyx_v_data); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_data) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__init__", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":348 -- * class _ReplyUserData(object): -- * def __init__(self, data): -- * self.counter = 0 # <<<<<<<<<<<<<< -- * self.data = data -- * self.observed = False -+ /* "vidcutter/libs/pympv/mpv.pyx":463 -+ * return MPV_FORMAT_NODE_ARRAY -+ * elif isinstance(value, dict): -+ * return MPV_FORMAT_NODE_MAP # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_NONE -+ * - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_int_0) < 0) __PYX_ERR(0, 348, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":349 -- * def __init__(self, data): -- * self.counter = 0 -- * self.data = data # <<<<<<<<<<<<<< -- * self.observed = False -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":462 -+ * elif isinstance(value, (tuple, list)): -+ * return MPV_FORMAT_NODE_ARRAY -+ * elif isinstance(value, dict): # <<<<<<<<<<<<<< -+ * return MPV_FORMAT_NODE_MAP -+ * return MPV_FORMAT_NONE - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 349, __pyx_L1_error) -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":350 -- * self.counter = 0 -- * self.data = data -- * self.observed = False # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":464 -+ * elif isinstance(value, dict): -+ * return MPV_FORMAT_NODE_MAP -+ * return MPV_FORMAT_NONE # <<<<<<<<<<<<<< - * -- * def add(self): -+ * cdef mpv_node_list* _prep_node_list(self, values): - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 350, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 464, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":347 -+ /* "vidcutter/libs/pympv/mpv.pyx":451 -+ * return err - * -- * class _ReplyUserData(object): -- * def __init__(self, data): # <<<<<<<<<<<<<< -- * self.counter = 0 -- * self.data = data -+ * def _format_for(self, value): # <<<<<<<<<<<<<< -+ * if isinstance(value, basestring): -+ * return MPV_FORMAT_STRING - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context._format_for", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); -@@ -8510,1160 +9185,1186 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":352 -- * self.observed = False -- * -- * def add(self): # <<<<<<<<<<<<<< -- * self.counter += 1 -+/* "vidcutter/libs/pympv/mpv.pyx":466 -+ * return MPV_FORMAT_NONE - * -+ * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< -+ * cdef mpv_node node -+ * cdef mpv_format format - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add = {"add", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, METH_O, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_3add(PyObject *__pyx_self, PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("add (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(__pyx_self, ((PyObject *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -+static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_values) { -+ struct mpv_node __pyx_v_node; -+ enum mpv_format __pyx_v_format; -+ struct mpv_node_list *__pyx_v_node_list; -+ PyObject *__pyx_v_i = NULL; -+ PyObject *__pyx_v_value = NULL; -+ struct mpv_node_list *__pyx_r; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -+ Py_ssize_t __pyx_t_1; -+ int __pyx_t_2; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *(*__pyx_t_5)(PyObject *); -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_8 = NULL; -+ enum mpv_format __pyx_t_9; -+ Py_ssize_t __pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("add", 0); -+ __Pyx_RefNannySetupContext("_prep_node_list", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":353 -- * -- * def add(self): -- * self.counter += 1 # <<<<<<<<<<<<<< -- * -- * def remove(self): -+ /* "vidcutter/libs/pympv/mpv.pyx":469 -+ * cdef mpv_node node -+ * cdef mpv_format format -+ * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) # <<<<<<<<<<<<<< -+ * node_list.num = len(values) -+ * node_list.values = NULL - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 353, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_node_list = ((struct mpv_node_list *)malloc((sizeof(struct mpv_node_list)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":352 -- * self.observed = False -- * -- * def add(self): # <<<<<<<<<<<<<< -- * self.counter += 1 -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":470 -+ * cdef mpv_format format -+ * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) -+ * node_list.num = len(values) # <<<<<<<<<<<<<< -+ * node_list.values = NULL -+ * node_list.keys = NULL - */ -+ __pyx_t_1 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 470, __pyx_L1_error) -+ __pyx_v_node_list->num = __pyx_t_1; - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.add", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":355 -- * self.counter += 1 -- * -- * def remove(self): # <<<<<<<<<<<<<< -- * self.counter -= 1 -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":471 -+ * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) -+ * node_list.num = len(values) -+ * node_list.values = NULL # <<<<<<<<<<<<<< -+ * node_list.keys = NULL -+ * if node_list.num: - */ -+ __pyx_v_node_list->values = NULL; - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove = {"remove", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, METH_O, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove(PyObject *__pyx_self, PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("remove (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(__pyx_self, ((PyObject *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":472 -+ * node_list.num = len(values) -+ * node_list.values = NULL -+ * node_list.keys = NULL # <<<<<<<<<<<<<< -+ * if node_list.num: -+ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -+ */ -+ __pyx_v_node_list->keys = NULL; - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("remove", 0); -+ /* "vidcutter/libs/pympv/mpv.pyx":473 -+ * node_list.values = NULL -+ * node_list.keys = NULL -+ * if node_list.num: # <<<<<<<<<<<<<< -+ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -+ * for i, value in enumerate(values): -+ */ -+ __pyx_t_2 = (__pyx_v_node_list->num != 0); -+ if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":356 -- * -- * def remove(self): -- * self.counter -= 1 # <<<<<<<<<<<<<< -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":474 -+ * node_list.keys = NULL -+ * if node_list.num: -+ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) # <<<<<<<<<<<<<< -+ * for i, value in enumerate(values): -+ * format = self._format_for(value) -+ */ -+ __pyx_v_node_list->values = ((struct mpv_node *)malloc((__pyx_v_node_list->num * (sizeof(struct mpv_node))))); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":473 -+ * node_list.values = NULL -+ * node_list.keys = NULL -+ * if node_list.num: # <<<<<<<<<<<<<< -+ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -+ * for i, value in enumerate(values): -+ */ -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":475 -+ * if node_list.num: -+ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -+ * for i, value in enumerate(values): # <<<<<<<<<<<<<< -+ * format = self._format_for(value) -+ * node = self._prep_native_value(value, format) -+ */ -+ __Pyx_INCREF(__pyx_int_0); -+ __pyx_t_3 = __pyx_int_0; -+ if (likely(PyList_CheckExact(__pyx_v_values)) || PyTuple_CheckExact(__pyx_v_values)) { -+ __pyx_t_4 = __pyx_v_values; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0; -+ __pyx_t_5 = NULL; -+ } else { -+ __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 475, __pyx_L1_error) -+ } -+ for (;;) { -+ if (likely(!__pyx_t_5)) { -+ if (likely(PyList_CheckExact(__pyx_t_4))) { -+ if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) -+ #else -+ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ #endif -+ } else { -+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) -+ #else -+ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ #endif -+ } -+ } else { -+ __pyx_t_6 = __pyx_t_5(__pyx_t_4); -+ if (unlikely(!__pyx_t_6)) { -+ PyObject* exc_type = PyErr_Occurred(); -+ if (exc_type) { -+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -+ else __PYX_ERR(0, 475, __pyx_L1_error) -+ } -+ break; -+ } -+ __Pyx_GOTREF(__pyx_t_6); -+ } -+ __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); -+ __pyx_t_6 = 0; -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); -+ __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_DECREF(__pyx_t_3); -+ __pyx_t_3 = __pyx_t_6; -+ __pyx_t_6 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":476 -+ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -+ * for i, value in enumerate(values): -+ * format = self._format_for(value) # <<<<<<<<<<<<<< -+ * node = self._prep_native_value(value, format) -+ * node_list.values[i] = node -+ */ -+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 476, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_8 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -+ if (likely(__pyx_t_8)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -+ __Pyx_INCREF(__pyx_t_8); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_7, function); -+ } -+ } -+ __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __pyx_t_9 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_v_format = __pyx_t_9; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":477 -+ * for i, value in enumerate(values): -+ * format = self._format_for(value) -+ * node = self._prep_native_value(value, format) # <<<<<<<<<<<<<< -+ * node_list.values[i] = node -+ * return node_list -+ */ -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_6); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":478 -+ * format = self._format_for(value) -+ * node = self._prep_native_value(value, format) -+ * node_list.values[i] = node # <<<<<<<<<<<<<< -+ * return node_list - * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 356, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) -+ (__pyx_v_node_list->values[__pyx_t_10]) = __pyx_v_node; - -- /* "vidcutter/libs/pympv/mpv.pyx":355 -- * self.counter += 1 -+ /* "vidcutter/libs/pympv/mpv.pyx":475 -+ * if node_list.num: -+ * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -+ * for i, value in enumerate(values): # <<<<<<<<<<<<<< -+ * format = self._format_for(value) -+ * node = self._prep_native_value(value, format) -+ */ -+ } -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":479 -+ * node = self._prep_native_value(value, format) -+ * node_list.values[i] = node -+ * return node_list # <<<<<<<<<<<<<< - * -- * def remove(self): # <<<<<<<<<<<<<< -- * self.counter -= 1 -+ * cdef mpv_node_list* _prep_node_map(self, map): -+ */ -+ __pyx_r = __pyx_v_node_list; -+ goto __pyx_L0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":466 -+ * return MPV_FORMAT_NONE - * -+ * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< -+ * cdef mpv_node node -+ * cdef mpv_format format - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_node_list", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __pyx_r = 0; - __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_XDECREF(__pyx_v_i); -+ __Pyx_XDECREF(__pyx_v_value); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":370 -- * -- * @property -- * def api_version(self): # <<<<<<<<<<<<<< -- * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION -+/* "vidcutter/libs/pympv/mpv.pyx":481 -+ * return node_list - * -+ * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< -+ * cdef char* ckey -+ * cdef mpv_node_list* list - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -+static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_map) { -+ char *__pyx_v_ckey; -+ struct mpv_node_list *__pyx_v_list; -+ PyObject *__pyx_v_keys = NULL; -+ PyObject *__pyx_v_i = NULL; -+ PyObject *__pyx_v_key = NULL; -+ struct mpv_node_list *__pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -+ Py_ssize_t __pyx_t_4; -+ int __pyx_t_5; -+ PyObject *(*__pyx_t_6)(PyObject *); -+ PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_8 = NULL; -+ char *__pyx_t_9; -+ Py_ssize_t __pyx_t_10; -+ Py_ssize_t __pyx_t_11; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__get__", 0); -+ __Pyx_RefNannySetupContext("_prep_node_map", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":371 -- * @property -- * def api_version(self): -- * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION # <<<<<<<<<<<<<< -- * -- * @property -+ /* "vidcutter/libs/pympv/mpv.pyx":484 -+ * cdef char* ckey -+ * cdef mpv_node_list* list -+ * list = self._prep_node_list(map.values()) # <<<<<<<<<<<<<< -+ * keys = map.keys() -+ * if not len(keys): - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_2); -- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); -- __Pyx_GIVEREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); -- __pyx_t_1 = 0; -- __pyx_t_2 = 0; -- __pyx_t_3 = 0; -- __pyx_r = __pyx_t_4; -- __pyx_t_4 = 0; -- goto __pyx_L0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":370 -- * -- * @property -- * def api_version(self): # <<<<<<<<<<<<<< -- * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION -- * -- */ -- -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.api_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":374 -- * -- * @property -- * def name(self): # <<<<<<<<<<<<<< -- * """Unique name for every context created. -- * -- */ -- --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- char const *__pyx_v_name; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__get__", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":380 -- * """ -- * cdef const char* name -- * assert self._ctx # <<<<<<<<<<<<<< -- * with nogil: -- * name = mpv_client_name(self._ctx) -- */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 380, __pyx_L1_error) -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); - } - } -- #endif -- -- /* "vidcutter/libs/pympv/mpv.pyx":381 -- * cdef const char* name -- * assert self._ctx -- * with nogil: # <<<<<<<<<<<<<< -- * name = mpv_client_name(self._ctx) -- * return _strdec(name) -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":382 -- * assert self._ctx -- * with nogil: -- * name = mpv_client_name(self._ctx) # <<<<<<<<<<<<<< -- * return _strdec(name) -- * -- */ -- __pyx_v_name = mpv_client_name(__pyx_v_self->_ctx); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":381 -- * cdef const char* name -- * assert self._ctx -- * with nogil: # <<<<<<<<<<<<<< -- * name = mpv_client_name(self._ctx) -- * return _strdec(name) -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":383 -- * with nogil: -- * name = mpv_client_name(self._ctx) -- * return _strdec(name) # <<<<<<<<<<<<<< -- * -- * @property -+ /* "vidcutter/libs/pympv/mpv.pyx":485 -+ * cdef mpv_node_list* list -+ * list = self._prep_node_list(map.values()) -+ * keys = map.keys() # <<<<<<<<<<<<<< -+ * if not len(keys): -+ * return list - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 383, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 383, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 383, __pyx_L1_error) -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_r = __pyx_t_1; -+ __pyx_v_keys = __pyx_t_1; - __pyx_t_1 = 0; -- goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":374 -- * -- * @property -- * def name(self): # <<<<<<<<<<<<<< -- * """Unique name for every context created. -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":486 -+ * list = self._prep_node_list(map.values()) -+ * keys = map.keys() -+ * if not len(keys): # <<<<<<<<<<<<<< -+ * return list -+ * list.keys = malloc(list.num) - */ -+ __pyx_t_4 = PyObject_Length(__pyx_v_keys); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 486, __pyx_L1_error) -+ __pyx_t_5 = ((!(__pyx_t_4 != 0)) != 0); -+ if (__pyx_t_5) { - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":386 -- * -- * @property -- * def time(self): # <<<<<<<<<<<<<< -- * """Internal mpv client time. -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":487 -+ * keys = map.keys() -+ * if not len(keys): -+ * return list # <<<<<<<<<<<<<< -+ * list.keys = malloc(list.num) -+ * for i, key in enumerate(keys): - */ -+ __pyx_r = __pyx_v_list; -+ goto __pyx_L0; - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(PyObject *__pyx_v_self); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ /* "vidcutter/libs/pympv/mpv.pyx":486 -+ * list = self._prep_node_list(map.values()) -+ * keys = map.keys() -+ * if not len(keys): # <<<<<<<<<<<<<< -+ * return list -+ * list.keys = malloc(list.num) -+ */ -+ } - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":488 -+ * if not len(keys): -+ * return list -+ * list.keys = malloc(list.num) # <<<<<<<<<<<<<< -+ * for i, key in enumerate(keys): -+ * key = _strenc(key) -+ */ -+ __pyx_v_list->keys = ((char **)malloc(__pyx_v_list->num)); - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- int64_t __pyx_v_time; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__get__", 0); -+ /* "vidcutter/libs/pympv/mpv.pyx":489 -+ * return list -+ * list.keys = malloc(list.num) -+ * for i, key in enumerate(keys): # <<<<<<<<<<<<<< -+ * key = _strenc(key) -+ * ckey = key -+ */ -+ __Pyx_INCREF(__pyx_int_0); -+ __pyx_t_1 = __pyx_int_0; -+ if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) { -+ __pyx_t_2 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; -+ __pyx_t_6 = NULL; -+ } else { -+ __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 489, __pyx_L1_error) -+ } -+ for (;;) { -+ if (likely(!__pyx_t_6)) { -+ if (likely(PyList_CheckExact(__pyx_t_2))) { -+ if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) -+ #else -+ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ #endif -+ } else { -+ if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) -+ #else -+ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ #endif -+ } -+ } else { -+ __pyx_t_3 = __pyx_t_6(__pyx_t_2); -+ if (unlikely(!__pyx_t_3)) { -+ PyObject* exc_type = PyErr_Occurred(); -+ if (exc_type) { -+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -+ else __PYX_ERR(0, 489, __pyx_L1_error) -+ } -+ break; -+ } -+ __Pyx_GOTREF(__pyx_t_3); -+ } -+ __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3); -+ __pyx_t_3 = 0; -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); -+ __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_1); -+ __pyx_t_1 = __pyx_t_3; -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":394 -- * """ -- * cdef int64_t time -- * assert self._ctx # <<<<<<<<<<<<<< -- * with nogil: -- * time = mpv_get_time_us(self._ctx) -+ /* "vidcutter/libs/pympv/mpv.pyx":490 -+ * list.keys = malloc(list.num) -+ * for i, key in enumerate(keys): -+ * key = _strenc(key) # <<<<<<<<<<<<<< -+ * ckey = key -+ * list.keys[i] = malloc(len(key) + 1) - */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 394, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_strenc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_8 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { -+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -+ if (likely(__pyx_t_8)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -+ __Pyx_INCREF(__pyx_t_8); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_7, function); -+ } - } -- } -- #endif -+ __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key); -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_3); -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":395 -- * cdef int64_t time -- * assert self._ctx -- * with nogil: # <<<<<<<<<<<<<< -- * time = mpv_get_time_us(self._ctx) -- * return time -+ /* "vidcutter/libs/pympv/mpv.pyx":491 -+ * for i, key in enumerate(keys): -+ * key = _strenc(key) -+ * ckey = key # <<<<<<<<<<<<<< -+ * list.keys[i] = malloc(len(key) + 1) -+ * strcpy(list.keys[i], ckey) - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_9 = __Pyx_PyObject_AsWritableString(__pyx_v_key); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 491, __pyx_L1_error) -+ __pyx_v_ckey = __pyx_t_9; - -- /* "vidcutter/libs/pympv/mpv.pyx":396 -- * assert self._ctx -- * with nogil: -- * time = mpv_get_time_us(self._ctx) # <<<<<<<<<<<<<< -- * return time -+ /* "vidcutter/libs/pympv/mpv.pyx":492 -+ * key = _strenc(key) -+ * ckey = key -+ * list.keys[i] = malloc(len(key) + 1) # <<<<<<<<<<<<<< -+ * strcpy(list.keys[i], ckey) -+ * return list -+ */ -+ __pyx_t_10 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 492, __pyx_L1_error) -+ __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L1_error) -+ (__pyx_v_list->keys[__pyx_t_11]) = ((char *)malloc((__pyx_t_10 + 1))); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":493 -+ * ckey = key -+ * list.keys[i] = malloc(len(key) + 1) -+ * strcpy(list.keys[i], ckey) # <<<<<<<<<<<<<< -+ * return list - * - */ -- __pyx_v_time = mpv_get_time_us(__pyx_v_self->_ctx); -- } -+ __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error) -+ (void)(strcpy((__pyx_v_list->keys[__pyx_t_10]), __pyx_v_ckey)); - -- /* "vidcutter/libs/pympv/mpv.pyx":395 -- * cdef int64_t time -- * assert self._ctx -- * with nogil: # <<<<<<<<<<<<<< -- * time = mpv_get_time_us(self._ctx) -- * return time -+ /* "vidcutter/libs/pympv/mpv.pyx":489 -+ * return list -+ * list.keys = malloc(list.num) -+ * for i, key in enumerate(keys): # <<<<<<<<<<<<<< -+ * key = _strenc(key) -+ * ckey = key - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } - } -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":397 -- * with nogil: -- * time = mpv_get_time_us(self._ctx) -- * return time # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":494 -+ * list.keys[i] = malloc(len(key) + 1) -+ * strcpy(list.keys[i], ckey) -+ * return list # <<<<<<<<<<<<<< - * -- * def suspend(self): -+ * cdef mpv_node _prep_native_value(self, value, format): - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_v_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -+ __pyx_r = __pyx_v_list; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":386 -- * -- * @property -- * def time(self): # <<<<<<<<<<<<<< -- * """Internal mpv client time. -+ /* "vidcutter/libs/pympv/mpv.pyx":481 -+ * return node_list - * -+ * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< -+ * cdef char* ckey -+ * cdef mpv_node_list* list - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_node_map", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __pyx_r = 0; - __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_XDECREF(__pyx_v_keys); -+ __Pyx_XDECREF(__pyx_v_i); -+ __Pyx_XDECREF(__pyx_v_key); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":399 -- * return time -+/* "vidcutter/libs/pympv/mpv.pyx":496 -+ * return list - * -- * def suspend(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_suspend""" -- * assert self._ctx -+ * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< -+ * cdef mpv_node node -+ * node.format = format - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1suspend(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_suspend[] = "Wraps: mpv_suspend"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1suspend(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("suspend (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_suspend(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_suspend(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -+static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value, PyObject *__pyx_v_format) { -+ struct mpv_node __pyx_v_node; -+ struct mpv_node __pyx_r; - __Pyx_RefNannyDeclarations -+ enum mpv_format __pyx_t_1; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ int __pyx_t_4; -+ PyObject *__pyx_t_5 = NULL; -+ Py_ssize_t __pyx_t_6; -+ char const *__pyx_t_7; -+ int __pyx_t_8; -+ int64_t __pyx_t_9; -+ double __pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("suspend", 0); -+ __Pyx_RefNannySetupContext("_prep_native_value", 0); -+ __Pyx_INCREF(__pyx_v_value); - -- /* "vidcutter/libs/pympv/mpv.pyx":401 -- * def suspend(self): -- * """Wraps: mpv_suspend""" -- * assert self._ctx # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_suspend(self._ctx) -+ /* "vidcutter/libs/pympv/mpv.pyx":498 -+ * cdef mpv_node _prep_native_value(self, value, format): -+ * cdef mpv_node node -+ * node.format = format # <<<<<<<<<<<<<< -+ * if format == MPV_FORMAT_STRING: -+ * value = _strenc(value) - */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 401, __pyx_L1_error) -- } -- } -- #endif -- -- /* "vidcutter/libs/pympv/mpv.pyx":402 -- * """Wraps: mpv_suspend""" -- * assert self._ctx -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_suspend(self._ctx) -- * -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_1 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L1_error) -+ __pyx_v_node.format = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":403 -- * assert self._ctx -- * with nogil: -- * mpv_suspend(self._ctx) # <<<<<<<<<<<<<< -- * -- * def resume(self): -+ /* "vidcutter/libs/pympv/mpv.pyx":499 -+ * cdef mpv_node node -+ * node.format = format -+ * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -+ * value = _strenc(value) -+ * node.u.string = malloc(len(value) + 1) - */ -- mpv_suspend(__pyx_v_self->_ctx); -- } -+ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 499, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":402 -- * """Wraps: mpv_suspend""" -- * assert self._ctx -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_suspend(self._ctx) -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":500 -+ * node.format = format -+ * if format == MPV_FORMAT_STRING: -+ * value = _strenc(value) # <<<<<<<<<<<<<< -+ * node.u.string = malloc(len(value) + 1) -+ * strcpy(node.u.string, value) - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); - } -- } -+ } -+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3); -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":399 -- * return time -- * -- * def suspend(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_suspend""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":501 -+ * if format == MPV_FORMAT_STRING: -+ * value = _strenc(value) -+ * node.u.string = malloc(len(value) + 1) # <<<<<<<<<<<<<< -+ * strcpy(node.u.string, value) -+ * elif format == MPV_FORMAT_FLAG: - */ -+ __pyx_t_6 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 501, __pyx_L1_error) -+ __pyx_v_node.u.string = ((char *)malloc((__pyx_t_6 + 1))); - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.suspend", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":405 -- * mpv_suspend(self._ctx) -- * -- * def resume(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_resume""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":502 -+ * value = _strenc(value) -+ * node.u.string = malloc(len(value) + 1) -+ * strcpy(node.u.string, value) # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_FLAG: -+ * node.u.flag = 1 if value else 0 - */ -+ __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error) -+ (void)(strcpy(__pyx_v_node.u.string, __pyx_t_7)); - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_3resume(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_2resume[] = "Wraps: mpv_resume"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_3resume(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("resume (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_2resume(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":499 -+ * cdef mpv_node node -+ * node.format = format -+ * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -+ * value = _strenc(value) -+ * node.u.string = malloc(len(value) + 1) -+ */ -+ goto __pyx_L3; -+ } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2resume(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("resume", 0); -+ /* "vidcutter/libs/pympv/mpv.pyx":503 -+ * node.u.string = malloc(len(value) + 1) -+ * strcpy(node.u.string, value) -+ * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -+ * node.u.flag = 1 if value else 0 -+ * elif format == MPV_FORMAT_INT64: -+ */ -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 503, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":407 -- * def resume(self): -- * """Wraps: mpv_resume""" -- * assert self._ctx # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_resume(self._ctx) -+ /* "vidcutter/libs/pympv/mpv.pyx":504 -+ * strcpy(node.u.string, value) -+ * elif format == MPV_FORMAT_FLAG: -+ * node.u.flag = 1 if value else 0 # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_INT64: -+ * node.u.int64 = value - */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 407, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 504, __pyx_L1_error) -+ if (__pyx_t_4) { -+ __pyx_t_8 = 1; -+ } else { -+ __pyx_t_8 = 0; - } -+ __pyx_v_node.u.flag = __pyx_t_8; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":503 -+ * node.u.string = malloc(len(value) + 1) -+ * strcpy(node.u.string, value) -+ * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -+ * node.u.flag = 1 if value else 0 -+ * elif format == MPV_FORMAT_INT64: -+ */ -+ goto __pyx_L3; - } -- #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":408 -- * """Wraps: mpv_resume""" -- * assert self._ctx -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_resume(self._ctx) -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":505 -+ * elif format == MPV_FORMAT_FLAG: -+ * node.u.flag = 1 if value else 0 -+ * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -+ * node.u.int64 = value -+ * elif format == MPV_FORMAT_DOUBLE: - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 505, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":409 -- * assert self._ctx -- * with nogil: -- * mpv_resume(self._ctx) # <<<<<<<<<<<<<< -- * -- * @_errors -+ /* "vidcutter/libs/pympv/mpv.pyx":506 -+ * node.u.flag = 1 if value else 0 -+ * elif format == MPV_FORMAT_INT64: -+ * node.u.int64 = value # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_DOUBLE: -+ * node.u.double_ = value - */ -- mpv_resume(__pyx_v_self->_ctx); -- } -+ __pyx_t_9 = __Pyx_PyInt_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_9 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) -+ __pyx_v_node.u.int64 = __pyx_t_9; - -- /* "vidcutter/libs/pympv/mpv.pyx":408 -- * """Wraps: mpv_resume""" -- * assert self._ctx -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_resume(self._ctx) -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":505 -+ * elif format == MPV_FORMAT_FLAG: -+ * node.u.flag = 1 if value else 0 -+ * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -+ * node.u.int64 = value -+ * elif format == MPV_FORMAT_DOUBLE: - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -+ goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":405 -- * mpv_suspend(self._ctx) -- * -- * def resume(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_resume""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":507 -+ * elif format == MPV_FORMAT_INT64: -+ * node.u.int64 = value -+ * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -+ * node.u.double_ = value -+ * elif format == MPV_FORMAT_NODE_ARRAY: - */ -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 507, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 507, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__pyx_t_4) { - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.resume", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":508 -+ * node.u.int64 = value -+ * elif format == MPV_FORMAT_DOUBLE: -+ * node.u.double_ = value # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_NODE_ARRAY: -+ * node.u.list = self._prep_node_list(value) -+ */ -+ __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 508, __pyx_L1_error) -+ __pyx_v_node.u.double_ = __pyx_t_10; - --/* "vidcutter/libs/pympv/mpv.pyx":412 -- * -- * @_errors -- * def request_event(self, event, enable): # <<<<<<<<<<<<<< -- * """Enable or disable a given event. -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":507 -+ * elif format == MPV_FORMAT_INT64: -+ * node.u.int64 = value -+ * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -+ * node.u.double_ = value -+ * elif format == MPV_FORMAT_NODE_ARRAY: - */ -- --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_5request_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_4request_event[] = "Enable or disable a given event.\n\n Arguments:\n event - See Events\n enable - True to enable, False to disable\n\n Wraps: mpv_request_event\n "; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_5request_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_event = 0; -- PyObject *__pyx_v_enable = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("request_event (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_event,&__pyx_n_s_enable,0}; -- PyObject* values[2] = {0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, 1); __PYX_ERR(0, 412, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "request_event") < 0)) __PYX_ERR(0, 412, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- } -- __pyx_v_event = values[0]; -- __pyx_v_enable = values[1]; -+ goto __pyx_L3; - } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 412, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_4request_event(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_event, __pyx_v_enable); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4request_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_enable) { -- int __pyx_v_enable_i; -- int __pyx_v_err; -- enum mpv_event_id __pyx_v_event_id; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- int __pyx_t_2; -- enum mpv_event_id __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("request_event", 0); -+ /* "vidcutter/libs/pympv/mpv.pyx":509 -+ * elif format == MPV_FORMAT_DOUBLE: -+ * node.u.double_ = value -+ * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -+ * node.u.list = self._prep_node_list(value) -+ * elif format == MPV_FORMAT_NODE_MAP: -+ */ -+ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 509, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 509, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":421 -- * Wraps: mpv_request_event -- * """ -- * assert self._ctx # <<<<<<<<<<<<<< -- * cdef int enable_i = 1 if enable else 0 -- * cdef int err -+ /* "vidcutter/libs/pympv/mpv.pyx":510 -+ * node.u.double_ = value -+ * elif format == MPV_FORMAT_NODE_ARRAY: -+ * node.u.list = self._prep_node_list(value) # <<<<<<<<<<<<<< -+ * elif format == MPV_FORMAT_NODE_MAP: -+ * node.u.list = self._prep_node_map(value) - */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 421, __pyx_L1_error) -- } -- } -- #endif -+ __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_v_value); - -- /* "vidcutter/libs/pympv/mpv.pyx":422 -- * """ -- * assert self._ctx -- * cdef int enable_i = 1 if enable else 0 # <<<<<<<<<<<<<< -- * cdef int err -- * cdef mpv_event_id event_id = event -+ /* "vidcutter/libs/pympv/mpv.pyx":509 -+ * elif format == MPV_FORMAT_DOUBLE: -+ * node.u.double_ = value -+ * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -+ * node.u.list = self._prep_node_list(value) -+ * elif format == MPV_FORMAT_NODE_MAP: - */ -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_enable); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 422, __pyx_L1_error) -- if (__pyx_t_2) { -- __pyx_t_1 = 1; -- } else { -- __pyx_t_1 = 0; -+ goto __pyx_L3; - } -- __pyx_v_enable_i = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":424 -- * cdef int enable_i = 1 if enable else 0 -- * cdef int err -- * cdef mpv_event_id event_id = event # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_request_event(self._ctx, event_id, enable_i) -+ /* "vidcutter/libs/pympv/mpv.pyx":511 -+ * elif format == MPV_FORMAT_NODE_ARRAY: -+ * node.u.list = self._prep_node_list(value) -+ * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -+ * node.u.list = self._prep_node_map(value) -+ * else: - */ -- __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_event)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 424, __pyx_L1_error) -- __pyx_v_event_id = __pyx_t_3; -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 511, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":425 -- * cdef int err -- * cdef mpv_event_id event_id = event -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_request_event(self._ctx, event_id, enable_i) -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":512 -+ * node.u.list = self._prep_node_list(value) -+ * elif format == MPV_FORMAT_NODE_MAP: -+ * node.u.list = self._prep_node_map(value) # <<<<<<<<<<<<<< -+ * else: -+ * node.format = MPV_FORMAT_NONE - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_map(__pyx_v_self, __pyx_v_value); - -- /* "vidcutter/libs/pympv/mpv.pyx":426 -- * cdef mpv_event_id event_id = event -- * with nogil: -- * err = mpv_request_event(self._ctx, event_id, enable_i) # <<<<<<<<<<<<<< -- * return err -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":511 -+ * elif format == MPV_FORMAT_NODE_ARRAY: -+ * node.u.list = self._prep_node_list(value) -+ * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -+ * node.u.list = self._prep_node_map(value) -+ * else: - */ -- __pyx_v_err = mpv_request_event(__pyx_v_self->_ctx, __pyx_v_event_id, __pyx_v_enable_i); -- } -+ goto __pyx_L3; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":425 -- * cdef int err -- * cdef mpv_event_id event_id = event -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_request_event(self._ctx, event_id, enable_i) -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":514 -+ * node.u.list = self._prep_node_map(value) -+ * else: -+ * node.format = MPV_FORMAT_NONE # <<<<<<<<<<<<<< -+ * return node -+ * - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -+ /*else*/ { -+ __pyx_v_node.format = MPV_FORMAT_NONE; - } -+ __pyx_L3:; - -- /* "vidcutter/libs/pympv/mpv.pyx":427 -- * with nogil: -- * err = mpv_request_event(self._ctx, event_id, enable_i) -- * return err # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":515 -+ * else: -+ * node.format = MPV_FORMAT_NONE -+ * return node # <<<<<<<<<<<<<< - * -- * @_errors -+ * cdef _free_native_value(self, mpv_node node): - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_r = __pyx_t_4; -- __pyx_t_4 = 0; -+ __pyx_r = __pyx_v_node; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":412 -- * -- * @_errors -- * def request_event(self, event, enable): # <<<<<<<<<<<<<< -- * """Enable or disable a given event. -+ /* "vidcutter/libs/pympv/mpv.pyx":496 -+ * return list - * -+ * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< -+ * cdef mpv_node node -+ * node.format = format - */ - - /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_native_value", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __Pyx_pretend_to_initialize(&__pyx_r); - __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_XDECREF(__pyx_v_value); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":430 -+/* "vidcutter/libs/pympv/mpv.pyx":517 -+ * return node - * -- * @_errors -- * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< -- * """Wraps: mpv_request_log_messages""" -- * assert self._ctx -+ * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< -+ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): -+ * for i in range(node.u.list.num): - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_7set_log_level(PyObject *__pyx_v_self, PyObject *__pyx_v_loglevel); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_6set_log_level[] = "Wraps: mpv_request_log_messages"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_7set_log_level(PyObject *__pyx_v_self, PyObject *__pyx_v_loglevel) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_log_level (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_6set_log_level(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_loglevel)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6set_log_level(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_loglevel) { -- char const *__pyx_v_loglevel_c; -- int __pyx_v_err; -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, struct mpv_node __pyx_v_node) { -+ int __pyx_v_i; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- char const *__pyx_t_4; -+ int __pyx_t_1; -+ int __pyx_t_2; -+ int __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; -+ int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("set_log_level", 0); -- __Pyx_INCREF(__pyx_v_loglevel); -+ __Pyx_RefNannySetupContext("_free_native_value", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":432 -- * def set_log_level(self, loglevel): -- * """Wraps: mpv_request_log_messages""" -- * assert self._ctx # <<<<<<<<<<<<<< -- * loglevel = _strenc(loglevel) -- * cdef const char* loglevel_c = loglevel -+ /* "vidcutter/libs/pympv/mpv.pyx":518 -+ * -+ * cdef _free_native_value(self, mpv_node node): -+ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< -+ * for i in range(node.u.list.num): -+ * self._free_native_value(node.u.list.values[i]) - */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 432, __pyx_L1_error) -- } -- } -- #endif -+ switch (__pyx_v_node.format) { -+ case MPV_FORMAT_NODE_ARRAY: -+ case MPV_FORMAT_NODE_MAP: - -- /* "vidcutter/libs/pympv/mpv.pyx":433 -- * """Wraps: mpv_request_log_messages""" -- * assert self._ctx -- * loglevel = _strenc(loglevel) # <<<<<<<<<<<<<< -- * cdef const char* loglevel_c = loglevel -- * cdef int err -+ /* "vidcutter/libs/pympv/mpv.pyx":519 -+ * cdef _free_native_value(self, mpv_node node): -+ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): -+ * for i in range(node.u.list.num): # <<<<<<<<<<<<<< -+ * self._free_native_value(node.u.list.values[i]) -+ * free(node.u.list.values) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 433, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -+ __pyx_t_1 = __pyx_v_node.u.list->num; -+ __pyx_t_2 = __pyx_t_1; -+ for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { -+ __pyx_v_i = __pyx_t_3; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":520 -+ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): -+ * for i in range(node.u.list.num): -+ * self._free_native_value(node.u.list.values[i]) # <<<<<<<<<<<<<< -+ * free(node.u.list.values) -+ * if node.format == MPV_FORMAT_NODE_MAP: -+ */ -+ __pyx_t_4 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, (__pyx_v_node.u.list->values[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } -- } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_loglevel) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_loglevel); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF_SET(__pyx_v_loglevel, __pyx_t_1); -- __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":434 -- * assert self._ctx -- * loglevel = _strenc(loglevel) -- * cdef const char* loglevel_c = loglevel # <<<<<<<<<<<<<< -- * cdef int err -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":521 -+ * for i in range(node.u.list.num): -+ * self._free_native_value(node.u.list.values[i]) -+ * free(node.u.list.values) # <<<<<<<<<<<<<< -+ * if node.format == MPV_FORMAT_NODE_MAP: -+ * for i in range(node.u.list.num): - */ -- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_loglevel); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 434, __pyx_L1_error) -- __pyx_v_loglevel_c = __pyx_t_4; -+ free(__pyx_v_node.u.list->values); - -- /* "vidcutter/libs/pympv/mpv.pyx":436 -- * cdef const char* loglevel_c = loglevel -- * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_request_log_messages(self._ctx, loglevel_c) -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":522 -+ * self._free_native_value(node.u.list.values[i]) -+ * free(node.u.list.values) -+ * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -+ * for i in range(node.u.list.num): -+ * free(node.u.list.keys[i]) - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_5 = ((__pyx_v_node.format == MPV_FORMAT_NODE_MAP) != 0); -+ if (__pyx_t_5) { - -- /* "vidcutter/libs/pympv/mpv.pyx":437 -- * cdef int err -- * with nogil: -- * err = mpv_request_log_messages(self._ctx, loglevel_c) # <<<<<<<<<<<<<< -- * return err -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":523 -+ * free(node.u.list.values) -+ * if node.format == MPV_FORMAT_NODE_MAP: -+ * for i in range(node.u.list.num): # <<<<<<<<<<<<<< -+ * free(node.u.list.keys[i]) -+ * free(node.u.list.keys) - */ -- __pyx_v_err = mpv_request_log_messages(__pyx_v_self->_ctx, __pyx_v_loglevel_c); -- } -+ __pyx_t_1 = __pyx_v_node.u.list->num; -+ __pyx_t_2 = __pyx_t_1; -+ for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { -+ __pyx_v_i = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":436 -- * cdef const char* loglevel_c = loglevel -- * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_request_log_messages(self._ctx, loglevel_c) -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":524 -+ * if node.format == MPV_FORMAT_NODE_MAP: -+ * for i in range(node.u.list.num): -+ * free(node.u.list.keys[i]) # <<<<<<<<<<<<<< -+ * free(node.u.list.keys) -+ * free(node.u.list) - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -+ free((__pyx_v_node.u.list->keys[__pyx_v_i])); - } -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":438 -- * with nogil: -- * err = mpv_request_log_messages(self._ctx, loglevel_c) -- * return err # <<<<<<<<<<<<<< -- * -- * @_errors -+ /* "vidcutter/libs/pympv/mpv.pyx":525 -+ * for i in range(node.u.list.num): -+ * free(node.u.list.keys[i]) -+ * free(node.u.list.keys) # <<<<<<<<<<<<<< -+ * free(node.u.list) -+ * elif node.format == MPV_FORMAT_STRING: - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ free(__pyx_v_node.u.list->keys); - -- /* "vidcutter/libs/pympv/mpv.pyx":430 -- * -- * @_errors -- * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< -- * """Wraps: mpv_request_log_messages""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":522 -+ * self._free_native_value(node.u.list.values[i]) -+ * free(node.u.list.values) -+ * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -+ * for i in range(node.u.list.num): -+ * free(node.u.list.keys[i]) - */ -+ } - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_log_level", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_loglevel); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":526 -+ * free(node.u.list.keys[i]) -+ * free(node.u.list.keys) -+ * free(node.u.list) # <<<<<<<<<<<<<< -+ * elif node.format == MPV_FORMAT_STRING: -+ * free(node.u.string) -+ */ -+ free(__pyx_v_node.u.list); - --/* "vidcutter/libs/pympv/mpv.pyx":441 -+ /* "vidcutter/libs/pympv/mpv.pyx":518 - * -- * @_errors -- * def load_config(self, filename): # <<<<<<<<<<<<<< -- * """Wraps: mpv_load_config_file""" -- * assert self._ctx -+ * cdef _free_native_value(self, mpv_node node): -+ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< -+ * for i in range(node.u.list.num): -+ * self._free_native_value(node.u.list.values[i]) - */ -+ break; -+ case MPV_FORMAT_STRING: - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9load_config(PyObject *__pyx_v_self, PyObject *__pyx_v_filename); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_8load_config[] = "Wraps: mpv_load_config_file"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9load_config(PyObject *__pyx_v_self, PyObject *__pyx_v_filename) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("load_config (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_8load_config(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_filename)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8load_config(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_filename) { -- char const *__pyx_v__filename; -+ /* "vidcutter/libs/pympv/mpv.pyx":528 -+ * free(node.u.list) -+ * elif node.format == MPV_FORMAT_STRING: -+ * free(node.u.string) # <<<<<<<<<<<<<< -+ * -+ * def command(self, *cmdlist, asynchronous=False, data=None): -+ */ -+ free(__pyx_v_node.u.string); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":527 -+ * free(node.u.list.keys) -+ * free(node.u.list) -+ * elif node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -+ * free(node.u.string) -+ * -+ */ -+ break; -+ default: break; -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":517 -+ * return node -+ * -+ * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< -+ * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): -+ * for i in range(node.u.list.num): -+ */ -+ -+ /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context._free_native_value", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "vidcutter/libs/pympv/mpv.pyx":530 -+ * free(node.u.string) -+ * -+ * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< -+ * """Send a command to mpv. -+ * -+ */ -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_8command[] = "Send a command to mpv.\n\n Non-async success returns the command's response data, otherwise None\n\n Arguments:\n Accepts parameters as args\n\n Keyword Arguments:\n asynchronous: True will return right away, status comes in as MPV_EVENT_COMMAND_REPLY\n data: Only valid if async, gets sent back as reply_userdata in the Event\n\n Wraps: mpv_command_node and mpv_command_node_async\n "; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_asynchronous = 0; -+ PyObject *__pyx_v_data = 0; -+ PyObject *__pyx_v_cmdlist = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("command (wrapper)", 0); -+ if (PyTuple_GET_SIZE(__pyx_args) > 0) { -+ __pyx_v_cmdlist = PyTuple_GetSlice(__pyx_args, 0, PyTuple_GET_SIZE(__pyx_args)); -+ if (unlikely(!__pyx_v_cmdlist)) { -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ } -+ __Pyx_GOTREF(__pyx_v_cmdlist); -+ } else { -+ __pyx_v_cmdlist = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); -+ } -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asynchronous,&__pyx_n_s_data,0}; -+ PyObject* values[2] = {0,0}; -+ values[0] = ((PyObject *)Py_False); -+ values[1] = ((PyObject *)Py_None); -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ default: -+ case 0: break; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ if (kw_args > 0 && likely(kw_args <= 2)) { -+ Py_ssize_t index; -+ for (index = 0; index < 2 && kw_args > 0; index++) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); -+ if (value) { values[index] = value; kw_args--; } -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "command") < 0)) __PYX_ERR(0, 530, __pyx_L3_error) -+ } -+ } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { -+ goto __pyx_L5_argtuple_error; -+ } else { -+ } -+ __pyx_v_asynchronous = values[0]; -+ __pyx_v_data = values[1]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("command", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 530, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_DECREF(__pyx_v_cmdlist); __pyx_v_cmdlist = 0; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_asynchronous, __pyx_v_data, __pyx_v_cmdlist); -+ -+ /* function exit code */ -+ __Pyx_XDECREF(__pyx_v_cmdlist); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data, PyObject *__pyx_v_cmdlist) { -+ struct mpv_node __pyx_v_node; -+ struct mpv_node __pyx_v_noderesult; - int __pyx_v_err; -+ uint64_t __pyx_v_data_id; -+ PyObject *__pyx_v_result = NULL; -+ PyObject *__pyx_v_userdatas = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -- char const *__pyx_t_4; -+ uint64_t __pyx_t_4; -+ int __pyx_t_5; -+ int __pyx_t_6; -+ int __pyx_t_7; -+ int __pyx_t_8; -+ char const *__pyx_t_9; -+ PyObject *__pyx_t_10 = NULL; -+ PyObject *__pyx_t_11 = NULL; -+ PyObject *__pyx_t_12 = NULL; -+ PyObject *__pyx_t_13 = NULL; -+ PyObject *__pyx_t_14 = NULL; -+ PyObject *__pyx_t_15 = NULL; -+ PyObject *__pyx_t_16 = NULL; -+ PyObject *__pyx_t_17 = NULL; -+ char const *__pyx_t_18; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("load_config", 0); -- __Pyx_INCREF(__pyx_v_filename); -+ __Pyx_RefNannySetupContext("command", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":443 -- * def load_config(self, filename): -- * """Wraps: mpv_load_config_file""" -+ /* "vidcutter/libs/pympv/mpv.pyx":544 -+ * Wraps: mpv_command_node and mpv_command_node_async -+ * """ - * assert self._ctx # <<<<<<<<<<<<<< -- * filename = _strenc(filename) -- * cdef const char* _filename = filename -+ * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) -+ * cdef mpv_node noderesult - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 443, __pyx_L1_error) -+ __PYX_ERR(0, 544, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":444 -- * """Wraps: mpv_load_config_file""" -+ /* "vidcutter/libs/pympv/mpv.pyx":545 -+ * """ - * assert self._ctx -- * filename = _strenc(filename) # <<<<<<<<<<<<<< -- * cdef const char* _filename = filename -+ * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) # <<<<<<<<<<<<<< -+ * cdef mpv_node noderesult - * cdef int err - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 444, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -@@ -9672,679 +10373,724 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8load_config(struct __p - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_cmdlist) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cmdlist); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1); -- __pyx_t_1 = 0; -+ __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_cmdlist, __pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":445 -- * assert self._ctx -- * filename = _strenc(filename) -- * cdef const char* _filename = filename # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":549 - * cdef int err -- * with nogil: -+ * cdef uint64_t data_id -+ * result = None # <<<<<<<<<<<<<< -+ * try: -+ * data_id = id(data) - */ -- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 445, __pyx_L1_error) -- __pyx_v__filename = __pyx_t_4; -+ __Pyx_INCREF(Py_None); -+ __pyx_v_result = Py_None; - -- /* "vidcutter/libs/pympv/mpv.pyx":447 -- * cdef const char* _filename = filename -- * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_load_config_file(self._ctx, _filename) -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":550 -+ * cdef uint64_t data_id -+ * result = None -+ * try: # <<<<<<<<<<<<<< -+ * data_id = id(data) -+ * if not asynchronous: - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":448 -- * cdef int err -- * with nogil: -- * err = mpv_load_config_file(self._ctx, _filename) # <<<<<<<<<<<<<< -- * return err -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":551 -+ * result = None -+ * try: -+ * data_id = id(data) # <<<<<<<<<<<<<< -+ * if not asynchronous: -+ * with nogil: - */ -- __pyx_v_err = mpv_load_config_file(__pyx_v_self->_ctx, __pyx_v__filename); -- } -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_4 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 551, __pyx_L4_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_data_id = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":447 -- * cdef const char* _filename = filename -- * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_load_config_file(self._ctx, _filename) -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":552 -+ * try: -+ * data_id = id(data) -+ * if not asynchronous: # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_command_node(self._ctx, &node, &noderesult) - */ -- /*finally:*/ { -- /*normal exit:*/{ -+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 552, __pyx_L4_error) -+ __pyx_t_6 = ((!__pyx_t_5) != 0); -+ if (__pyx_t_6) { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":553 -+ * data_id = id(data) -+ * if not asynchronous: -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_command_node(self._ctx, &node, &noderesult) -+ * try: -+ */ -+ { - #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); - #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":449 -- * with nogil: -- * err = mpv_load_config_file(self._ctx, _filename) -- * return err # <<<<<<<<<<<<<< -- * -- * def _format_for(self, value): -+ /* "vidcutter/libs/pympv/mpv.pyx":554 -+ * if not asynchronous: -+ * with nogil: -+ * err = mpv_command_node(self._ctx, &node, &noderesult) # <<<<<<<<<<<<<< -+ * try: -+ * result = _convert_node_value(noderesult) if err >= 0 else None - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __pyx_v_err = mpv_command_node(__pyx_v_self->_ctx, (&__pyx_v_node), (&__pyx_v_noderesult)); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":441 -- * -- * @_errors -- * def load_config(self, filename): # <<<<<<<<<<<<<< -- * """Wraps: mpv_load_config_file""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":553 -+ * data_id = id(data) -+ * if not asynchronous: -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_command_node(self._ctx, &node, &noderesult) -+ * try: - */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L9; -+ } -+ __pyx_L9:; -+ } -+ } - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.load_config", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_filename); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":451 -- * return err -- * -- * def _format_for(self, value): # <<<<<<<<<<<<<< -- * if isinstance(value, basestring): -- * return MPV_FORMAT_STRING -+ /* "vidcutter/libs/pympv/mpv.pyx":555 -+ * with nogil: -+ * err = mpv_command_node(self._ctx, &node, &noderesult) -+ * try: # <<<<<<<<<<<<<< -+ * result = _convert_node_value(noderesult) if err >= 0 else None -+ * finally: - */ -+ /*try:*/ { - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11_format_for(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11_format_for(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("_format_for (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_10_format_for(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_value)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10_format_for(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- int __pyx_t_2; -- PyObject *__pyx_t_3 = NULL; -- int __pyx_t_4; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_format_for", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":452 -- * -- * def _format_for(self, value): -- * if isinstance(value, basestring): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_STRING -- * elif isinstance(value, bool): -+ /* "vidcutter/libs/pympv/mpv.pyx":556 -+ * err = mpv_command_node(self._ctx, &node, &noderesult) -+ * try: -+ * result = _convert_node_value(noderesult) if err >= 0 else None # <<<<<<<<<<<<<< -+ * finally: -+ * with nogil: - */ -- __pyx_t_1 = __Pyx_PyBaseString_Check(__pyx_v_value); -- __pyx_t_2 = (__pyx_t_1 != 0); -- if (__pyx_t_2) { -+ if (((__pyx_v_err >= 0) != 0)) { -+ __pyx_t_2 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_noderesult); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L11_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_1 = __pyx_t_2; -+ __pyx_t_2 = 0; -+ } else { -+ __Pyx_INCREF(Py_None); -+ __pyx_t_1 = Py_None; -+ } -+ __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1); -+ __pyx_t_1 = 0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":453 -- * def _format_for(self, value): -- * if isinstance(value, basestring): -- * return MPV_FORMAT_STRING # <<<<<<<<<<<<<< -- * elif isinstance(value, bool): -- * return MPV_FORMAT_FLAG -+ /* "vidcutter/libs/pympv/mpv.pyx":558 -+ * result = _convert_node_value(noderesult) if err >= 0 else None -+ * finally: -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_free_node_contents(&noderesult) -+ * else: - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":452 -- * -- * def _format_for(self, value): -- * if isinstance(value, basestring): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_STRING -- * elif isinstance(value, bool): -+ /* "vidcutter/libs/pympv/mpv.pyx":559 -+ * finally: -+ * with nogil: -+ * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< -+ * else: -+ * userdatas = self.reply_userdata.get(data_id, None) - */ -- } -+ mpv_free_node_contents((&__pyx_v_noderesult)); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":454 -- * if isinstance(value, basestring): -- * return MPV_FORMAT_STRING -- * elif isinstance(value, bool): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_FLAG -- * elif isinstance(value, int): -+ /* "vidcutter/libs/pympv/mpv.pyx":558 -+ * result = _convert_node_value(noderesult) if err >= 0 else None -+ * finally: -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_free_node_contents(&noderesult) -+ * else: - */ -- __pyx_t_3 = ((PyObject*)&PyBool_Type); -- __Pyx_INCREF(__pyx_t_3); -- __pyx_t_2 = PyObject_IsInstance(__pyx_v_value, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 454, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_1 = (__pyx_t_2 != 0); -- if (__pyx_t_1) { -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L15; -+ } -+ __pyx_L15:; -+ } -+ } -+ goto __pyx_L12; -+ } -+ __pyx_L11_error:; -+ /*exception exit:*/{ -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); -+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); -+ __Pyx_XGOTREF(__pyx_t_10); -+ __Pyx_XGOTREF(__pyx_t_11); -+ __Pyx_XGOTREF(__pyx_t_12); -+ __Pyx_XGOTREF(__pyx_t_13); -+ __Pyx_XGOTREF(__pyx_t_14); -+ __Pyx_XGOTREF(__pyx_t_15); -+ __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; -+ { -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":455 -- * return MPV_FORMAT_STRING -- * elif isinstance(value, bool): -- * return MPV_FORMAT_FLAG # <<<<<<<<<<<<<< -- * elif isinstance(value, int): -- * return MPV_FORMAT_INT64 -+ /* "vidcutter/libs/pympv/mpv.pyx":559 -+ * finally: -+ * with nogil: -+ * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< -+ * else: -+ * userdatas = self.reply_userdata.get(data_id, None) - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ mpv_free_node_contents((&__pyx_v_noderesult)); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":454 -- * if isinstance(value, basestring): -- * return MPV_FORMAT_STRING -- * elif isinstance(value, bool): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_FLAG -- * elif isinstance(value, int): -+ /* "vidcutter/libs/pympv/mpv.pyx":558 -+ * result = _convert_node_value(noderesult) if err >= 0 else None -+ * finally: -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_free_node_contents(&noderesult) -+ * else: - */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":456 -- * elif isinstance(value, bool): -- * return MPV_FORMAT_FLAG -- * elif isinstance(value, int): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_INT64 -- * elif isinstance(value, float): -- */ -- __pyx_t_1 = PyInt_Check(__pyx_v_value); -- __pyx_t_2 = (__pyx_t_1 != 0); -- if (__pyx_t_2) { -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L20; -+ } -+ __pyx_L20:; -+ } -+ } -+ } -+ if (PY_MAJOR_VERSION >= 3) { -+ __Pyx_XGIVEREF(__pyx_t_13); -+ __Pyx_XGIVEREF(__pyx_t_14); -+ __Pyx_XGIVEREF(__pyx_t_15); -+ __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); -+ } -+ __Pyx_XGIVEREF(__pyx_t_10); -+ __Pyx_XGIVEREF(__pyx_t_11); -+ __Pyx_XGIVEREF(__pyx_t_12); -+ __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); -+ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; -+ __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; -+ goto __pyx_L4_error; -+ } -+ __pyx_L12:; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":457 -- * return MPV_FORMAT_FLAG -- * elif isinstance(value, int): -- * return MPV_FORMAT_INT64 # <<<<<<<<<<<<<< -- * elif isinstance(value, float): -- * return MPV_FORMAT_DOUBLE -+ /* "vidcutter/libs/pympv/mpv.pyx":552 -+ * try: -+ * data_id = id(data) -+ * if not asynchronous: # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_command_node(self._ctx, &node, &noderesult) - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ goto __pyx_L6; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":456 -- * elif isinstance(value, bool): -- * return MPV_FORMAT_FLAG -- * elif isinstance(value, int): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_INT64 -- * elif isinstance(value, float): -+ /* "vidcutter/libs/pympv/mpv.pyx":561 -+ * mpv_free_node_contents(&noderesult) -+ * else: -+ * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< -+ * if userdatas is None: -+ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) - */ -- } -+ /*else*/ { -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_16 = NULL; -+ __pyx_t_8 = 0; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_16)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_16); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ __pyx_t_8 = 1; -+ } -+ } -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_17 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_17); -+ if (__pyx_t_16) { -+ __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL; -+ } -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_8, __pyx_t_3); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_8, Py_None); -+ __pyx_t_3 = 0; -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -+ } -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_userdatas = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":458 -- * elif isinstance(value, int): -- * return MPV_FORMAT_INT64 -- * elif isinstance(value, float): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_DOUBLE -- * elif isinstance(value, (tuple, list)): -+ /* "vidcutter/libs/pympv/mpv.pyx":562 -+ * else: -+ * userdatas = self.reply_userdata.get(data_id, None) -+ * if userdatas is None: # <<<<<<<<<<<<<< -+ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() - */ -- __pyx_t_2 = PyFloat_Check(__pyx_v_value); -- __pyx_t_1 = (__pyx_t_2 != 0); -- if (__pyx_t_1) { -+ __pyx_t_6 = (__pyx_v_userdatas == Py_None); -+ __pyx_t_5 = (__pyx_t_6 != 0); -+ if (__pyx_t_5) { - -- /* "vidcutter/libs/pympv/mpv.pyx":459 -- * return MPV_FORMAT_INT64 -- * elif isinstance(value, float): -- * return MPV_FORMAT_DOUBLE # <<<<<<<<<<<<<< -- * elif isinstance(value, (tuple, list)): -- * return MPV_FORMAT_NODE_ARRAY -+ /* "vidcutter/libs/pympv/mpv.pyx":563 -+ * userdatas = self.reply_userdata.get(data_id, None) -+ * if userdatas is None: -+ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< -+ * userdatas.add() -+ * with nogil: - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_17 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_17)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_17); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_17, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); -+ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 563, __pyx_L4_error) -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":458 -- * elif isinstance(value, int): -- * return MPV_FORMAT_INT64 -- * elif isinstance(value, float): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_DOUBLE -- * elif isinstance(value, (tuple, list)): -+ /* "vidcutter/libs/pympv/mpv.pyx":562 -+ * else: -+ * userdatas = self.reply_userdata.get(data_id, None) -+ * if userdatas is None: # <<<<<<<<<<<<<< -+ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() - */ -- } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":460 -- * elif isinstance(value, float): -- * return MPV_FORMAT_DOUBLE -- * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_NODE_ARRAY -- * elif isinstance(value, dict): -+ /* "vidcutter/libs/pympv/mpv.pyx":564 -+ * if userdatas is None: -+ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_command_node_async(self._ctx, data_id, &node) - */ -- __pyx_t_2 = PyTuple_Check(__pyx_v_value); -- __pyx_t_4 = (__pyx_t_2 != 0); -- if (!__pyx_t_4) { -- } else { -- __pyx_t_1 = __pyx_t_4; -- goto __pyx_L4_bool_binop_done; -- } -- __pyx_t_4 = PyList_Check(__pyx_v_value); -- __pyx_t_2 = (__pyx_t_4 != 0); -- __pyx_t_1 = __pyx_t_2; -- __pyx_L4_bool_binop_done:; -- __pyx_t_2 = (__pyx_t_1 != 0); -- if (__pyx_t_2) { -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_17 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_17)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_17); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":461 -- * return MPV_FORMAT_DOUBLE -- * elif isinstance(value, (tuple, list)): -- * return MPV_FORMAT_NODE_ARRAY # <<<<<<<<<<<<<< -- * elif isinstance(value, dict): -- * return MPV_FORMAT_NODE_MAP -+ /* "vidcutter/libs/pympv/mpv.pyx":565 -+ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_command_node_async(self._ctx, data_id, &node) -+ * finally: - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":460 -- * elif isinstance(value, float): -- * return MPV_FORMAT_DOUBLE -- * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_NODE_ARRAY -- * elif isinstance(value, dict): -+ /* "vidcutter/libs/pympv/mpv.pyx":566 -+ * userdatas.add() -+ * with nogil: -+ * err = mpv_command_node_async(self._ctx, data_id, &node) # <<<<<<<<<<<<<< -+ * finally: -+ * self._free_native_value(node) -+ */ -+ __pyx_v_err = mpv_command_node_async(__pyx_v_self->_ctx, __pyx_v_data_id, (&__pyx_v_node)); -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":565 -+ * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_command_node_async(self._ctx, data_id, &node) -+ * finally: - */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L24; -+ } -+ __pyx_L24:; -+ } -+ } -+ } -+ __pyx_L6:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":462 -- * elif isinstance(value, (tuple, list)): -- * return MPV_FORMAT_NODE_ARRAY -- * elif isinstance(value, dict): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_NODE_MAP -- * return MPV_FORMAT_NONE -+ /* "vidcutter/libs/pympv/mpv.pyx":568 -+ * err = mpv_command_node_async(self._ctx, data_id, &node) -+ * finally: -+ * self._free_native_value(node) # <<<<<<<<<<<<<< -+ * if err < 0: -+ * raise MPVError(err) - */ -- __pyx_t_2 = PyDict_Check(__pyx_v_value); -- __pyx_t_1 = (__pyx_t_2 != 0); -- if (__pyx_t_1) { -+ /*finally:*/ { -+ /*normal exit:*/{ -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ goto __pyx_L5; -+ } -+ __pyx_L4_error:; -+ /*exception exit:*/{ -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; -+ __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; -+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); -+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13); -+ __Pyx_XGOTREF(__pyx_t_15); -+ __Pyx_XGOTREF(__pyx_t_14); -+ __Pyx_XGOTREF(__pyx_t_13); -+ __Pyx_XGOTREF(__pyx_t_12); -+ __Pyx_XGOTREF(__pyx_t_11); -+ __Pyx_XGOTREF(__pyx_t_10); -+ __pyx_t_8 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_18 = __pyx_filename; -+ { -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L26_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } -+ if (PY_MAJOR_VERSION >= 3) { -+ __Pyx_XGIVEREF(__pyx_t_12); -+ __Pyx_XGIVEREF(__pyx_t_11); -+ __Pyx_XGIVEREF(__pyx_t_10); -+ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); -+ } -+ __Pyx_XGIVEREF(__pyx_t_15); -+ __Pyx_XGIVEREF(__pyx_t_14); -+ __Pyx_XGIVEREF(__pyx_t_13); -+ __Pyx_ErrRestore(__pyx_t_15, __pyx_t_14, __pyx_t_13); -+ __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; -+ __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_18; -+ goto __pyx_L1_error; -+ __pyx_L26_error:; -+ if (PY_MAJOR_VERSION >= 3) { -+ __Pyx_XGIVEREF(__pyx_t_12); -+ __Pyx_XGIVEREF(__pyx_t_11); -+ __Pyx_XGIVEREF(__pyx_t_10); -+ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); -+ } -+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; -+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; -+ __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; -+ __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; -+ goto __pyx_L1_error; -+ } -+ __pyx_L5:; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":463 -- * return MPV_FORMAT_NODE_ARRAY -- * elif isinstance(value, dict): -- * return MPV_FORMAT_NODE_MAP # <<<<<<<<<<<<<< -- * return MPV_FORMAT_NONE -+ /* "vidcutter/libs/pympv/mpv.pyx":569 -+ * finally: -+ * self._free_native_value(node) -+ * if err < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(err) -+ * return result -+ */ -+ __pyx_t_5 = ((__pyx_v_err < 0) != 0); -+ if (unlikely(__pyx_t_5)) { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":570 -+ * self._free_native_value(node) -+ * if err < 0: -+ * raise MPVError(err) # <<<<<<<<<<<<<< -+ * return result - * - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 570, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_17); -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_17) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(0, 570, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":462 -- * elif isinstance(value, (tuple, list)): -- * return MPV_FORMAT_NODE_ARRAY -- * elif isinstance(value, dict): # <<<<<<<<<<<<<< -- * return MPV_FORMAT_NODE_MAP -- * return MPV_FORMAT_NONE -+ /* "vidcutter/libs/pympv/mpv.pyx":569 -+ * finally: -+ * self._free_native_value(node) -+ * if err < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(err) -+ * return result - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":464 -- * elif isinstance(value, dict): -- * return MPV_FORMAT_NODE_MAP -- * return MPV_FORMAT_NONE # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":571 -+ * if err < 0: -+ * raise MPVError(err) -+ * return result # <<<<<<<<<<<<<< - * -- * cdef mpv_node_list* _prep_node_list(self, values): -+ * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 464, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -+ __Pyx_INCREF(__pyx_v_result); -+ __pyx_r = __pyx_v_result; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":451 -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":530 -+ * free(node.u.string) -+ * -+ * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< -+ * """Send a command to mpv. - * -- * def _format_for(self, value): # <<<<<<<<<<<<<< -- * if isinstance(value, basestring): -- * return MPV_FORMAT_STRING - */ - - /* function exit code */ - __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context._format_for", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_16); -+ __Pyx_XDECREF(__pyx_t_17); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_result); -+ __Pyx_XDECREF(__pyx_v_userdatas); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":466 -- * return MPV_FORMAT_NONE -+/* "vidcutter/libs/pympv/mpv.pyx":574 -+ * -+ * @_errors -+ * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< -+ * """Gets the value of a property asynchronously. - * -- * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< -- * cdef mpv_node node -- * cdef mpv_format format - */ - --static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_values) { -- struct mpv_node __pyx_v_node; -- enum mpv_format __pyx_v_format; -- struct mpv_node_list *__pyx_v_node_list; -- PyObject *__pyx_v_i = NULL; -- PyObject *__pyx_v_value = NULL; -- struct mpv_node_list *__pyx_r; -- __Pyx_RefNannyDeclarations -- Py_ssize_t __pyx_t_1; -- int __pyx_t_2; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *(*__pyx_t_5)(PyObject *); -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -- enum mpv_format __pyx_t_9; -- Py_ssize_t __pyx_t_10; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_10get_property_async[] = "Gets the value of a property asynchronously.\n\n Arguments:\n prop: Property to get the value of.\n\n Keyword arguments:\n data: Value to be passed into the reply_userdata of the response event.\n Wraps: mpv_get_property_async"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_prop = 0; -+ PyObject *__pyx_v_data = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_prep_node_list", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":469 -- * cdef mpv_node node -- * cdef mpv_format format -- * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) # <<<<<<<<<<<<<< -- * node_list.num = len(values) -- * node_list.values = NULL -- */ -- __pyx_v_node_list = ((struct mpv_node_list *)malloc((sizeof(struct mpv_node_list)))); -- -- /* "vidcutter/libs/pympv/mpv.pyx":470 -- * cdef mpv_format format -- * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) -- * node_list.num = len(values) # <<<<<<<<<<<<<< -- * node_list.values = NULL -- * node_list.keys = NULL -- */ -- __pyx_t_1 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 470, __pyx_L1_error) -- __pyx_v_node_list->num = __pyx_t_1; -- -- /* "vidcutter/libs/pympv/mpv.pyx":471 -- * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) -- * node_list.num = len(values) -- * node_list.values = NULL # <<<<<<<<<<<<<< -- * node_list.keys = NULL -- * if node_list.num: -- */ -- __pyx_v_node_list->values = NULL; -- -- /* "vidcutter/libs/pympv/mpv.pyx":472 -- * node_list.num = len(values) -- * node_list.values = NULL -- * node_list.keys = NULL # <<<<<<<<<<<<<< -- * if node_list.num: -- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -- */ -- __pyx_v_node_list->keys = NULL; -- -- /* "vidcutter/libs/pympv/mpv.pyx":473 -- * node_list.values = NULL -- * node_list.keys = NULL -- * if node_list.num: # <<<<<<<<<<<<<< -- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -- * for i, value in enumerate(values): -- */ -- __pyx_t_2 = (__pyx_v_node_list->num != 0); -- if (__pyx_t_2) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":474 -- * node_list.keys = NULL -- * if node_list.num: -- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) # <<<<<<<<<<<<<< -- * for i, value in enumerate(values): -- * format = self._format_for(value) -- */ -- __pyx_v_node_list->values = ((struct mpv_node *)malloc((__pyx_v_node_list->num * (sizeof(struct mpv_node))))); -- -- /* "vidcutter/libs/pympv/mpv.pyx":473 -- * node_list.values = NULL -- * node_list.keys = NULL -- * if node_list.num: # <<<<<<<<<<<<<< -- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -- * for i, value in enumerate(values): -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":475 -- * if node_list.num: -- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -- * for i, value in enumerate(values): # <<<<<<<<<<<<<< -- * format = self._format_for(value) -- * node = self._prep_native_value(value, format) -- */ -- __Pyx_INCREF(__pyx_int_0); -- __pyx_t_3 = __pyx_int_0; -- if (likely(PyList_CheckExact(__pyx_v_values)) || PyTuple_CheckExact(__pyx_v_values)) { -- __pyx_t_4 = __pyx_v_values; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0; -- __pyx_t_5 = NULL; -- } else { -- __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 475, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 475, __pyx_L1_error) -- } -- for (;;) { -- if (likely(!__pyx_t_5)) { -- if (likely(PyList_CheckExact(__pyx_t_4))) { -- if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break; -- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) -- #else -- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- #endif -- } else { -- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) -- #else -- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- #endif -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("get_property_async (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,0}; -+ PyObject* values[2] = {0,0}; -+ values[1] = ((PyObject *)Py_None); -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; - } -- } else { -- __pyx_t_6 = __pyx_t_5(__pyx_t_4); -- if (unlikely(!__pyx_t_6)) { -- PyObject* exc_type = PyErr_Occurred(); -- if (exc_type) { -- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -- else __PYX_ERR(0, 475, __pyx_L1_error) -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); -+ if (value) { values[1] = value; kw_args--; } - } -- break; - } -- __Pyx_GOTREF(__pyx_t_6); -- } -- __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); -- __pyx_t_6 = 0; -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); -- __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_DECREF(__pyx_t_3); -- __pyx_t_3 = __pyx_t_6; -- __pyx_t_6 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":476 -- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -- * for i, value in enumerate(values): -- * format = self._format_for(value) # <<<<<<<<<<<<<< -- * node = self._prep_native_value(value, format) -- * node_list.values[i] = node -- */ -- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 476, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_7, function); -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_property_async") < 0)) __PYX_ERR(0, 574, __pyx_L3_error) -+ } -+ } else { -+ switch (PyTuple_GET_SIZE(__pyx_args)) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ break; -+ default: goto __pyx_L5_argtuple_error; - } - } -- __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __pyx_t_9 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __pyx_v_format = __pyx_t_9; -- -- /* "vidcutter/libs/pympv/mpv.pyx":477 -- * for i, value in enumerate(values): -- * format = self._format_for(value) -- * node = self._prep_native_value(value, format) # <<<<<<<<<<<<<< -- * node_list.values[i] = node -- * return node_list -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_6); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":478 -- * format = self._format_for(value) -- * node = self._prep_native_value(value, format) -- * node_list.values[i] = node # <<<<<<<<<<<<<< -- * return node_list -- * -- */ -- __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) -- (__pyx_v_node_list->values[__pyx_t_10]) = __pyx_v_node; -- -- /* "vidcutter/libs/pympv/mpv.pyx":475 -- * if node_list.num: -- * node_list.values = malloc(node_list.num * sizeof(mpv_node)) -- * for i, value in enumerate(values): # <<<<<<<<<<<<<< -- * format = self._format_for(value) -- * node = self._prep_native_value(value, format) -- */ -+ __pyx_v_prop = values[0]; -+ __pyx_v_data = values[1]; - } -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":479 -- * node = self._prep_native_value(value, format) -- * node_list.values[i] = node -- * return node_list # <<<<<<<<<<<<<< -- * -- * cdef mpv_node_list* _prep_node_map(self, map): -- */ -- __pyx_r = __pyx_v_node_list; -- goto __pyx_L0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":466 -- * return MPV_FORMAT_NONE -- * -- * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< -- * cdef mpv_node node -- * cdef mpv_format format -- */ -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("get_property_async", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 574, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data); - - /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_node_list", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_i); -- __Pyx_XDECREF(__pyx_v_value); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":481 -- * return node_list -- * -- * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< -- * cdef char* ckey -- * cdef mpv_node_list* list -- */ -- --static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_map) { -- char *__pyx_v_ckey; -- struct mpv_node_list *__pyx_v_list; -- PyObject *__pyx_v_keys = NULL; -- PyObject *__pyx_v_i = NULL; -- PyObject *__pyx_v_key = NULL; -- struct mpv_node_list *__pyx_r; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data) { -+ uint64_t __pyx_v_id_data; -+ PyObject *__pyx_v_userdatas = NULL; -+ char const *__pyx_v_prop_c; -+ int __pyx_v_err; -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -- Py_ssize_t __pyx_t_4; -- int __pyx_t_5; -- PyObject *(*__pyx_t_6)(PyObject *); -+ Py_hash_t __pyx_t_4; -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -- char *__pyx_t_9; -- Py_ssize_t __pyx_t_10; -- Py_ssize_t __pyx_t_11; -+ int __pyx_t_8; -+ int __pyx_t_9; -+ char const *__pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_prep_node_map", 0); -+ __Pyx_RefNannySetupContext("get_property_async", 0); -+ __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":484 -- * cdef char* ckey -- * cdef mpv_node_list* list -- * list = self._prep_node_list(map.values()) # <<<<<<<<<<<<<< -- * keys = map.keys() -- * if not len(keys): -+ /* "vidcutter/libs/pympv/mpv.pyx":583 -+ * data: Value to be passed into the reply_userdata of the response event. -+ * Wraps: mpv_get_property_async""" -+ * assert self._ctx # <<<<<<<<<<<<<< -+ * prop = _strenc(prop) -+ * cdef uint64_t id_data = hash(data) - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 484, __pyx_L1_error) -+ #ifndef CYTHON_WITHOUT_ASSERTIONS -+ if (unlikely(!Py_OptimizeFlag)) { -+ if (unlikely(!(__pyx_v_self->_ctx != 0))) { -+ PyErr_SetNone(PyExc_AssertionError); -+ __PYX_ERR(0, 583, __pyx_L1_error) -+ } -+ } -+ #endif -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":584 -+ * Wraps: mpv_get_property_async""" -+ * assert self._ctx -+ * prop = _strenc(prop) # <<<<<<<<<<<<<< -+ * cdef uint64_t id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -@@ -10353,223 +11099,234 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":485 -- * cdef mpv_node_list* list -- * list = self._prep_node_list(map.values()) -- * keys = map.keys() # <<<<<<<<<<<<<< -- * if not len(keys): -- * return list -+ /* "vidcutter/libs/pympv/mpv.pyx":585 -+ * assert self._ctx -+ * prop = _strenc(prop) -+ * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is None: - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error) -+ __pyx_t_4 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 585, __pyx_L1_error) -+ __pyx_v_id_data = ((uint64_t)__pyx_t_4); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":586 -+ * prop = _strenc(prop) -+ * cdef uint64_t id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< -+ * if userdatas is None: -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ */ -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -+ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_5 = NULL; -+ __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); -+ __pyx_t_6 = 1; - } - } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ if (__pyx_t_5) { -+ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; -+ } -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); -+ __pyx_t_3 = 0; -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_keys = __pyx_t_1; -+ __pyx_v_userdatas = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":486 -- * list = self._prep_node_list(map.values()) -- * keys = map.keys() -- * if not len(keys): # <<<<<<<<<<<<<< -- * return list -- * list.keys = malloc(list.num) -+ /* "vidcutter/libs/pympv/mpv.pyx":587 -+ * cdef uint64_t id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is None: # <<<<<<<<<<<<<< -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ * userdatas.add() - */ -- __pyx_t_4 = PyObject_Length(__pyx_v_keys); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 486, __pyx_L1_error) -- __pyx_t_5 = ((!(__pyx_t_4 != 0)) != 0); -- if (__pyx_t_5) { -+ __pyx_t_8 = (__pyx_v_userdatas == Py_None); -+ __pyx_t_9 = (__pyx_t_8 != 0); -+ if (__pyx_t_9) { - -- /* "vidcutter/libs/pympv/mpv.pyx":487 -- * keys = map.keys() -- * if not len(keys): -- * return list # <<<<<<<<<<<<<< -- * list.keys = malloc(list.num) -- * for i, key in enumerate(keys): -+ /* "vidcutter/libs/pympv/mpv.pyx":588 -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is None: -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< -+ * userdatas.add() -+ * cdef const char* prop_c = prop - */ -- __pyx_r = __pyx_v_list; -- goto __pyx_L0; -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_7 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_7)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_7); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); -+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 588, __pyx_L1_error) -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":486 -- * list = self._prep_node_list(map.values()) -- * keys = map.keys() -- * if not len(keys): # <<<<<<<<<<<<<< -- * return list -- * list.keys = malloc(list.num) -+ /* "vidcutter/libs/pympv/mpv.pyx":587 -+ * cdef uint64_t id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is None: # <<<<<<<<<<<<<< -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ * userdatas.add() - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":488 -- * if not len(keys): -- * return list -- * list.keys = malloc(list.num) # <<<<<<<<<<<<<< -- * for i, key in enumerate(keys): -- * key = _strenc(key) -+ /* "vidcutter/libs/pympv/mpv.pyx":589 -+ * if userdatas is None: -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ * userdatas.add() # <<<<<<<<<<<<<< -+ * cdef const char* prop_c = prop -+ * with nogil: - */ -- __pyx_v_list->keys = ((char **)malloc(__pyx_v_list->num)); -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 589, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_7 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_7)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_7); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":489 -- * return list -- * list.keys = malloc(list.num) -- * for i, key in enumerate(keys): # <<<<<<<<<<<<<< -- * key = _strenc(key) -- * ckey = key -+ /* "vidcutter/libs/pympv/mpv.pyx":590 -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ * userdatas.add() -+ * cdef const char* prop_c = prop # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_get_property_async( - */ -- __Pyx_INCREF(__pyx_int_0); -- __pyx_t_1 = __pyx_int_0; -- if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) { -- __pyx_t_2 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; -- __pyx_t_6 = NULL; -- } else { -- __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 489, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 489, __pyx_L1_error) -- } -- for (;;) { -- if (likely(!__pyx_t_6)) { -- if (likely(PyList_CheckExact(__pyx_t_2))) { -- if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; -- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) -- #else -- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- #endif -- } else { -- if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) -- #else -- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- #endif -- } -- } else { -- __pyx_t_3 = __pyx_t_6(__pyx_t_2); -- if (unlikely(!__pyx_t_3)) { -- PyObject* exc_type = PyErr_Occurred(); -- if (exc_type) { -- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -- else __PYX_ERR(0, 489, __pyx_L1_error) -- } -- break; -- } -- __Pyx_GOTREF(__pyx_t_3); -- } -- __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3); -- __pyx_t_3 = 0; -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); -- __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_1); -- __pyx_t_1 = __pyx_t_3; -- __pyx_t_3 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":490 -- * list.keys = malloc(list.num) -- * for i, key in enumerate(keys): -- * key = _strenc(key) # <<<<<<<<<<<<<< -- * ckey = key -- * list.keys[i] = malloc(len(key) + 1) -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_strenc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_7, function); -- } -- } -- __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_3); -- __pyx_t_3 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":491 -- * for i, key in enumerate(keys): -- * key = _strenc(key) -- * ckey = key # <<<<<<<<<<<<<< -- * list.keys[i] = malloc(len(key) + 1) -- * strcpy(list.keys[i], ckey) -- */ -- __pyx_t_9 = __Pyx_PyObject_AsWritableString(__pyx_v_key); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 491, __pyx_L1_error) -- __pyx_v_ckey = __pyx_t_9; -+ __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L1_error) -+ __pyx_v_prop_c = __pyx_t_10; - -- /* "vidcutter/libs/pympv/mpv.pyx":492 -- * key = _strenc(key) -- * ckey = key -- * list.keys[i] = malloc(len(key) + 1) # <<<<<<<<<<<<<< -- * strcpy(list.keys[i], ckey) -- * return list -+ /* "vidcutter/libs/pympv/mpv.pyx":591 -+ * userdatas.add() -+ * cdef const char* prop_c = prop -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_get_property_async( -+ * self._ctx, - */ -- __pyx_t_10 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 492, __pyx_L1_error) -- __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L1_error) -- (__pyx_v_list->keys[__pyx_t_11]) = ((char *)malloc((__pyx_t_10 + 1))); -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":493 -- * ckey = key -- * list.keys[i] = malloc(len(key) + 1) -- * strcpy(list.keys[i], ckey) # <<<<<<<<<<<<<< -- * return list -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":592 -+ * cdef const char* prop_c = prop -+ * with nogil: -+ * err = mpv_get_property_async( # <<<<<<<<<<<<<< -+ * self._ctx, -+ * id_data, - */ -- __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error) -- (void)(strcpy((__pyx_v_list->keys[__pyx_t_10]), __pyx_v_ckey)); -+ __pyx_v_err = mpv_get_property_async(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_prop_c, MPV_FORMAT_NODE); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":489 -- * return list -- * list.keys = malloc(list.num) -- * for i, key in enumerate(keys): # <<<<<<<<<<<<<< -- * key = _strenc(key) -- * ckey = key -+ /* "vidcutter/libs/pympv/mpv.pyx":591 -+ * userdatas.add() -+ * cdef const char* prop_c = prop -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_get_property_async( -+ * self._ctx, - */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L6; -+ } -+ __pyx_L6:; -+ } - } -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":494 -- * list.keys[i] = malloc(len(key) + 1) -- * strcpy(list.keys[i], ckey) -- * return list # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":598 -+ * MPV_FORMAT_NODE, -+ * ) -+ * return err # <<<<<<<<<<<<<< - * -- * cdef mpv_node _prep_native_value(self, value, format): -+ * def try_get_property_async(self, prop, data=None, default=None): - */ -- __pyx_r = __pyx_v_list; -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":481 -- * return node_list -+ /* "vidcutter/libs/pympv/mpv.pyx":574 -+ * -+ * @_errors -+ * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< -+ * """Gets the value of a property asynchronously. - * -- * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< -- * cdef char* ckey -- * cdef mpv_node_list* list - */ - - /* function exit code */ -@@ -10577,618 +11334,539 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_node_map", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -- __pyx_r = 0; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_keys); -- __Pyx_XDECREF(__pyx_v_i); -- __Pyx_XDECREF(__pyx_v_key); -+ __Pyx_XDECREF(__pyx_v_userdatas); -+ __Pyx_XDECREF(__pyx_v_prop); -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":496 -- * return list -+/* "vidcutter/libs/pympv/mpv.pyx":600 -+ * return err - * -- * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< -- * cdef mpv_node node -- * node.format = format -+ * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< -+ * try: -+ * return self.get_property_async(prop, data=data) - */ - --static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_value, PyObject *__pyx_v_format) { -- struct mpv_node __pyx_v_node; -- struct mpv_node __pyx_r; -- __Pyx_RefNannyDeclarations -- enum mpv_format __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- int __pyx_t_4; -- PyObject *__pyx_t_5 = NULL; -- Py_ssize_t __pyx_t_6; -- char const *__pyx_t_7; -- int __pyx_t_8; -- int64_t __pyx_t_9; -- double __pyx_t_10; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_prop = 0; -+ PyObject *__pyx_v_data = 0; -+ PyObject *__pyx_v_default = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_prep_native_value", 0); -- __Pyx_INCREF(__pyx_v_value); -- -- /* "vidcutter/libs/pympv/mpv.pyx":498 -- * cdef mpv_node _prep_native_value(self, value, format): -- * cdef mpv_node node -- * node.format = format # <<<<<<<<<<<<<< -- * if format == MPV_FORMAT_STRING: -- * value = _strenc(value) -- */ -- __pyx_t_1 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L1_error) -- __pyx_v_node.format = __pyx_t_1; -- -- /* "vidcutter/libs/pympv/mpv.pyx":499 -- * cdef mpv_node node -- * node.format = format -- * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -- * value = _strenc(value) -- * node.u.string = malloc(len(value) + 1) -- */ -- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 499, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (__pyx_t_4) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":500 -- * node.format = format -- * if format == MPV_FORMAT_STRING: -- * value = _strenc(value) # <<<<<<<<<<<<<< -- * node.u.string = malloc(len(value) + 1) -- * strcpy(node.u.string, value) -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3); -- __pyx_t_3 = 0; -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("try_get_property_async (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,&__pyx_n_s_default,0}; -+ PyObject* values[3] = {0,0,0}; -+ values[1] = ((PyObject *)Py_None); -+ values[2] = ((PyObject *)Py_None); -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); -+ if (value) { values[1] = value; kw_args--; } -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); -+ if (value) { values[2] = value; kw_args--; } -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property_async") < 0)) __PYX_ERR(0, 600, __pyx_L3_error) -+ } -+ } else { -+ switch (PyTuple_GET_SIZE(__pyx_args)) { -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ } -+ __pyx_v_prop = values[0]; -+ __pyx_v_data = values[1]; -+ __pyx_v_default = values[2]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("try_get_property_async", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 600, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_async(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data, __pyx_v_default); - -- /* "vidcutter/libs/pympv/mpv.pyx":501 -- * if format == MPV_FORMAT_STRING: -- * value = _strenc(value) -- * node.u.string = malloc(len(value) + 1) # <<<<<<<<<<<<<< -- * strcpy(node.u.string, value) -- * elif format == MPV_FORMAT_FLAG: -- */ -- __pyx_t_6 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 501, __pyx_L1_error) -- __pyx_v_node.u.string = ((char *)malloc((__pyx_t_6 + 1))); -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":502 -- * value = _strenc(value) -- * node.u.string = malloc(len(value) + 1) -- * strcpy(node.u.string, value) # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_FLAG: -- * node.u.flag = 1 if value else 0 -- */ -- __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error) -- (void)(strcpy(__pyx_v_node.u.string, __pyx_t_7)); -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data, PyObject *__pyx_v_default) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ int __pyx_t_8; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("try_get_property_async", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":499 -- * cdef mpv_node node -- * node.format = format -- * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -- * value = _strenc(value) -- * node.u.string = malloc(len(value) + 1) -+ /* "vidcutter/libs/pympv/mpv.pyx":601 -+ * -+ * def try_get_property_async(self, prop, data=None, default=None): -+ * try: # <<<<<<<<<<<<<< -+ * return self.get_property_async(prop, data=data) -+ * except MPVError: - */ -- goto __pyx_L3; -- } -+ { -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); -+ __Pyx_XGOTREF(__pyx_t_1); -+ __Pyx_XGOTREF(__pyx_t_2); -+ __Pyx_XGOTREF(__pyx_t_3); -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":503 -- * node.u.string = malloc(len(value) + 1) -- * strcpy(node.u.string, value) -- * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -- * node.u.flag = 1 if value else 0 -- * elif format == MPV_FORMAT_INT64: -+ /* "vidcutter/libs/pympv/mpv.pyx":602 -+ * def try_get_property_async(self, prop, data=None, default=None): -+ * try: -+ * return self.get_property_async(prop, data=data) # <<<<<<<<<<<<<< -+ * except MPVError: -+ * return default - */ -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 503, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (__pyx_t_4) { -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L3_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 602, __pyx_L3_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_INCREF(__pyx_v_prop); -+ __Pyx_GIVEREF(__pyx_v_prop); -+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_prop); -+ __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 602, __pyx_L3_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 602, __pyx_L3_error) -+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 602, __pyx_L3_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_r = __pyx_t_7; -+ __pyx_t_7 = 0; -+ goto __pyx_L7_try_return; - -- /* "vidcutter/libs/pympv/mpv.pyx":504 -- * strcpy(node.u.string, value) -- * elif format == MPV_FORMAT_FLAG: -- * node.u.flag = 1 if value else 0 # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_INT64: -- * node.u.int64 = value -+ /* "vidcutter/libs/pympv/mpv.pyx":601 -+ * -+ * def try_get_property_async(self, prop, data=None, default=None): -+ * try: # <<<<<<<<<<<<<< -+ * return self.get_property_async(prop, data=data) -+ * except MPVError: - */ -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 504, __pyx_L1_error) -- if (__pyx_t_4) { -- __pyx_t_8 = 1; -- } else { -- __pyx_t_8 = 0; - } -- __pyx_v_node.u.flag = __pyx_t_8; -+ __pyx_L3_error:; -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":503 -- * node.u.string = malloc(len(value) + 1) -- * strcpy(node.u.string, value) -- * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -- * node.u.flag = 1 if value else 0 -- * elif format == MPV_FORMAT_INT64: -+ /* "vidcutter/libs/pympv/mpv.pyx":603 -+ * try: -+ * return self.get_property_async(prop, data=data) -+ * except MPVError: # <<<<<<<<<<<<<< -+ * return default -+ * - */ -- goto __pyx_L3; -- } -+ __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_4); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5); -+ __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; -+ if (__pyx_t_8) { -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 603, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_GOTREF(__pyx_t_7); - -- /* "vidcutter/libs/pympv/mpv.pyx":505 -- * elif format == MPV_FORMAT_FLAG: -- * node.u.flag = 1 if value else 0 -- * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -- * node.u.int64 = value -- * elif format == MPV_FORMAT_DOUBLE: -+ /* "vidcutter/libs/pympv/mpv.pyx":604 -+ * return self.get_property_async(prop, data=data) -+ * except MPVError: -+ * return default # <<<<<<<<<<<<<< -+ * -+ * def try_get_property(self, prop, default=None): - */ -- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 505, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (__pyx_t_4) { -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_default); -+ __pyx_r = __pyx_v_default; -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ goto __pyx_L6_except_return; -+ } -+ goto __pyx_L5_except_error; -+ __pyx_L5_except_error:; - -- /* "vidcutter/libs/pympv/mpv.pyx":506 -- * node.u.flag = 1 if value else 0 -- * elif format == MPV_FORMAT_INT64: -- * node.u.int64 = value # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_DOUBLE: -- * node.u.double_ = value -+ /* "vidcutter/libs/pympv/mpv.pyx":601 -+ * -+ * def try_get_property_async(self, prop, data=None, default=None): -+ * try: # <<<<<<<<<<<<<< -+ * return self.get_property_async(prop, data=data) -+ * except MPVError: - */ -- __pyx_t_9 = __Pyx_PyInt_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_9 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) -- __pyx_v_node.u.int64 = __pyx_t_9; -- -- /* "vidcutter/libs/pympv/mpv.pyx":505 -- * elif format == MPV_FORMAT_FLAG: -- * node.u.flag = 1 if value else 0 -- * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -- * node.u.int64 = value -- * elif format == MPV_FORMAT_DOUBLE: -- */ -- goto __pyx_L3; -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":507 -- * elif format == MPV_FORMAT_INT64: -- * node.u.int64 = value -- * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -- * node.u.double_ = value -- * elif format == MPV_FORMAT_NODE_ARRAY: -- */ -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 507, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 507, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (__pyx_t_4) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":508 -- * node.u.int64 = value -- * elif format == MPV_FORMAT_DOUBLE: -- * node.u.double_ = value # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_NODE_ARRAY: -- * node.u.list = self._prep_node_list(value) -- */ -- __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 508, __pyx_L1_error) -- __pyx_v_node.u.double_ = __pyx_t_10; -- -- /* "vidcutter/libs/pympv/mpv.pyx":507 -- * elif format == MPV_FORMAT_INT64: -- * node.u.int64 = value -- * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -- * node.u.double_ = value -- * elif format == MPV_FORMAT_NODE_ARRAY: -- */ -- goto __pyx_L3; -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":509 -- * elif format == MPV_FORMAT_DOUBLE: -- * node.u.double_ = value -- * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -- * node.u.list = self._prep_node_list(value) -- * elif format == MPV_FORMAT_NODE_MAP: -- */ -- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 509, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 509, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (__pyx_t_4) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":510 -- * node.u.double_ = value -- * elif format == MPV_FORMAT_NODE_ARRAY: -- * node.u.list = self._prep_node_list(value) # <<<<<<<<<<<<<< -- * elif format == MPV_FORMAT_NODE_MAP: -- * node.u.list = self._prep_node_map(value) -- */ -- __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_v_value); -- -- /* "vidcutter/libs/pympv/mpv.pyx":509 -- * elif format == MPV_FORMAT_DOUBLE: -- * node.u.double_ = value -- * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -- * node.u.list = self._prep_node_list(value) -- * elif format == MPV_FORMAT_NODE_MAP: -- */ -- goto __pyx_L3; -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":511 -- * elif format == MPV_FORMAT_NODE_ARRAY: -- * node.u.list = self._prep_node_list(value) -- * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -- * node.u.list = self._prep_node_map(value) -- * else: -- */ -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 511, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (__pyx_t_4) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":512 -- * node.u.list = self._prep_node_list(value) -- * elif format == MPV_FORMAT_NODE_MAP: -- * node.u.list = self._prep_node_map(value) # <<<<<<<<<<<<<< -- * else: -- * node.format = MPV_FORMAT_NONE -- */ -- __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_map(__pyx_v_self, __pyx_v_value); -- -- /* "vidcutter/libs/pympv/mpv.pyx":511 -- * elif format == MPV_FORMAT_NODE_ARRAY: -- * node.u.list = self._prep_node_list(value) -- * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -- * node.u.list = self._prep_node_map(value) -- * else: -- */ -- goto __pyx_L3; -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":514 -- * node.u.list = self._prep_node_map(value) -- * else: -- * node.format = MPV_FORMAT_NONE # <<<<<<<<<<<<<< -- * return node -- * -- */ -- /*else*/ { -- __pyx_v_node.format = MPV_FORMAT_NONE; -+ __Pyx_XGIVEREF(__pyx_t_1); -+ __Pyx_XGIVEREF(__pyx_t_2); -+ __Pyx_XGIVEREF(__pyx_t_3); -+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -+ goto __pyx_L1_error; -+ __pyx_L7_try_return:; -+ __Pyx_XGIVEREF(__pyx_t_1); -+ __Pyx_XGIVEREF(__pyx_t_2); -+ __Pyx_XGIVEREF(__pyx_t_3); -+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -+ goto __pyx_L0; -+ __pyx_L6_except_return:; -+ __Pyx_XGIVEREF(__pyx_t_1); -+ __Pyx_XGIVEREF(__pyx_t_2); -+ __Pyx_XGIVEREF(__pyx_t_3); -+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -+ goto __pyx_L0; - } -- __pyx_L3:; -- -- /* "vidcutter/libs/pympv/mpv.pyx":515 -- * else: -- * node.format = MPV_FORMAT_NONE -- * return node # <<<<<<<<<<<<<< -- * -- * cdef _free_native_value(self, mpv_node node): -- */ -- __pyx_r = __pyx_v_node; -- goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":496 -- * return list -+ /* "vidcutter/libs/pympv/mpv.pyx":600 -+ * return err - * -- * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< -- * cdef mpv_node node -- * node.format = format -+ * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< -+ * try: -+ * return self.get_property_async(prop, data=data) - */ - - /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context._prep_native_value", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -- __Pyx_pretend_to_initialize(&__pyx_r); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_value); -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":517 -- * return node -+/* "vidcutter/libs/pympv/mpv.pyx":606 -+ * return default - * -- * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< -- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): -- * for i in range(node.u.list.num): -+ * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< -+ * try: -+ * return self.get_property(prop) - */ - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, struct mpv_node __pyx_v_node) { -- int __pyx_v_i; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- int __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_t_5; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_prop = 0; -+ PyObject *__pyx_v_default = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_free_native_value", 0); -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("try_get_property (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_default,0}; -+ PyObject* values[2] = {0,0}; -+ values[1] = ((PyObject *)Py_None); -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); -+ if (value) { values[1] = value; kw_args--; } -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property") < 0)) __PYX_ERR(0, 606, __pyx_L3_error) -+ } -+ } else { -+ switch (PyTuple_GET_SIZE(__pyx_args)) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ } -+ __pyx_v_prop = values[0]; -+ __pyx_v_default = values[1]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("try_get_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 606, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_default); - -- /* "vidcutter/libs/pympv/mpv.pyx":518 -- * -- * cdef _free_native_value(self, mpv_node node): -- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< -- * for i in range(node.u.list.num): -- * self._free_native_value(node.u.list.values[i]) -- */ -- switch (__pyx_v_node.format) { -- case MPV_FORMAT_NODE_ARRAY: -- case MPV_FORMAT_NODE_MAP: -- -- /* "vidcutter/libs/pympv/mpv.pyx":519 -- * cdef _free_native_value(self, mpv_node node): -- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): -- * for i in range(node.u.list.num): # <<<<<<<<<<<<<< -- * self._free_native_value(node.u.list.values[i]) -- * free(node.u.list.values) -- */ -- __pyx_t_1 = __pyx_v_node.u.list->num; -- __pyx_t_2 = __pyx_t_1; -- for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { -- __pyx_v_i = __pyx_t_3; -- -- /* "vidcutter/libs/pympv/mpv.pyx":520 -- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): -- * for i in range(node.u.list.num): -- * self._free_native_value(node.u.list.values[i]) # <<<<<<<<<<<<<< -- * free(node.u.list.values) -- * if node.format == MPV_FORMAT_NODE_MAP: -- */ -- __pyx_t_4 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, (__pyx_v_node.u.list->values[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":521 -- * for i in range(node.u.list.num): -- * self._free_native_value(node.u.list.values[i]) -- * free(node.u.list.values) # <<<<<<<<<<<<<< -- * if node.format == MPV_FORMAT_NODE_MAP: -- * for i in range(node.u.list.num): -- */ -- free(__pyx_v_node.u.list->values); -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":522 -- * self._free_native_value(node.u.list.values[i]) -- * free(node.u.list.values) -- * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -- * for i in range(node.u.list.num): -- * free(node.u.list.keys[i]) -- */ -- __pyx_t_5 = ((__pyx_v_node.format == MPV_FORMAT_NODE_MAP) != 0); -- if (__pyx_t_5) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_default) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ int __pyx_t_8; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("try_get_property", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":523 -- * free(node.u.list.values) -- * if node.format == MPV_FORMAT_NODE_MAP: -- * for i in range(node.u.list.num): # <<<<<<<<<<<<<< -- * free(node.u.list.keys[i]) -- * free(node.u.list.keys) -+ /* "vidcutter/libs/pympv/mpv.pyx":607 -+ * -+ * def try_get_property(self, prop, default=None): -+ * try: # <<<<<<<<<<<<<< -+ * return self.get_property(prop) -+ * except MPVError: - */ -- __pyx_t_1 = __pyx_v_node.u.list->num; -- __pyx_t_2 = __pyx_t_1; -- for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { -- __pyx_v_i = __pyx_t_3; -+ { -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); -+ __Pyx_XGOTREF(__pyx_t_1); -+ __Pyx_XGOTREF(__pyx_t_2); -+ __Pyx_XGOTREF(__pyx_t_3); -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":524 -- * if node.format == MPV_FORMAT_NODE_MAP: -- * for i in range(node.u.list.num): -- * free(node.u.list.keys[i]) # <<<<<<<<<<<<<< -- * free(node.u.list.keys) -- * free(node.u.list) -+ /* "vidcutter/libs/pympv/mpv.pyx":608 -+ * def try_get_property(self, prop, default=None): -+ * try: -+ * return self.get_property(prop) # <<<<<<<<<<<<<< -+ * except MPVError: -+ * return default - */ -- free((__pyx_v_node.u.list->keys[__pyx_v_i])); -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L3_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_6 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); -+ if (likely(__pyx_t_6)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_6); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_5, function); -+ } - } -+ __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_prop); -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L3_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __pyx_r = __pyx_t_4; -+ __pyx_t_4 = 0; -+ goto __pyx_L7_try_return; - -- /* "vidcutter/libs/pympv/mpv.pyx":525 -- * for i in range(node.u.list.num): -- * free(node.u.list.keys[i]) -- * free(node.u.list.keys) # <<<<<<<<<<<<<< -- * free(node.u.list) -- * elif node.format == MPV_FORMAT_STRING: -- */ -- free(__pyx_v_node.u.list->keys); -- -- /* "vidcutter/libs/pympv/mpv.pyx":522 -- * self._free_native_value(node.u.list.values[i]) -- * free(node.u.list.values) -- * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -- * for i in range(node.u.list.num): -- * free(node.u.list.keys[i]) -+ /* "vidcutter/libs/pympv/mpv.pyx":607 -+ * -+ * def try_get_property(self, prop, default=None): -+ * try: # <<<<<<<<<<<<<< -+ * return self.get_property(prop) -+ * except MPVError: - */ - } -+ __pyx_L3_error:; -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":526 -- * free(node.u.list.keys[i]) -- * free(node.u.list.keys) -- * free(node.u.list) # <<<<<<<<<<<<<< -- * elif node.format == MPV_FORMAT_STRING: -- * free(node.u.string) -- */ -- free(__pyx_v_node.u.list); -- -- /* "vidcutter/libs/pympv/mpv.pyx":518 -+ /* "vidcutter/libs/pympv/mpv.pyx":609 -+ * try: -+ * return self.get_property(prop) -+ * except MPVError: # <<<<<<<<<<<<<< -+ * return default - * -- * cdef _free_native_value(self, mpv_node node): -- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< -- * for i in range(node.u.list.num): -- * self._free_native_value(node.u.list.values[i]) - */ -- break; -- case MPV_FORMAT_STRING: -+ __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 609, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6); -+ __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; -+ if (__pyx_t_8) { -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 609, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_GOTREF(__pyx_t_4); - -- /* "vidcutter/libs/pympv/mpv.pyx":528 -- * free(node.u.list) -- * elif node.format == MPV_FORMAT_STRING: -- * free(node.u.string) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":610 -+ * return self.get_property(prop) -+ * except MPVError: -+ * return default # <<<<<<<<<<<<<< - * -- * def command(self, *cmdlist, asynchronous=False, data=None): -+ * def get_property(self, prop): - */ -- free(__pyx_v_node.u.string); -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_default); -+ __pyx_r = __pyx_v_default; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ goto __pyx_L6_except_return; -+ } -+ goto __pyx_L5_except_error; -+ __pyx_L5_except_error:; - -- /* "vidcutter/libs/pympv/mpv.pyx":527 -- * free(node.u.list.keys) -- * free(node.u.list) -- * elif node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -- * free(node.u.string) -+ /* "vidcutter/libs/pympv/mpv.pyx":607 - * -+ * def try_get_property(self, prop, default=None): -+ * try: # <<<<<<<<<<<<<< -+ * return self.get_property(prop) -+ * except MPVError: - */ -- break; -- default: break; -+ __Pyx_XGIVEREF(__pyx_t_1); -+ __Pyx_XGIVEREF(__pyx_t_2); -+ __Pyx_XGIVEREF(__pyx_t_3); -+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -+ goto __pyx_L1_error; -+ __pyx_L7_try_return:; -+ __Pyx_XGIVEREF(__pyx_t_1); -+ __Pyx_XGIVEREF(__pyx_t_2); -+ __Pyx_XGIVEREF(__pyx_t_3); -+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -+ goto __pyx_L0; -+ __pyx_L6_except_return:; -+ __Pyx_XGIVEREF(__pyx_t_1); -+ __Pyx_XGIVEREF(__pyx_t_2); -+ __Pyx_XGIVEREF(__pyx_t_3); -+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -+ goto __pyx_L0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":517 -- * return node -+ /* "vidcutter/libs/pympv/mpv.pyx":606 -+ * return default - * -- * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< -- * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): -- * for i in range(node.u.list.num): -+ * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< -+ * try: -+ * return self.get_property(prop) - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context._free_native_value", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":530 -- * free(node.u.string) -- * -- * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< -- * """Send a command to mpv. -+/* "vidcutter/libs/pympv/mpv.pyx":612 -+ * return default - * -+ * def get_property(self, prop): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_get_property""" -+ * assert self._ctx - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13command(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_12command[] = "Send a command to mpv.\n\n Non-async success returns the command's response data, otherwise None\n\n Arguments:\n Accepts parameters as args\n\n Keyword Arguments:\n asynchronous: True will return right away, status comes in as MPV_EVENT_COMMAND_REPLY\n data: Only valid if async, gets sent back as reply_userdata in the Event\n\n Wraps: mpv_command_node and mpv_command_node_async\n "; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13command(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_asynchronous = 0; -- PyObject *__pyx_v_data = 0; -- PyObject *__pyx_v_cmdlist = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_17get_property(PyObject *__pyx_v_self, PyObject *__pyx_v_prop); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_16get_property[] = "Wraps: mpv_get_property"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_17get_property(PyObject *__pyx_v_self, PyObject *__pyx_v_prop) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("command (wrapper)", 0); -- if (PyTuple_GET_SIZE(__pyx_args) > 0) { -- __pyx_v_cmdlist = PyTuple_GetSlice(__pyx_args, 0, PyTuple_GET_SIZE(__pyx_args)); -- if (unlikely(!__pyx_v_cmdlist)) { -- __Pyx_RefNannyFinishContext(); -- return NULL; -- } -- __Pyx_GOTREF(__pyx_v_cmdlist); -- } else { -- __pyx_v_cmdlist = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); -- } -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asynchronous,&__pyx_n_s_data,0}; -- PyObject* values[2] = {0,0}; -- values[0] = ((PyObject *)Py_False); -- values[1] = ((PyObject *)Py_None); -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- default: -- case 0: break; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- if (kw_args > 0 && likely(kw_args <= 2)) { -- Py_ssize_t index; -- for (index = 0; index < 2 && kw_args > 0; index++) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); -- if (value) { values[index] = value; kw_args--; } -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "command") < 0)) __PYX_ERR(0, 530, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { -- goto __pyx_L5_argtuple_error; -- } else { -- } -- __pyx_v_asynchronous = values[0]; -- __pyx_v_data = values[1]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("command", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 530, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_DECREF(__pyx_v_cmdlist); __pyx_v_cmdlist = 0; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_asynchronous, __pyx_v_data, __pyx_v_cmdlist); -+ __Pyx_RefNannySetupContext("get_property (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_prop)); - - /* function exit code */ -- __Pyx_XDECREF(__pyx_v_cmdlist); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data, PyObject *__pyx_v_cmdlist) { -- struct mpv_node __pyx_v_node; -- struct mpv_node __pyx_v_noderesult; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop) { -+ struct mpv_node __pyx_v_result; -+ char const *__pyx_v_prop_c; - int __pyx_v_err; -- uint64_t __pyx_v_data_id; -- PyObject *__pyx_v_result = NULL; -- PyObject *__pyx_v_userdatas = NULL; -+ PyObject *__pyx_v_v = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -- uint64_t __pyx_t_4; -+ char const *__pyx_t_4; - int __pyx_t_5; -- int __pyx_t_6; -+ PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - char const *__pyx_t_9; -@@ -11198,41 +11876,39 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(struct __pyx_ - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; -- PyObject *__pyx_t_16 = NULL; -- PyObject *__pyx_t_17 = NULL; -- char const *__pyx_t_18; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("command", 0); -+ __Pyx_RefNannySetupContext("get_property", 0); -+ __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":544 -- * Wraps: mpv_command_node and mpv_command_node_async -- * """ -+ /* "vidcutter/libs/pympv/mpv.pyx":614 -+ * def get_property(self, prop): -+ * """Wraps: mpv_get_property""" - * assert self._ctx # <<<<<<<<<<<<<< -- * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) -- * cdef mpv_node noderesult -+ * cdef mpv_node result -+ * prop = _strenc(prop) - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 544, __pyx_L1_error) -+ __PYX_ERR(0, 614, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":545 -- * """ -+ /* "vidcutter/libs/pympv/mpv.pyx":616 - * assert self._ctx -- * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) # <<<<<<<<<<<<<< -- * cdef mpv_node noderesult -+ * cdef mpv_node result -+ * prop = _strenc(prop) # <<<<<<<<<<<<<< -+ * cdef const char* prop_c = prop - * cdef int err - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -@@ -11241,625 +11917,332 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12command(struct __pyx_ - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_cmdlist) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cmdlist); -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_cmdlist, __pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":549 -+ /* "vidcutter/libs/pympv/mpv.pyx":617 -+ * cdef mpv_node result -+ * prop = _strenc(prop) -+ * cdef const char* prop_c = prop # <<<<<<<<<<<<<< - * cdef int err -- * cdef uint64_t data_id -- * result = None # <<<<<<<<<<<<<< -- * try: -- * data_id = id(data) -- */ -- __Pyx_INCREF(Py_None); -- __pyx_v_result = Py_None; -- -- /* "vidcutter/libs/pympv/mpv.pyx":550 -- * cdef uint64_t data_id -- * result = None -- * try: # <<<<<<<<<<<<<< -- * data_id = id(data) -- * if not asynchronous: -+ * with nogil: - */ -- /*try:*/ { -+ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 617, __pyx_L1_error) -+ __pyx_v_prop_c = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":551 -- * result = None -- * try: -- * data_id = id(data) # <<<<<<<<<<<<<< -- * if not asynchronous: -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":619 -+ * cdef const char* prop_c = prop -+ * cdef int err -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_get_property( -+ * self._ctx, - */ -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 551, __pyx_L4_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_data_id = __pyx_t_4; -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":552 -- * try: -- * data_id = id(data) -- * if not asynchronous: # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_command_node(self._ctx, &node, &noderesult) -+ /* "vidcutter/libs/pympv/mpv.pyx":620 -+ * cdef int err -+ * with nogil: -+ * err = mpv_get_property( # <<<<<<<<<<<<<< -+ * self._ctx, -+ * prop_c, - */ -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 552, __pyx_L4_error) -- __pyx_t_6 = ((!__pyx_t_5) != 0); -- if (__pyx_t_6) { -+ __pyx_v_err = mpv_get_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_result)); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":553 -- * data_id = id(data) -- * if not asynchronous: -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_command_node(self._ctx, &node, &noderesult) -- * try: -+ /* "vidcutter/libs/pympv/mpv.pyx":619 -+ * cdef const char* prop_c = prop -+ * cdef int err -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_get_property( -+ * self._ctx, - */ -- { -+ /*finally:*/ { -+ /*normal exit:*/{ - #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS - #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":554 -- * if not asynchronous: -- * with nogil: -- * err = mpv_command_node(self._ctx, &node, &noderesult) # <<<<<<<<<<<<<< -- * try: -- * result = _convert_node_value(noderesult) if err >= 0 else None -- */ -- __pyx_v_err = mpv_command_node(__pyx_v_self->_ctx, (&__pyx_v_node), (&__pyx_v_noderesult)); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":553 -- * data_id = id(data) -- * if not asynchronous: -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_command_node(self._ctx, &node, &noderesult) -- * try: -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L9; -- } -- __pyx_L9:; -- } -+ goto __pyx_L5; -+ } -+ __pyx_L5:; - } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":555 -- * with nogil: -- * err = mpv_command_node(self._ctx, &node, &noderesult) -- * try: # <<<<<<<<<<<<<< -- * result = _convert_node_value(noderesult) if err >= 0 else None -- * finally: -+ /* "vidcutter/libs/pympv/mpv.pyx":626 -+ * &result, -+ * ) -+ * if err < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(err) -+ * try: - */ -- /*try:*/ { -+ __pyx_t_5 = ((__pyx_v_err < 0) != 0); -+ if (unlikely(__pyx_t_5)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":556 -- * err = mpv_command_node(self._ctx, &node, &noderesult) -- * try: -- * result = _convert_node_value(noderesult) if err >= 0 else None # <<<<<<<<<<<<<< -- * finally: -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":627 -+ * ) -+ * if err < 0: -+ * raise MPVError(err) # <<<<<<<<<<<<<< -+ * try: -+ * v = _convert_node_value(result) - */ -- if (((__pyx_v_err >= 0) != 0)) { -- __pyx_t_2 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_noderesult); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L11_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __pyx_t_2; -- __pyx_t_2 = 0; -- } else { -- __Pyx_INCREF(Py_None); -- __pyx_t_1 = Py_None; -- } -- __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1); -- __pyx_t_1 = 0; -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 627, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_6 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_6)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_6); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); - } -+ } -+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(0, 627, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":558 -- * result = _convert_node_value(noderesult) if err >= 0 else None -- * finally: -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_free_node_contents(&noderesult) -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":626 -+ * &result, -+ * ) -+ * if err < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(err) -+ * try: - */ -- /*finally:*/ { -- /*normal exit:*/{ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":559 -- * finally: -- * with nogil: -- * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< -- * else: -- * userdatas = self.reply_userdata.get(data_id, None) -+ /* "vidcutter/libs/pympv/mpv.pyx":628 -+ * if err < 0: -+ * raise MPVError(err) -+ * try: # <<<<<<<<<<<<<< -+ * v = _convert_node_value(result) -+ * finally: - */ -- mpv_free_node_contents((&__pyx_v_noderesult)); -- } -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":558 -- * result = _convert_node_value(noderesult) if err >= 0 else None -- * finally: -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_free_node_contents(&noderesult) -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":629 -+ * raise MPVError(err) -+ * try: -+ * v = _convert_node_value(result) # <<<<<<<<<<<<<< -+ * finally: -+ * with nogil: - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L15; -- } -- __pyx_L15:; -- } -- } -- goto __pyx_L12; -- } -- __pyx_L11_error:; -- /*exception exit:*/{ -- __Pyx_PyThreadState_declare -- __Pyx_PyThreadState_assign -- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); -- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); -- __Pyx_XGOTREF(__pyx_t_10); -- __Pyx_XGOTREF(__pyx_t_11); -- __Pyx_XGOTREF(__pyx_t_12); -- __Pyx_XGOTREF(__pyx_t_13); -- __Pyx_XGOTREF(__pyx_t_14); -- __Pyx_XGOTREF(__pyx_t_15); -- __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; -- { -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L8_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v_v = __pyx_t_1; -+ __pyx_t_1 = 0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":559 -- * finally: -- * with nogil: -- * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< -- * else: -- * userdatas = self.reply_userdata.get(data_id, None) -+ /* "vidcutter/libs/pympv/mpv.pyx":631 -+ * v = _convert_node_value(result) -+ * finally: -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_free_node_contents(&result) -+ * return v - */ -- mpv_free_node_contents((&__pyx_v_noderesult)); -- } -+ /*finally:*/ { -+ /*normal exit:*/{ -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":558 -- * result = _convert_node_value(noderesult) if err >= 0 else None -- * finally: -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_free_node_contents(&noderesult) -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":632 -+ * finally: -+ * with nogil: -+ * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< -+ * return v -+ * - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L20; -- } -- __pyx_L20:; -- } -- } -- } -- if (PY_MAJOR_VERSION >= 3) { -- __Pyx_XGIVEREF(__pyx_t_13); -- __Pyx_XGIVEREF(__pyx_t_14); -- __Pyx_XGIVEREF(__pyx_t_15); -- __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); -+ mpv_free_node_contents((&__pyx_v_result)); - } -- __Pyx_XGIVEREF(__pyx_t_10); -- __Pyx_XGIVEREF(__pyx_t_11); -- __Pyx_XGIVEREF(__pyx_t_12); -- __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); -- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; -- __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; -- goto __pyx_L4_error; -- } -- __pyx_L12:; -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":552 -- * try: -- * data_id = id(data) -- * if not asynchronous: # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_command_node(self._ctx, &node, &noderesult) -+ /* "vidcutter/libs/pympv/mpv.pyx":631 -+ * v = _convert_node_value(result) -+ * finally: -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_free_node_contents(&result) -+ * return v - */ -- goto __pyx_L6; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L12; -+ } -+ __pyx_L12:; -+ } -+ } -+ goto __pyx_L9; - } -+ __pyx_L8_error:; -+ /*exception exit:*/{ -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); -+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); -+ __Pyx_XGOTREF(__pyx_t_10); -+ __Pyx_XGOTREF(__pyx_t_11); -+ __Pyx_XGOTREF(__pyx_t_12); -+ __Pyx_XGOTREF(__pyx_t_13); -+ __Pyx_XGOTREF(__pyx_t_14); -+ __Pyx_XGOTREF(__pyx_t_15); -+ __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; -+ { -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":561 -- * mpv_free_node_contents(&noderesult) -- * else: -- * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< -- * if userdatas is None: -- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -+ /* "vidcutter/libs/pympv/mpv.pyx":632 -+ * finally: -+ * with nogil: -+ * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< -+ * return v -+ * - */ -- /*else*/ { -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 561, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_16 = NULL; -- __pyx_t_8 = 0; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_16)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_16); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- __pyx_t_8 = 1; -- } -- } -- #if CYTHON_FAST_PYCALL -- if (PyFunction_Check(__pyx_t_2)) { -- PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) -- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- } else -- #endif -- #if CYTHON_FAST_PYCCALL -- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -- PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) -- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- } else -- #endif -- { -- __pyx_t_17 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 561, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_17); -- if (__pyx_t_16) { -- __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL; -- } -- __Pyx_GIVEREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_8, __pyx_t_3); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_8, Py_None); -- __pyx_t_3 = 0; -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -- } -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_userdatas = __pyx_t_1; -- __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":562 -- * else: -- * userdatas = self.reply_userdata.get(data_id, None) -- * if userdatas is None: # <<<<<<<<<<<<<< -- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- */ -- __pyx_t_6 = (__pyx_v_userdatas == Py_None); -- __pyx_t_5 = (__pyx_t_6 != 0); -- if (__pyx_t_5) { -+ mpv_free_node_contents((&__pyx_v_result)); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":563 -- * userdatas = self.reply_userdata.get(data_id, None) -- * if userdatas is None: -- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< -- * userdatas.add() -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":631 -+ * v = _convert_node_value(result) -+ * finally: -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_free_node_contents(&result) -+ * return v - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_17 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_17)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_17); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L17; -+ } -+ __pyx_L17:; -+ } - } -- __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_17, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); -- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 563, __pyx_L4_error) -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":562 -- * else: -- * userdatas = self.reply_userdata.get(data_id, None) -- * if userdatas is None: # <<<<<<<<<<<<<< -- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- */ - } -- -- /* "vidcutter/libs/pympv/mpv.pyx":564 -- * if userdatas is None: -- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_command_node_async(self._ctx, data_id, &node) -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_17 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_17)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_17); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -+ if (PY_MAJOR_VERSION >= 3) { -+ __Pyx_XGIVEREF(__pyx_t_13); -+ __Pyx_XGIVEREF(__pyx_t_14); -+ __Pyx_XGIVEREF(__pyx_t_15); -+ __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); - } -- __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_XGIVEREF(__pyx_t_10); -+ __Pyx_XGIVEREF(__pyx_t_11); -+ __Pyx_XGIVEREF(__pyx_t_12); -+ __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); -+ __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; -+ __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; -+ goto __pyx_L1_error; -+ } -+ __pyx_L9:; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":565 -- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_command_node_async(self._ctx, data_id, &node) -- * finally: -+ /* "vidcutter/libs/pympv/mpv.pyx":633 -+ * with nogil: -+ * mpv_free_node_contents(&result) -+ * return v # <<<<<<<<<<<<<< -+ * -+ * @_errors - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v_v); -+ __pyx_r = __pyx_v_v; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":566 -- * userdatas.add() -- * with nogil: -- * err = mpv_command_node_async(self._ctx, data_id, &node) # <<<<<<<<<<<<<< -- * finally: -- * self._free_native_value(node) -+ /* "vidcutter/libs/pympv/mpv.pyx":612 -+ * return default -+ * -+ * def get_property(self, prop): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_get_property""" -+ * assert self._ctx - */ -- __pyx_v_err = mpv_command_node_async(__pyx_v_self->_ctx, __pyx_v_data_id, (&__pyx_v_node)); -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":565 -- * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_command_node_async(self._ctx, data_id, &node) -- * finally: -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L24; -- } -- __pyx_L24:; -- } -- } -- } -- __pyx_L6:; -- } -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_v); -+ __Pyx_XDECREF(__pyx_v_prop); -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":568 -- * err = mpv_command_node_async(self._ctx, data_id, &node) -- * finally: -- * self._free_native_value(node) # <<<<<<<<<<<<<< -- * if err < 0: -- * raise MPVError(err) -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- goto __pyx_L5; -- } -- __pyx_L4_error:; -- /*exception exit:*/{ -- __Pyx_PyThreadState_declare -- __Pyx_PyThreadState_assign -- __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; -- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; -- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); -- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13); -- __Pyx_XGOTREF(__pyx_t_15); -- __Pyx_XGOTREF(__pyx_t_14); -- __Pyx_XGOTREF(__pyx_t_13); -- __Pyx_XGOTREF(__pyx_t_12); -- __Pyx_XGOTREF(__pyx_t_11); -- __Pyx_XGOTREF(__pyx_t_10); -- __pyx_t_8 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_18 = __pyx_filename; -- { -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L26_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- } -- if (PY_MAJOR_VERSION >= 3) { -- __Pyx_XGIVEREF(__pyx_t_12); -- __Pyx_XGIVEREF(__pyx_t_11); -- __Pyx_XGIVEREF(__pyx_t_10); -- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); -- } -- __Pyx_XGIVEREF(__pyx_t_15); -- __Pyx_XGIVEREF(__pyx_t_14); -- __Pyx_XGIVEREF(__pyx_t_13); -- __Pyx_ErrRestore(__pyx_t_15, __pyx_t_14, __pyx_t_13); -- __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; -- __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_18; -- goto __pyx_L1_error; -- __pyx_L26_error:; -- if (PY_MAJOR_VERSION >= 3) { -- __Pyx_XGIVEREF(__pyx_t_12); -- __Pyx_XGIVEREF(__pyx_t_11); -- __Pyx_XGIVEREF(__pyx_t_10); -- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); -- } -- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; -- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; -- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; -- __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; -- goto __pyx_L1_error; -- } -- __pyx_L5:; -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":569 -- * finally: -- * self._free_native_value(node) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * return result -- */ -- __pyx_t_5 = ((__pyx_v_err < 0) != 0); -- if (unlikely(__pyx_t_5)) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":570 -- * self._free_native_value(node) -- * if err < 0: -- * raise MPVError(err) # <<<<<<<<<<<<<< -- * return result -- * -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 570, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_17); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_17) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 570, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":569 -- * finally: -- * self._free_native_value(node) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * return result -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":571 -- * if err < 0: -- * raise MPVError(err) -- * return result # <<<<<<<<<<<<<< -- * -- * @_errors -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_result); -- __pyx_r = __pyx_v_result; -- goto __pyx_L0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":530 -- * free(node.u.string) -- * -- * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< -- * """Send a command to mpv. -- * -- */ -- -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_16); -- __Pyx_XDECREF(__pyx_t_17); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_result); -- __Pyx_XDECREF(__pyx_v_userdatas); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":574 -- * -- * @_errors -- * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< -- * """Gets the value of a property asynchronously. -- * -+/* "vidcutter/libs/pympv/mpv.pyx":636 -+ * -+ * @_errors -+ * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_set_property and mpv_set_property_async""" -+ * assert self._ctx - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_14get_property_async[] = "Gets the value of a property asynchronously.\n\n Arguments:\n prop: Property to get the value of.\n\n Keyword arguments:\n data: Value to be passed into the reply_userdata of the response event.\n Wraps: mpv_get_property_async"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_18set_property[] = "Wraps: mpv_set_property and mpv_set_property_async"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_prop = 0; -+ PyObject *__pyx_v_value = 0; -+ PyObject *__pyx_v_asynchronous = 0; - PyObject *__pyx_v_data = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("get_property_async (wrapper)", 0); -+ __Pyx_RefNannySetupContext("set_property (wrapper)", 0); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,0}; -- PyObject* values[2] = {0,0}; -- values[1] = ((PyObject *)Py_None); -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_value,&__pyx_n_s_asynchronous,&__pyx_n_s_data,0}; -+ PyObject* values[4] = {0,0,0,0}; -+ values[1] = ((PyObject *)Py_True); -+ values[2] = ((PyObject *)Py_False); -+ values[3] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { -+ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -+ CYTHON_FALLTHROUGH; -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -@@ -11875,15 +12258,31 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async(Py - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); - if (value) { values[1] = value; kw_args--; } - } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_asynchronous); -+ if (value) { values[2] = value; kw_args--; } -+ } -+ CYTHON_FALLTHROUGH; -+ case 3: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); -+ if (value) { values[3] = value; kw_args--; } -+ } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_property_async") < 0)) __PYX_ERR(0, 574, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_property") < 0)) __PYX_ERR(0, 636, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -+ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -+ CYTHON_FALLTHROUGH; -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -@@ -11892,70 +12291,83 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async(Py - } - } - __pyx_v_prop = values[0]; -- __pyx_v_data = values[1]; -+ __pyx_v_value = values[1]; -+ __pyx_v_asynchronous = values[2]; -+ __pyx_v_data = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("get_property_async", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 574, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("set_property", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 636, __pyx_L3_error) - __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_14get_property_async(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_value, __pyx_v_asynchronous, __pyx_v_data); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data) { -- uint64_t __pyx_v_id_data; -- PyObject *__pyx_v_userdatas = NULL; -- char const *__pyx_v_prop_c; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data) { -+ enum mpv_format __pyx_v_format; -+ struct mpv_node __pyx_v_v; - int __pyx_v_err; -+ uint64_t __pyx_v_data_id; -+ char const *__pyx_v_prop_c; -+ PyObject *__pyx_v_userdatas = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -- Py_hash_t __pyx_t_4; -- PyObject *__pyx_t_5 = NULL; -+ enum mpv_format __pyx_t_4; -+ char const *__pyx_t_5; - int __pyx_t_6; -- PyObject *__pyx_t_7 = NULL; -- int __pyx_t_8; -- int __pyx_t_9; -- char const *__pyx_t_10; -+ int __pyx_t_7; -+ Py_hash_t __pyx_t_8; -+ PyObject *__pyx_t_9 = NULL; -+ int __pyx_t_10; -+ PyObject *__pyx_t_11 = NULL; -+ int __pyx_t_12; -+ char const *__pyx_t_13; -+ PyObject *__pyx_t_14 = NULL; -+ PyObject *__pyx_t_15 = NULL; -+ PyObject *__pyx_t_16 = NULL; -+ PyObject *__pyx_t_17 = NULL; -+ PyObject *__pyx_t_18 = NULL; -+ PyObject *__pyx_t_19 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("get_property_async", 0); -+ __Pyx_RefNannySetupContext("set_property", 0); - __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":583 -- * data: Value to be passed into the reply_userdata of the response event. -- * Wraps: mpv_get_property_async""" -+ /* "vidcutter/libs/pympv/mpv.pyx":638 -+ * def set_property(self, prop, value=True, asynchronous=False, data=None): -+ * """Wraps: mpv_set_property and mpv_set_property_async""" - * assert self._ctx # <<<<<<<<<<<<<< - * prop = _strenc(prop) -- * cdef uint64_t id_data = hash(data) -+ * cdef mpv_format format = self._format_for(value) - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 583, __pyx_L1_error) -+ __PYX_ERR(0, 638, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":584 -- * Wraps: mpv_get_property_async""" -+ /* "vidcutter/libs/pympv/mpv.pyx":639 -+ * """Wraps: mpv_set_property and mpv_set_property_async""" - * assert self._ctx - * prop = _strenc(prop) # <<<<<<<<<<<<<< -- * cdef uint64_t id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) -+ * cdef mpv_format format = self._format_for(value) -+ * cdef mpv_node v = self._prep_native_value(value, format) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -11969,523 +12381,480 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14get_property_async(st - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":585 -+ /* "vidcutter/libs/pympv/mpv.pyx":640 - * assert self._ctx - * prop = _strenc(prop) -- * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is None: -- */ -- __pyx_t_4 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 585, __pyx_L1_error) -- __pyx_v_id_data = ((uint64_t)__pyx_t_4); -- -- /* "vidcutter/libs/pympv/mpv.pyx":586 -- * prop = _strenc(prop) -- * cdef uint64_t id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< -- * if userdatas is None: -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< -+ * cdef mpv_node v = self._prep_native_value(value, format) -+ * cdef int err - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_5 = NULL; -- __pyx_t_6 = 0; -+ __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_5)) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); -- __pyx_t_6 = 1; -- } -- } -- #if CYTHON_FAST_PYCALL -- if (PyFunction_Check(__pyx_t_2)) { -- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- } else -- #endif -- #if CYTHON_FAST_PYCCALL -- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- } else -- #endif -- { -- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- if (__pyx_t_5) { -- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } -- __Pyx_GIVEREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); -- __pyx_t_3 = 0; -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_userdatas = __pyx_t_1; -- __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":587 -- * cdef uint64_t id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is None: # <<<<<<<<<<<<<< -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- */ -- __pyx_t_8 = (__pyx_v_userdatas == Py_None); -- __pyx_t_9 = (__pyx_t_8 != 0); -- if (__pyx_t_9) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":588 -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is None: -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< -- * userdatas.add() -- * cdef const char* prop_c = prop -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_7 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_7)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_7); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); -- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 588, __pyx_L1_error) -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":587 -- * cdef uint64_t id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is None: # <<<<<<<<<<<<<< -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- */ -- } -+ __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_format = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":589 -- * if userdatas is None: -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -- * userdatas.add() # <<<<<<<<<<<<<< -- * cdef const char* prop_c = prop -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":641 -+ * prop = _strenc(prop) -+ * cdef mpv_format format = self._format_for(value) -+ * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< -+ * cdef int err -+ * cdef uint64_t data_id - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 589, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_7 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_7)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_7); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":590 -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- * cdef const char* prop_c = prop # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_get_property_async( -+ /* "vidcutter/libs/pympv/mpv.pyx":645 -+ * cdef uint64_t data_id -+ * cdef const char* prop_c -+ * try: # <<<<<<<<<<<<<< -+ * prop_c = prop -+ * if not asynchronous: - */ -- __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L1_error) -- __pyx_v_prop_c = __pyx_t_10; -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":591 -- * userdatas.add() -- * cdef const char* prop_c = prop -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_get_property_async( -- * self._ctx, -+ /* "vidcutter/libs/pympv/mpv.pyx":646 -+ * cdef const char* prop_c -+ * try: -+ * prop_c = prop # <<<<<<<<<<<<<< -+ * if not asynchronous: -+ * with nogil: - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 646, __pyx_L4_error) -+ __pyx_v_prop_c = __pyx_t_5; - -- /* "vidcutter/libs/pympv/mpv.pyx":592 -- * cdef const char* prop_c = prop -- * with nogil: -- * err = mpv_get_property_async( # <<<<<<<<<<<<<< -- * self._ctx, -- * id_data, -+ /* "vidcutter/libs/pympv/mpv.pyx":647 -+ * try: -+ * prop_c = prop -+ * if not asynchronous: # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_set_property( - */ -- __pyx_v_err = mpv_get_property_async(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_prop_c, MPV_FORMAT_NODE); -- } -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 647, __pyx_L4_error) -+ __pyx_t_7 = ((!__pyx_t_6) != 0); -+ if (__pyx_t_7) { - -- /* "vidcutter/libs/pympv/mpv.pyx":591 -- * userdatas.add() -- * cdef const char* prop_c = prop -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_get_property_async( -- * self._ctx, -+ /* "vidcutter/libs/pympv/mpv.pyx":648 -+ * prop_c = prop -+ * if not asynchronous: -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_set_property( -+ * self._ctx, - */ -- /*finally:*/ { -- /*normal exit:*/{ -+ { - #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); - #endif -- goto __pyx_L6; -- } -- __pyx_L6:; -- } -- } -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":598 -- * MPV_FORMAT_NODE, -- * ) -- * return err # <<<<<<<<<<<<<< -- * -- * def try_get_property_async(self, prop, data=None, default=None): -+ /* "vidcutter/libs/pympv/mpv.pyx":649 -+ * if not asynchronous: -+ * with nogil: -+ * err = mpv_set_property( # <<<<<<<<<<<<<< -+ * self._ctx, -+ * prop_c, - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __pyx_v_err = mpv_set_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":574 -- * -- * @_errors -- * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< -- * """Gets the value of a property asynchronously. -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":648 -+ * prop_c = prop -+ * if not asynchronous: -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_set_property( -+ * self._ctx, - */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L9; -+ } -+ __pyx_L9:; -+ } -+ } - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_userdatas); -- __Pyx_XDECREF(__pyx_v_prop); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":655 -+ * &v -+ * ) -+ * return err # <<<<<<<<<<<<<< -+ * data_id = hash(data) -+ * userdatas = self.reply_userdata.get(data_id, None) -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L3_return; - --/* "vidcutter/libs/pympv/mpv.pyx":600 -- * return err -- * -- * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":647 - * try: -- * return self.get_property_async(prop, data=data) -+ * prop_c = prop -+ * if not asynchronous: # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_set_property( - */ -+ } - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_17try_get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_17try_get_property_async(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_prop = 0; -- PyObject *__pyx_v_data = 0; -- PyObject *__pyx_v_default = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("try_get_property_async (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,&__pyx_n_s_default,0}; -- PyObject* values[3] = {0,0,0}; -- values[1] = ((PyObject *)Py_None); -- values[2] = ((PyObject *)Py_None); -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); -- if (value) { values[1] = value; kw_args--; } -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); -- if (value) { values[2] = value; kw_args--; } -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property_async") < 0)) __PYX_ERR(0, 600, __pyx_L3_error) -+ /* "vidcutter/libs/pympv/mpv.pyx":656 -+ * ) -+ * return err -+ * data_id = hash(data) # <<<<<<<<<<<<<< -+ * userdatas = self.reply_userdata.get(data_id, None) -+ * if userdatas is None: -+ */ -+ __pyx_t_8 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_8 == ((Py_hash_t)-1))) __PYX_ERR(0, 656, __pyx_L4_error) -+ __pyx_v_data_id = ((uint64_t)__pyx_t_8); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":657 -+ * return err -+ * data_id = hash(data) -+ * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< -+ * if userdatas is None: -+ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -+ */ -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_9 = NULL; -+ __pyx_t_10 = 0; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_9)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_9); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ __pyx_t_10 = 1; - } -- } else { -- switch (PyTuple_GET_SIZE(__pyx_args)) { -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- break; -- default: goto __pyx_L5_argtuple_error; -+ } -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_11); -+ if (__pyx_t_9) { -+ __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; - } -+ __Pyx_GIVEREF(__pyx_t_3); -+ PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_3); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, Py_None); -+ __pyx_t_3 = 0; -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } -- __pyx_v_prop = values[0]; -- __pyx_v_data = values[1]; -- __pyx_v_default = values[2]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("try_get_property_async", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 600, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_16try_get_property_async(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data, __pyx_v_default); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_userdatas = __pyx_t_1; -+ __pyx_t_1 = 0; - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16try_get_property_async(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data, PyObject *__pyx_v_default) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- int __pyx_t_8; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("try_get_property_async", 0); -+ /* "vidcutter/libs/pympv/mpv.pyx":658 -+ * data_id = hash(data) -+ * userdatas = self.reply_userdata.get(data_id, None) -+ * if userdatas is None: # <<<<<<<<<<<<<< -+ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() -+ */ -+ __pyx_t_7 = (__pyx_v_userdatas == Py_None); -+ __pyx_t_6 = (__pyx_t_7 != 0); -+ if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":601 -- * -- * def try_get_property_async(self, prop, data=None, default=None): -- * try: # <<<<<<<<<<<<<< -- * return self.get_property_async(prop, data=data) -- * except MPVError: -+ /* "vidcutter/libs/pympv/mpv.pyx":659 -+ * userdatas = self.reply_userdata.get(data_id, None) -+ * if userdatas is None: -+ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< -+ * userdatas.add() -+ * with nogil: - */ -- { -- __Pyx_PyThreadState_declare -- __Pyx_PyThreadState_assign -- __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); -- __Pyx_XGOTREF(__pyx_t_1); -- __Pyx_XGOTREF(__pyx_t_2); -- __Pyx_XGOTREF(__pyx_t_3); -- /*try:*/ { -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_11 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_11)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_11); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_11, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); -+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 659, __pyx_L4_error) -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":602 -- * def try_get_property_async(self, prop, data=None, default=None): -- * try: -- * return self.get_property_async(prop, data=data) # <<<<<<<<<<<<<< -- * except MPVError: -- * return default -+ /* "vidcutter/libs/pympv/mpv.pyx":658 -+ * data_id = hash(data) -+ * userdatas = self.reply_userdata.get(data_id, None) -+ * if userdatas is None: # <<<<<<<<<<<<<< -+ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L3_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 602, __pyx_L3_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_INCREF(__pyx_v_prop); -- __Pyx_GIVEREF(__pyx_v_prop); -- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_prop); -- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 602, __pyx_L3_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 602, __pyx_L3_error) -- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 602, __pyx_L3_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __pyx_r = __pyx_t_7; -- __pyx_t_7 = 0; -- goto __pyx_L7_try_return; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":601 -- * -- * def try_get_property_async(self, prop, data=None, default=None): -- * try: # <<<<<<<<<<<<<< -- * return self.get_property_async(prop, data=data) -- * except MPVError: -+ /* "vidcutter/libs/pympv/mpv.pyx":660 -+ * if userdatas is None: -+ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_set_property_async( - */ -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_11 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_11)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_11); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } - } -- __pyx_L3_error:; -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L4_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":603 -- * try: -- * return self.get_property_async(prop, data=data) -- * except MPVError: # <<<<<<<<<<<<<< -- * return default -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":661 -+ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_set_property_async( -+ * self._ctx, - */ -- __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_4); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5); -- __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; -- if (__pyx_t_8) { -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 603, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_GOTREF(__pyx_t_7); -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":604 -- * return self.get_property_async(prop, data=data) -- * except MPVError: -- * return default # <<<<<<<<<<<<<< -- * -- * def try_get_property(self, prop, default=None): -+ /* "vidcutter/libs/pympv/mpv.pyx":662 -+ * userdatas.add() -+ * with nogil: -+ * err = mpv_set_property_async( # <<<<<<<<<<<<<< -+ * self._ctx, -+ * data_id, - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_default); -- __pyx_r = __pyx_v_default; -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- goto __pyx_L6_except_return; -+ __pyx_v_err = mpv_set_property_async(__pyx_v_self->_ctx, __pyx_v_data_id, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":661 -+ * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -+ * userdatas.add() -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_set_property_async( -+ * self._ctx, -+ */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L13; -+ } -+ __pyx_L13:; -+ } - } -- goto __pyx_L5_except_error; -- __pyx_L5_except_error:; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":601 -+ /* "vidcutter/libs/pympv/mpv.pyx":670 -+ * ) -+ * finally: -+ * self._free_native_value(v) # <<<<<<<<<<<<<< -+ * return err - * -- * def try_get_property_async(self, prop, data=None, default=None): -- * try: # <<<<<<<<<<<<<< -- * return self.get_property_async(prop, data=data) -- * except MPVError: - */ -- __Pyx_XGIVEREF(__pyx_t_1); -- __Pyx_XGIVEREF(__pyx_t_2); -- __Pyx_XGIVEREF(__pyx_t_3); -- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -- goto __pyx_L1_error; -- __pyx_L7_try_return:; -- __Pyx_XGIVEREF(__pyx_t_1); -- __Pyx_XGIVEREF(__pyx_t_2); -- __Pyx_XGIVEREF(__pyx_t_3); -- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -- goto __pyx_L0; -- __pyx_L6_except_return:; -- __Pyx_XGIVEREF(__pyx_t_1); -- __Pyx_XGIVEREF(__pyx_t_2); -- __Pyx_XGIVEREF(__pyx_t_3); -- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -- goto __pyx_L0; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ goto __pyx_L5; -+ } -+ __pyx_L4_error:; -+ /*exception exit:*/{ -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); -+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); -+ __Pyx_XGOTREF(__pyx_t_14); -+ __Pyx_XGOTREF(__pyx_t_15); -+ __Pyx_XGOTREF(__pyx_t_16); -+ __Pyx_XGOTREF(__pyx_t_17); -+ __Pyx_XGOTREF(__pyx_t_18); -+ __Pyx_XGOTREF(__pyx_t_19); -+ __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; -+ { -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L15_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } -+ if (PY_MAJOR_VERSION >= 3) { -+ __Pyx_XGIVEREF(__pyx_t_17); -+ __Pyx_XGIVEREF(__pyx_t_18); -+ __Pyx_XGIVEREF(__pyx_t_19); -+ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); -+ } -+ __Pyx_XGIVEREF(__pyx_t_14); -+ __Pyx_XGIVEREF(__pyx_t_15); -+ __Pyx_XGIVEREF(__pyx_t_16); -+ __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); -+ __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; -+ __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; -+ goto __pyx_L1_error; -+ __pyx_L15_error:; -+ if (PY_MAJOR_VERSION >= 3) { -+ __Pyx_XGIVEREF(__pyx_t_17); -+ __Pyx_XGIVEREF(__pyx_t_18); -+ __Pyx_XGIVEREF(__pyx_t_19); -+ __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); -+ } -+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; -+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; -+ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; -+ __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; -+ goto __pyx_L1_error; -+ } -+ __pyx_L3_return: { -+ __pyx_t_19 = __pyx_r; -+ __pyx_r = 0; -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_r = __pyx_t_19; -+ __pyx_t_19 = 0; -+ goto __pyx_L0; -+ } -+ __pyx_L5:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":600 -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":671 -+ * finally: -+ * self._free_native_value(v) -+ * return err # <<<<<<<<<<<<<< - * -- * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< -- * try: -- * return self.get_property_async(prop, data=data) -+ * @_errors -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":636 -+ * -+ * @_errors -+ * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_set_property and mpv_set_property_async""" -+ * assert self._ctx - */ - - /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_9); -+ __Pyx_XDECREF(__pyx_t_11); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_XDECREF(__pyx_v_userdatas); -+ __Pyx_XDECREF(__pyx_v_prop); -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":606 -- * return default -+/* "vidcutter/libs/pympv/mpv.pyx":674 - * -- * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< -- * try: -- * return self.get_property(prop) -+ * @_errors -+ * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_set_option""" -+ * assert self._ctx - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_20set_option[] = "Wraps: mpv_set_option"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_prop = 0; -- PyObject *__pyx_v_default = 0; -+ PyObject *__pyx_v_value = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("try_get_property (wrapper)", 0); -+ __Pyx_RefNannySetupContext("set_option (wrapper)", 0); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_default,0}; -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_value,0}; - PyObject* values[2] = {0,0}; -- values[1] = ((PyObject *)Py_None); -+ values[1] = ((PyObject *)Py_True); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -@@ -12505,12 +12874,12 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property(PyOb - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property") < 0)) __PYX_ERR(0, 606, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_option") < 0)) __PYX_ERR(0, 674, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -12522,258 +12891,74 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property(PyOb - } - } - __pyx_v_prop = values[0]; -- __pyx_v_default = values[1]; -+ __pyx_v_value = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("try_get_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 606, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("set_option", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 674, __pyx_L3_error) - __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_18try_get_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_default); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18try_get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_default) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- int __pyx_t_8; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("try_get_property", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":607 -- * -- * def try_get_property(self, prop, default=None): -- * try: # <<<<<<<<<<<<<< -- * return self.get_property(prop) -- * except MPVError: -- */ -- { -- __Pyx_PyThreadState_declare -- __Pyx_PyThreadState_assign -- __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); -- __Pyx_XGOTREF(__pyx_t_1); -- __Pyx_XGOTREF(__pyx_t_2); -- __Pyx_XGOTREF(__pyx_t_3); -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":608 -- * def try_get_property(self, prop, default=None): -- * try: -- * return self.get_property(prop) # <<<<<<<<<<<<<< -- * except MPVError: -- * return default -- */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L3_error) -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_6 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); -- if (likely(__pyx_t_6)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -- __Pyx_INCREF(__pyx_t_6); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_5, function); -- } -- } -- __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_prop); -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L3_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __pyx_r = __pyx_t_4; -- __pyx_t_4 = 0; -- goto __pyx_L7_try_return; -- -- /* "vidcutter/libs/pympv/mpv.pyx":607 -- * -- * def try_get_property(self, prop, default=None): -- * try: # <<<<<<<<<<<<<< -- * return self.get_property(prop) -- * except MPVError: -- */ -- } -- __pyx_L3_error:; -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":609 -- * try: -- * return self.get_property(prop) -- * except MPVError: # <<<<<<<<<<<<<< -- * return default -- * -- */ -- __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 609, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6); -- __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; -- if (__pyx_t_8) { -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 609, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_GOTREF(__pyx_t_4); -- -- /* "vidcutter/libs/pympv/mpv.pyx":610 -- * return self.get_property(prop) -- * except MPVError: -- * return default # <<<<<<<<<<<<<< -- * -- * def get_property(self, prop): -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_default); -- __pyx_r = __pyx_v_default; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- goto __pyx_L6_except_return; -- } -- goto __pyx_L5_except_error; -- __pyx_L5_except_error:; -- -- /* "vidcutter/libs/pympv/mpv.pyx":607 -- * -- * def try_get_property(self, prop, default=None): -- * try: # <<<<<<<<<<<<<< -- * return self.get_property(prop) -- * except MPVError: -- */ -- __Pyx_XGIVEREF(__pyx_t_1); -- __Pyx_XGIVEREF(__pyx_t_2); -- __Pyx_XGIVEREF(__pyx_t_3); -- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -- goto __pyx_L1_error; -- __pyx_L7_try_return:; -- __Pyx_XGIVEREF(__pyx_t_1); -- __Pyx_XGIVEREF(__pyx_t_2); -- __Pyx_XGIVEREF(__pyx_t_3); -- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -- goto __pyx_L0; -- __pyx_L6_except_return:; -- __Pyx_XGIVEREF(__pyx_t_1); -- __Pyx_XGIVEREF(__pyx_t_2); -- __Pyx_XGIVEREF(__pyx_t_3); -- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -- goto __pyx_L0; -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":606 -- * return default -- * -- * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< -- * try: -- * return self.get_property(prop) -- */ -- -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":612 -- * return default -- * -- * def get_property(self, prop): # <<<<<<<<<<<<<< -- * """Wraps: mpv_get_property""" -- * assert self._ctx -- */ -- --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21get_property(PyObject *__pyx_v_self, PyObject *__pyx_v_prop); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_20get_property[] = "Wraps: mpv_get_property"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21get_property(PyObject *__pyx_v_self, PyObject *__pyx_v_prop) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("get_property (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_prop)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_value); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop) { -- struct mpv_node __pyx_v_result; -- char const *__pyx_v_prop_c; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value) { -+ enum mpv_format __pyx_v_format; -+ struct mpv_node __pyx_v_v; - int __pyx_v_err; -- PyObject *__pyx_v_v = NULL; -+ char const *__pyx_v_prop_c; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -- char const *__pyx_t_4; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -+ enum mpv_format __pyx_t_4; -+ char const *__pyx_t_5; -+ int __pyx_t_6; - int __pyx_t_7; -- int __pyx_t_8; -- char const *__pyx_t_9; -+ char const *__pyx_t_8; -+ PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; -- PyObject *__pyx_t_15 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("get_property", 0); -+ __Pyx_RefNannySetupContext("set_option", 0); - __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":614 -- * def get_property(self, prop): -- * """Wraps: mpv_get_property""" -+ /* "vidcutter/libs/pympv/mpv.pyx":676 -+ * def set_option(self, prop, value=True): -+ * """Wraps: mpv_set_option""" - * assert self._ctx # <<<<<<<<<<<<<< -- * cdef mpv_node result - * prop = _strenc(prop) -+ * cdef mpv_format format = self._format_for(value) - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 614, __pyx_L1_error) -+ __PYX_ERR(0, 676, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":616 -+ /* "vidcutter/libs/pympv/mpv.pyx":677 -+ * """Wraps: mpv_set_option""" - * assert self._ctx -- * cdef mpv_node result - * prop = _strenc(prop) # <<<<<<<<<<<<<< -- * cdef const char* prop_c = prop -- * cdef int err -+ * cdef mpv_format format = self._format_for(value) -+ * cdef mpv_node v = self._prep_native_value(value, format) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -12787,275 +12972,200 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(struct _ - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":617 -- * cdef mpv_node result -+ /* "vidcutter/libs/pympv/mpv.pyx":678 -+ * assert self._ctx - * prop = _strenc(prop) -- * cdef const char* prop_c = prop # <<<<<<<<<<<<<< -- * cdef int err -- * with nogil: -- */ -- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 617, __pyx_L1_error) -- __pyx_v_prop_c = __pyx_t_4; -- -- /* "vidcutter/libs/pympv/mpv.pyx":619 -- * cdef const char* prop_c = prop -+ * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< -+ * cdef mpv_node v = self._prep_native_value(value, format) - * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_get_property( -- * self._ctx, - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 678, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_format = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":620 -+ /* "vidcutter/libs/pympv/mpv.pyx":679 -+ * prop = _strenc(prop) -+ * cdef mpv_format format = self._format_for(value) -+ * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< - * cdef int err -- * with nogil: -- * err = mpv_get_property( # <<<<<<<<<<<<<< -- * self._ctx, -- * prop_c, -+ * cdef const char* prop_c - */ -- __pyx_v_err = mpv_get_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_result)); -- } -+ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":619 -- * cdef const char* prop_c = prop -+ /* "vidcutter/libs/pympv/mpv.pyx":682 - * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_get_property( -- * self._ctx, -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":626 -- * &result, -- * ) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * try: -+ * cdef const char* prop_c -+ * try: # <<<<<<<<<<<<<< -+ * prop_c = prop -+ * with nogil: - */ -- __pyx_t_5 = ((__pyx_v_err < 0) != 0); -- if (unlikely(__pyx_t_5)) { -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":627 -- * ) -- * if err < 0: -- * raise MPVError(err) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":683 -+ * cdef const char* prop_c - * try: -- * v = _convert_node_value(result) -+ * prop_c = prop # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_set_option( - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 627, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_6 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_6)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_6); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 627, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 683, __pyx_L4_error) -+ __pyx_v_prop_c = __pyx_t_5; - -- /* "vidcutter/libs/pympv/mpv.pyx":626 -- * &result, -- * ) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":684 - * try: -+ * prop_c = prop -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_set_option( -+ * self._ctx, - */ -- } -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":628 -- * if err < 0: -- * raise MPVError(err) -- * try: # <<<<<<<<<<<<<< -- * v = _convert_node_value(result) -- * finally: -+ /* "vidcutter/libs/pympv/mpv.pyx":685 -+ * prop_c = prop -+ * with nogil: -+ * err = mpv_set_option( # <<<<<<<<<<<<<< -+ * self._ctx, -+ * prop_c, - */ -- /*try:*/ { -+ __pyx_v_err = mpv_set_option(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":629 -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":684 - * try: -- * v = _convert_node_value(result) # <<<<<<<<<<<<<< -- * finally: -- * with nogil: -+ * prop_c = prop -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_set_option( -+ * self._ctx, - */ -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L8_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_v = __pyx_t_1; -- __pyx_t_1 = 0; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L8; -+ } -+ __pyx_L8:; -+ } -+ } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":631 -- * v = _convert_node_value(result) -+ /* "vidcutter/libs/pympv/mpv.pyx":692 -+ * ) - * finally: -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_free_node_contents(&result) -- * return v -+ * self._free_native_value(v) # <<<<<<<<<<<<<< -+ * return err -+ * - */ - /*finally:*/ { - /*normal exit:*/{ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":632 -- * finally: -- * with nogil: -- * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< -- * return v -- * -- */ -- mpv_free_node_contents((&__pyx_v_result)); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":631 -- * v = _convert_node_value(result) -- * finally: -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_free_node_contents(&result) -- * return v -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L12; -- } -- __pyx_L12:; -- } -- } -- goto __pyx_L9; -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ goto __pyx_L5; - } -- __pyx_L8_error:; -+ __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign -- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; -+ __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); -- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); -+ if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); -+ if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); -+ __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); -- __Pyx_XGOTREF(__pyx_t_15); -- __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; -+ __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; - { -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":632 -- * finally: -- * with nogil: -- * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< -- * return v -- * -- */ -- mpv_free_node_contents((&__pyx_v_result)); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":631 -- * v = _convert_node_value(result) -- * finally: -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_free_node_contents(&result) -- * return v -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L17; -- } -- __pyx_L17:; -- } -- } -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L10_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - if (PY_MAJOR_VERSION >= 3) { -+ __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); -- __Pyx_XGIVEREF(__pyx_t_15); -- __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); -+ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } -+ __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); -- __Pyx_XGIVEREF(__pyx_t_12); -- __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); -- __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; -- __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; -+ __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); -+ __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; -+ __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; -+ goto __pyx_L1_error; -+ __pyx_L10_error:; -+ if (PY_MAJOR_VERSION >= 3) { -+ __Pyx_XGIVEREF(__pyx_t_12); -+ __Pyx_XGIVEREF(__pyx_t_13); -+ __Pyx_XGIVEREF(__pyx_t_14); -+ __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); -+ } -+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; -+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -+ __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - goto __pyx_L1_error; - } -- __pyx_L9:; -+ __pyx_L5:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":633 -- * with nogil: -- * mpv_free_node_contents(&result) -- * return v # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":693 -+ * finally: -+ * self._free_native_value(v) -+ * return err # <<<<<<<<<<<<<< - * - * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v_v); -- __pyx_r = __pyx_v_v; -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":612 -- * return default -+ /* "vidcutter/libs/pympv/mpv.pyx":674 - * -- * def get_property(self, prop): # <<<<<<<<<<<<<< -- * """Wraps: mpv_get_property""" -+ * @_errors -+ * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_set_option""" - * assert self._ctx - */ - -@@ -13064,1047 +13174,798 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20get_property(struct _ - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_v); - __Pyx_XDECREF(__pyx_v_prop); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":636 -+/* "vidcutter/libs/pympv/mpv.pyx":696 - * - * @_errors -- * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< -- * """Wraps: mpv_set_property and mpv_set_property_async""" -+ * def initialize(self): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_initialize""" - * assert self._ctx - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_23set_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_22set_property[] = "Wraps: mpv_set_property and mpv_set_property_async"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_23set_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_prop = 0; -- PyObject *__pyx_v_value = 0; -- PyObject *__pyx_v_asynchronous = 0; -- PyObject *__pyx_v_data = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_23initialize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_22initialize[] = "Wraps: mpv_initialize"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_23initialize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_property (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_value,&__pyx_n_s_asynchronous,&__pyx_n_s_data,0}; -- PyObject* values[4] = {0,0,0,0}; -- values[1] = ((PyObject *)Py_True); -- values[2] = ((PyObject *)Py_False); -- values[3] = ((PyObject *)Py_None); -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -- CYTHON_FALLTHROUGH; -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); -- if (value) { values[1] = value; kw_args--; } -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_asynchronous); -- if (value) { values[2] = value; kw_args--; } -- } -- CYTHON_FALLTHROUGH; -- case 3: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); -- if (value) { values[3] = value; kw_args--; } -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_property") < 0)) __PYX_ERR(0, 636, __pyx_L3_error) -- } -- } else { -- switch (PyTuple_GET_SIZE(__pyx_args)) { -- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -- CYTHON_FALLTHROUGH; -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- break; -- default: goto __pyx_L5_argtuple_error; -- } -- } -- __pyx_v_prop = values[0]; -- __pyx_v_value = values[1]; -- __pyx_v_asynchronous = values[2]; -- __pyx_v_data = values[3]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("set_property", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 636, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_22set_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_value, __pyx_v_asynchronous, __pyx_v_data); -+ __Pyx_RefNannySetupContext("initialize (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22set_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value, PyObject *__pyx_v_asynchronous, PyObject *__pyx_v_data) { -- enum mpv_format __pyx_v_format; -- struct mpv_node __pyx_v_v; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { - int __pyx_v_err; -- uint64_t __pyx_v_data_id; -- char const *__pyx_v_prop_c; -- PyObject *__pyx_v_userdatas = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- enum mpv_format __pyx_t_4; -- char const *__pyx_t_5; -- int __pyx_t_6; -- int __pyx_t_7; -- Py_hash_t __pyx_t_8; -- PyObject *__pyx_t_9 = NULL; -- int __pyx_t_10; -- PyObject *__pyx_t_11 = NULL; -- int __pyx_t_12; -- char const *__pyx_t_13; -- PyObject *__pyx_t_14 = NULL; -- PyObject *__pyx_t_15 = NULL; -- PyObject *__pyx_t_16 = NULL; -- PyObject *__pyx_t_17 = NULL; -- PyObject *__pyx_t_18 = NULL; -- PyObject *__pyx_t_19 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("set_property", 0); -- __Pyx_INCREF(__pyx_v_prop); -+ __Pyx_RefNannySetupContext("initialize", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":638 -- * def set_property(self, prop, value=True, asynchronous=False, data=None): -- * """Wraps: mpv_set_property and mpv_set_property_async""" -+ /* "vidcutter/libs/pympv/mpv.pyx":698 -+ * def initialize(self): -+ * """Wraps: mpv_initialize""" - * assert self._ctx # <<<<<<<<<<<<<< -- * prop = _strenc(prop) -- * cdef mpv_format format = self._format_for(value) -+ * cdef int err -+ * with nogil: - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 638, __pyx_L1_error) -+ __PYX_ERR(0, 698, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":639 -- * """Wraps: mpv_set_property and mpv_set_property_async""" -+ /* "vidcutter/libs/pympv/mpv.pyx":700 - * assert self._ctx -- * prop = _strenc(prop) # <<<<<<<<<<<<<< -- * cdef mpv_format format = self._format_for(value) -- * cdef mpv_node v = self._prep_native_value(value, format) -+ * cdef int err -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_initialize(self._ctx) -+ * return err - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); -- __pyx_t_1 = 0; -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":640 -- * assert self._ctx -- * prop = _strenc(prop) -- * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< -- * cdef mpv_node v = self._prep_native_value(value, format) -+ /* "vidcutter/libs/pympv/mpv.pyx":701 - * cdef int err -+ * with nogil: -+ * err = mpv_initialize(self._ctx) # <<<<<<<<<<<<<< -+ * return err -+ * - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_format = __pyx_t_4; -+ __pyx_v_err = mpv_initialize(__pyx_v_self->_ctx); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":641 -- * prop = _strenc(prop) -- * cdef mpv_format format = self._format_for(value) -- * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":700 -+ * assert self._ctx - * cdef int err -- * cdef uint64_t data_id -- */ -- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":645 -- * cdef uint64_t data_id -- * cdef const char* prop_c -- * try: # <<<<<<<<<<<<<< -- * prop_c = prop -- * if not asynchronous: -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_initialize(self._ctx) -+ * return err - */ -- /*try:*/ { -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":646 -- * cdef const char* prop_c -- * try: -- * prop_c = prop # <<<<<<<<<<<<<< -- * if not asynchronous: -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":702 -+ * with nogil: -+ * err = mpv_initialize(self._ctx) -+ * return err # <<<<<<<<<<<<<< -+ * -+ * def wait_event(self, timeout=None): - */ -- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 646, __pyx_L4_error) -- __pyx_v_prop_c = __pyx_t_5; -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":647 -- * try: -- * prop_c = prop -- * if not asynchronous: # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_set_property( -+ /* "vidcutter/libs/pympv/mpv.pyx":696 -+ * -+ * @_errors -+ * def initialize(self): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_initialize""" -+ * assert self._ctx - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 647, __pyx_L4_error) -- __pyx_t_7 = ((!__pyx_t_6) != 0); -- if (__pyx_t_7) { - -- /* "vidcutter/libs/pympv/mpv.pyx":648 -- * prop_c = prop -- * if not asynchronous: -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_set_property( -- * self._ctx, -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":649 -- * if not asynchronous: -- * with nogil: -- * err = mpv_set_property( # <<<<<<<<<<<<<< -- * self._ctx, -- * prop_c, -+/* "vidcutter/libs/pympv/mpv.pyx":704 -+ * return err -+ * -+ * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_wait_event""" -+ * assert self._ctx - */ -- __pyx_v_err = mpv_set_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":648 -- * prop_c = prop -- * if not asynchronous: -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_set_property( -- * self._ctx, -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L9; -- } -- __pyx_L9:; -- } -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_24wait_event[] = "Wraps: mpv_wait_event"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_timeout = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("wait_event (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; -+ PyObject* values[1] = {0}; -+ values[0] = ((PyObject *)Py_None); -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); -+ if (value) { values[0] = value; kw_args--; } -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_event") < 0)) __PYX_ERR(0, 704, __pyx_L3_error) -+ } -+ } else { -+ switch (PyTuple_GET_SIZE(__pyx_args)) { -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; - } -+ } -+ __pyx_v_timeout = values[0]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("wait_event", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 704, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_timeout); - -- /* "vidcutter/libs/pympv/mpv.pyx":655 -- * &v -- * ) -- * return err # <<<<<<<<<<<<<< -- * data_id = hash(data) -- * userdatas = self.reply_userdata.get(data_id, None) -- */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L3_return; -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":647 -- * try: -- * prop_c = prop -- * if not asynchronous: # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_set_property( -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_timeout) { -+ double __pyx_v_timeout_d; -+ struct mpv_event *__pyx_v_event; -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ double __pyx_t_1; -+ int __pyx_t_2; -+ double __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("wait_event", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":706 -+ * def wait_event(self, timeout=None): -+ * """Wraps: mpv_wait_event""" -+ * assert self._ctx # <<<<<<<<<<<<<< -+ * cdef double timeout_d = timeout if timeout is not None else -1 -+ * cdef mpv_event* event - */ -+ #ifndef CYTHON_WITHOUT_ASSERTIONS -+ if (unlikely(!Py_OptimizeFlag)) { -+ if (unlikely(!(__pyx_v_self->_ctx != 0))) { -+ PyErr_SetNone(PyExc_AssertionError); -+ __PYX_ERR(0, 706, __pyx_L1_error) - } -+ } -+ #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":656 -- * ) -- * return err -- * data_id = hash(data) # <<<<<<<<<<<<<< -- * userdatas = self.reply_userdata.get(data_id, None) -- * if userdatas is None: -+ /* "vidcutter/libs/pympv/mpv.pyx":707 -+ * """Wraps: mpv_wait_event""" -+ * assert self._ctx -+ * cdef double timeout_d = timeout if timeout is not None else -1 # <<<<<<<<<<<<<< -+ * cdef mpv_event* event -+ * with nogil: - */ -- __pyx_t_8 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_8 == ((Py_hash_t)-1))) __PYX_ERR(0, 656, __pyx_L4_error) -- __pyx_v_data_id = ((uint64_t)__pyx_t_8); -- -- /* "vidcutter/libs/pympv/mpv.pyx":657 -- * return err -- * data_id = hash(data) -- * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< -- * if userdatas is None: -- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 657, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_9 = NULL; -- __pyx_t_10 = 0; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_9)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_9); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- __pyx_t_10 = 1; -- } -- } -- #if CYTHON_FAST_PYCALL -- if (PyFunction_Check(__pyx_t_2)) { -- PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) -- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- } else -- #endif -- #if CYTHON_FAST_PYCCALL -- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { -- PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) -- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- } else -- #endif -- { -- __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 657, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_11); -- if (__pyx_t_9) { -- __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; -- } -- __Pyx_GIVEREF(__pyx_t_3); -- PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_3); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, Py_None); -- __pyx_t_3 = 0; -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -- } -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_userdatas = __pyx_t_1; -- __pyx_t_1 = 0; -+ __pyx_t_2 = (__pyx_v_timeout != Py_None); -+ if ((__pyx_t_2 != 0)) { -+ __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_timeout); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 707, __pyx_L1_error) -+ __pyx_t_1 = __pyx_t_3; -+ } else { -+ __pyx_t_1 = -1.0; -+ } -+ __pyx_v_timeout_d = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":658 -- * data_id = hash(data) -- * userdatas = self.reply_userdata.get(data_id, None) -- * if userdatas is None: # <<<<<<<<<<<<<< -- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() -+ /* "vidcutter/libs/pympv/mpv.pyx":709 -+ * cdef double timeout_d = timeout if timeout is not None else -1 -+ * cdef mpv_event* event -+ * with nogil: # <<<<<<<<<<<<<< -+ * event = mpv_wait_event(self._ctx, timeout_d) -+ * return Event()._init(event, self) - */ -- __pyx_t_7 = (__pyx_v_userdatas == Py_None); -- __pyx_t_6 = (__pyx_t_7 != 0); -- if (__pyx_t_6) { -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":659 -- * userdatas = self.reply_userdata.get(data_id, None) -- * if userdatas is None: -- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< -- * userdatas.add() -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":710 -+ * cdef mpv_event* event -+ * with nogil: -+ * event = mpv_wait_event(self._ctx, timeout_d) # <<<<<<<<<<<<<< -+ * return Event()._init(event, self) -+ * - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_11 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_11)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_11); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -+ __pyx_v_event = mpv_wait_event(__pyx_v_self->_ctx, __pyx_v_timeout_d); - } -- __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_11, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); -- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 659, __pyx_L4_error) -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":658 -- * data_id = hash(data) -- * userdatas = self.reply_userdata.get(data_id, None) -- * if userdatas is None: # <<<<<<<<<<<<<< -- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- */ -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":660 -- * if userdatas is None: -- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_set_property_async( -+ /* "vidcutter/libs/pympv/mpv.pyx":709 -+ * cdef double timeout_d = timeout if timeout is not None else -1 -+ * cdef mpv_event* event -+ * with nogil: # <<<<<<<<<<<<<< -+ * event = mpv_wait_event(self._ctx, timeout_d) -+ * return Event()._init(event, self) - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_11 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_11)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_11); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; - } -- } -- __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L4_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":661 -- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_set_property_async( -- * self._ctx, -+ /* "vidcutter/libs/pympv/mpv.pyx":711 -+ * with nogil: -+ * event = mpv_wait_event(self._ctx, timeout_d) -+ * return Event()._init(event, self) # <<<<<<<<<<<<<< -+ * -+ * def wakeup(self): - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 711, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4), __pyx_v_event, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_r = __pyx_t_5; -+ __pyx_t_5 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":662 -- * userdatas.add() -- * with nogil: -- * err = mpv_set_property_async( # <<<<<<<<<<<<<< -- * self._ctx, -- * data_id, -+ /* "vidcutter/libs/pympv/mpv.pyx":704 -+ * return err -+ * -+ * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_wait_event""" -+ * assert self._ctx - */ -- __pyx_v_err = mpv_set_property_async(__pyx_v_self->_ctx, __pyx_v_data_id, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":661 -- * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) -- * userdatas.add() -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_set_property_async( -- * self._ctx, -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L13; -- } -- __pyx_L13:; -- } -- } -- } -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":670 -- * ) -- * finally: -- * self._free_native_value(v) # <<<<<<<<<<<<<< -- * return err -+/* "vidcutter/libs/pympv/mpv.pyx":713 -+ * return Event()._init(event, self) - * -+ * def wakeup(self): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_wakeup""" -+ * assert self._ctx - */ -- /*finally:*/ { -- /*normal exit:*/{ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- goto __pyx_L5; -- } -- __pyx_L4_error:; -- /*exception exit:*/{ -- __Pyx_PyThreadState_declare -- __Pyx_PyThreadState_assign -- __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); -- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); -- __Pyx_XGOTREF(__pyx_t_14); -- __Pyx_XGOTREF(__pyx_t_15); -- __Pyx_XGOTREF(__pyx_t_16); -- __Pyx_XGOTREF(__pyx_t_17); -- __Pyx_XGOTREF(__pyx_t_18); -- __Pyx_XGOTREF(__pyx_t_19); -- __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; -- { -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L15_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- } -- if (PY_MAJOR_VERSION >= 3) { -- __Pyx_XGIVEREF(__pyx_t_17); -- __Pyx_XGIVEREF(__pyx_t_18); -- __Pyx_XGIVEREF(__pyx_t_19); -- __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); -- } -- __Pyx_XGIVEREF(__pyx_t_14); -- __Pyx_XGIVEREF(__pyx_t_15); -- __Pyx_XGIVEREF(__pyx_t_16); -- __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); -- __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; -- __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; -- goto __pyx_L1_error; -- __pyx_L15_error:; -- if (PY_MAJOR_VERSION >= 3) { -- __Pyx_XGIVEREF(__pyx_t_17); -- __Pyx_XGIVEREF(__pyx_t_18); -- __Pyx_XGIVEREF(__pyx_t_19); -- __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); -- } -- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; -- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; -- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; -- __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; -- goto __pyx_L1_error; -- } -- __pyx_L3_return: { -- __pyx_t_19 = __pyx_r; -- __pyx_r = 0; -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_r = __pyx_t_19; -- __pyx_t_19 = 0; -- goto __pyx_L0; -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_27wakeup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_26wakeup[] = "Wraps: mpv_wakeup"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_27wakeup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("wakeup (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("wakeup", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":715 -+ * def wakeup(self): -+ * """Wraps: mpv_wakeup""" -+ * assert self._ctx # <<<<<<<<<<<<<< -+ * with nogil: -+ * mpv_wakeup(self._ctx) -+ */ -+ #ifndef CYTHON_WITHOUT_ASSERTIONS -+ if (unlikely(!Py_OptimizeFlag)) { -+ if (unlikely(!(__pyx_v_self->_ctx != 0))) { -+ PyErr_SetNone(PyExc_AssertionError); -+ __PYX_ERR(0, 715, __pyx_L1_error) - } -- __pyx_L5:; - } -+ #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":671 -- * finally: -- * self._free_native_value(v) -- * return err # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":716 -+ * """Wraps: mpv_wakeup""" -+ * assert self._ctx -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_wakeup(self._ctx) - * -- * @_errors - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":636 -+ /* "vidcutter/libs/pympv/mpv.pyx":717 -+ * assert self._ctx -+ * with nogil: -+ * mpv_wakeup(self._ctx) # <<<<<<<<<<<<<< - * -- * @_errors -- * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< -- * """Wraps: mpv_set_property and mpv_set_property_async""" -+ * def set_wakeup_callback(self, callback): -+ */ -+ mpv_wakeup(__pyx_v_self->_ctx); -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":716 -+ * """Wraps: mpv_wakeup""" -+ * assert self._ctx -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_wakeup(self._ctx) -+ * -+ */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":713 -+ * return Event()._init(event, self) -+ * -+ * def wakeup(self): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_wakeup""" - * assert self._ctx - */ - - /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_9); -- __Pyx_XDECREF(__pyx_t_11); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wakeup", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_userdatas); -- __Pyx_XDECREF(__pyx_v_prop); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":674 -+/* "vidcutter/libs/pympv/mpv.pyx":719 -+ * mpv_wakeup(self._ctx) - * -- * @_errors -- * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< -- * """Wraps: mpv_set_option""" -+ * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_set_wakeup_callback""" - * assert self._ctx - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25set_option(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_24set_option[] = "Wraps: mpv_set_option"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25set_option(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_prop = 0; -- PyObject *__pyx_v_value = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29set_wakeup_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback[] = "Wraps: mpv_set_wakeup_callback"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29set_wakeup_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_option (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_value,0}; -- PyObject* values[2] = {0,0}; -- values[1] = ((PyObject *)Py_True); -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); -- if (value) { values[1] = value; kw_args--; } -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_option") < 0)) __PYX_ERR(0, 674, __pyx_L3_error) -- } -- } else { -- switch (PyTuple_GET_SIZE(__pyx_args)) { -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- break; -- default: goto __pyx_L5_argtuple_error; -- } -- } -- __pyx_v_prop = values[0]; -- __pyx_v_value = values[1]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("set_option", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 674, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_24set_option(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_value); -+ __Pyx_RefNannySetupContext("set_wakeup_callback (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24set_option(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_value) { -- enum mpv_format __pyx_v_format; -- struct mpv_node __pyx_v_v; -- int __pyx_v_err; -- char const *__pyx_v_prop_c; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_callback) { -+ uint64_t __pyx_v_name; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -+ uint64_t __pyx_t_2; - PyObject *__pyx_t_3 = NULL; -- enum mpv_format __pyx_t_4; -- char const *__pyx_t_5; -- int __pyx_t_6; -- int __pyx_t_7; -- char const *__pyx_t_8; -- PyObject *__pyx_t_9 = NULL; -- PyObject *__pyx_t_10 = NULL; -- PyObject *__pyx_t_11 = NULL; -- PyObject *__pyx_t_12 = NULL; -- PyObject *__pyx_t_13 = NULL; -- PyObject *__pyx_t_14 = NULL; -+ PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("set_option", 0); -- __Pyx_INCREF(__pyx_v_prop); -+ __Pyx_RefNannySetupContext("set_wakeup_callback", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":676 -- * def set_option(self, prop, value=True): -- * """Wraps: mpv_set_option""" -+ /* "vidcutter/libs/pympv/mpv.pyx":721 -+ * def set_wakeup_callback(self, callback): -+ * """Wraps: mpv_set_wakeup_callback""" - * assert self._ctx # <<<<<<<<<<<<<< -- * prop = _strenc(prop) -- * cdef mpv_format format = self._format_for(value) -+ * cdef uint64_t name = id(self) -+ * self.callback = callback - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 676, __pyx_L1_error) -+ __PYX_ERR(0, 721, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":677 -- * """Wraps: mpv_set_option""" -+ /* "vidcutter/libs/pympv/mpv.pyx":722 -+ * """Wraps: mpv_set_wakeup_callback""" - * assert self._ctx -- * prop = _strenc(prop) # <<<<<<<<<<<<<< -- * cdef mpv_format format = self._format_for(value) -- * cdef mpv_node v = self._prep_native_value(value, format) -+ * cdef uint64_t name = id(self) # <<<<<<<<<<<<<< -+ * self.callback = callback -+ * self.callbackthread.set(callback) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); -- __pyx_t_1 = 0; -+ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 722, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_name = ((uint64_t)__pyx_t_2); - -- /* "vidcutter/libs/pympv/mpv.pyx":678 -+ /* "vidcutter/libs/pympv/mpv.pyx":723 - * assert self._ctx -- * prop = _strenc(prop) -- * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< -- * cdef mpv_node v = self._prep_native_value(value, format) -- * cdef int err -+ * cdef uint64_t name = id(self) -+ * self.callback = callback # <<<<<<<<<<<<<< -+ * self.callbackthread.set(callback) -+ * with nogil: - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(__pyx_v_callback); -+ __Pyx_GIVEREF(__pyx_v_callback); -+ __Pyx_GOTREF(__pyx_v_self->callback); -+ __Pyx_DECREF(__pyx_v_self->callback); -+ __pyx_v_self->callback = __pyx_v_callback; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":724 -+ * cdef uint64_t name = id(self) -+ * self.callback = callback -+ * self.callbackthread.set(callback) # <<<<<<<<<<<<<< -+ * with nogil: -+ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) -+ */ -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); - } - } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error) -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_callback) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 678, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_format = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":679 -- * prop = _strenc(prop) -- * cdef mpv_format format = self._format_for(value) -- * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< -- * cdef int err -- * cdef const char* prop_c -+ /* "vidcutter/libs/pympv/mpv.pyx":725 -+ * self.callback = callback -+ * self.callbackthread.set(callback) -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) -+ * - */ -- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":682 -- * cdef int err -- * cdef const char* prop_c -- * try: # <<<<<<<<<<<<<< -- * prop_c = prop -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":726 -+ * self.callbackthread.set(callback) -+ * with nogil: -+ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) # <<<<<<<<<<<<<< -+ * -+ * def get_wakeup_pipe(self): - */ -- /*try:*/ { -+ mpv_set_wakeup_callback(__pyx_v_self->_ctx, __pyx_f_9vidcutter_4libs_3mpv__c_callback, ((void *)__pyx_v_name)); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":683 -- * cdef const char* prop_c -- * try: -- * prop_c = prop # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_set_option( -+ /* "vidcutter/libs/pympv/mpv.pyx":725 -+ * self.callback = callback -+ * self.callbackthread.set(callback) -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) -+ * - */ -- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 683, __pyx_L4_error) -- __pyx_v_prop_c = __pyx_t_5; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":684 -- * try: -- * prop_c = prop -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_set_option( -- * self._ctx, -+ /* "vidcutter/libs/pympv/mpv.pyx":719 -+ * mpv_wakeup(self._ctx) -+ * -+ * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_set_wakeup_callback""" -+ * assert self._ctx - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":685 -- * prop_c = prop -- * with nogil: -- * err = mpv_set_option( # <<<<<<<<<<<<<< -- * self._ctx, -- * prop_c, -+ /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_wakeup_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "vidcutter/libs/pympv/mpv.pyx":728 -+ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) -+ * -+ * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_get_wakeup_pipe""" -+ * assert self._ctx - */ -- __pyx_v_err = mpv_set_option(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":684 -- * try: -- * prop_c = prop -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_set_option( -- * self._ctx, -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_31get_wakeup_pipe(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe[] = "Wraps: mpv_get_wakeup_pipe"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_31get_wakeup_pipe(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("get_wakeup_pipe (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -+ int __pyx_v_pipe; -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("get_wakeup_pipe", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":730 -+ * def get_wakeup_pipe(self): -+ * """Wraps: mpv_get_wakeup_pipe""" -+ * assert self._ctx # <<<<<<<<<<<<<< -+ * cdef int pipe -+ * with nogil: - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L8; -- } -- __pyx_L8:; -- } -+ #ifndef CYTHON_WITHOUT_ASSERTIONS -+ if (unlikely(!Py_OptimizeFlag)) { -+ if (unlikely(!(__pyx_v_self->_ctx != 0))) { -+ PyErr_SetNone(PyExc_AssertionError); -+ __PYX_ERR(0, 730, __pyx_L1_error) - } - } -+ #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":692 -- * ) -- * finally: -- * self._free_native_value(v) # <<<<<<<<<<<<<< -- * return err -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":732 -+ * assert self._ctx -+ * cdef int pipe -+ * with nogil: # <<<<<<<<<<<<<< -+ * pipe = mpv_get_wakeup_pipe(self._ctx) -+ * return pipe - */ -- /*finally:*/ { -- /*normal exit:*/{ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- goto __pyx_L5; -- } -- __pyx_L4_error:; -- /*exception exit:*/{ -- __Pyx_PyThreadState_declare -- __Pyx_PyThreadState_assign -- __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); -- if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); -- __Pyx_XGOTREF(__pyx_t_9); -- __Pyx_XGOTREF(__pyx_t_10); -- __Pyx_XGOTREF(__pyx_t_11); -- __Pyx_XGOTREF(__pyx_t_12); -- __Pyx_XGOTREF(__pyx_t_13); -- __Pyx_XGOTREF(__pyx_t_14); -- __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; -- { -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L10_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- } -- if (PY_MAJOR_VERSION >= 3) { -- __Pyx_XGIVEREF(__pyx_t_12); -- __Pyx_XGIVEREF(__pyx_t_13); -- __Pyx_XGIVEREF(__pyx_t_14); -- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":733 -+ * cdef int pipe -+ * with nogil: -+ * pipe = mpv_get_wakeup_pipe(self._ctx) # <<<<<<<<<<<<<< -+ * return pipe -+ * -+ */ -+ __pyx_v_pipe = mpv_get_wakeup_pipe(__pyx_v_self->_ctx); - } -- __Pyx_XGIVEREF(__pyx_t_9); -- __Pyx_XGIVEREF(__pyx_t_10); -- __Pyx_XGIVEREF(__pyx_t_11); -- __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); -- __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; -- __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; -- goto __pyx_L1_error; -- __pyx_L10_error:; -- if (PY_MAJOR_VERSION >= 3) { -- __Pyx_XGIVEREF(__pyx_t_12); -- __Pyx_XGIVEREF(__pyx_t_13); -- __Pyx_XGIVEREF(__pyx_t_14); -- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":732 -+ * assert self._ctx -+ * cdef int pipe -+ * with nogil: # <<<<<<<<<<<<<< -+ * pipe = mpv_get_wakeup_pipe(self._ctx) -+ * return pipe -+ */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; - } -- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; -- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -- __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; -- goto __pyx_L1_error; -- } -- __pyx_L5:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":693 -- * finally: -- * self._free_native_value(v) -- * return err # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":734 -+ * with nogil: -+ * pipe = mpv_get_wakeup_pipe(self._ctx) -+ * return pipe # <<<<<<<<<<<<<< - * -- * @_errors -+ * def __cinit__(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":674 -+ /* "vidcutter/libs/pympv/mpv.pyx":728 -+ * mpv_set_wakeup_callback(self._ctx, _c_callback, name) - * -- * @_errors -- * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< -- * """Wraps: mpv_set_option""" -+ * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_get_wakeup_pipe""" - * assert self._ctx - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_wakeup_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_prop); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":696 -+/* "vidcutter/libs/pympv/mpv.pyx":736 -+ * return pipe - * -- * @_errors -- * def initialize(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_initialize""" -- * assert self._ctx -+ * def __cinit__(self): # <<<<<<<<<<<<<< -+ * cdef uint64_t ctxid = id(self) -+ * with nogil: - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_27initialize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_26initialize[] = "Wraps: mpv_initialize"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_27initialize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -+static int __pyx_pw_9vidcutter_4libs_3mpv_7Context_33__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_7Context_33__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ int __pyx_r; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("initialize (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); -+ if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { -+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} -+ if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- int __pyx_v_err; -- PyObject *__pyx_r = NULL; -+static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -+ uint64_t __pyx_v_ctxid; -+ int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -+ uint64_t __pyx_t_2; -+ int __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("initialize", 0); -+ __Pyx_RefNannySetupContext("__cinit__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":698 -- * def initialize(self): -- * """Wraps: mpv_initialize""" -- * assert self._ctx # <<<<<<<<<<<<<< -- * cdef int err -+ /* "vidcutter/libs/pympv/mpv.pyx":737 -+ * -+ * def __cinit__(self): -+ * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< - * with nogil: -+ * self._ctx = mpv_create() - */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 698, __pyx_L1_error) -- } -- } -- #endif -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 737, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 737, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_ctxid = ((uint64_t)__pyx_t_2); - -- /* "vidcutter/libs/pympv/mpv.pyx":700 -- * assert self._ctx -- * cdef int err -+ /* "vidcutter/libs/pympv/mpv.pyx":738 -+ * def __cinit__(self): -+ * cdef uint64_t ctxid = id(self) - * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_initialize(self._ctx) -- * return err -+ * self._ctx = mpv_create() -+ * if not self._ctx: - */ - { - #ifdef WITH_THREAD -@@ -14114,22 +13975,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(struct __p - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":701 -- * cdef int err -+ /* "vidcutter/libs/pympv/mpv.pyx":739 -+ * cdef uint64_t ctxid = id(self) - * with nogil: -- * err = mpv_initialize(self._ctx) # <<<<<<<<<<<<<< -- * return err -- * -+ * self._ctx = mpv_create() # <<<<<<<<<<<<<< -+ * if not self._ctx: -+ * raise MPVError("Context creation error") - */ -- __pyx_v_err = mpv_initialize(__pyx_v_self->_ctx); -+ __pyx_v_self->_ctx = mpv_create(); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":700 -- * assert self._ctx -- * cdef int err -+ /* "vidcutter/libs/pympv/mpv.pyx":738 -+ * def __cinit__(self): -+ * cdef uint64_t ctxid = id(self) - * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_initialize(self._ctx) -- * return err -+ * self._ctx = mpv_create() -+ * if not self._ctx: - */ - /*finally:*/ { - /*normal exit:*/{ -@@ -14143,66 +14004,200 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26initialize(struct __p - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":702 -+ /* "vidcutter/libs/pympv/mpv.pyx":740 - * with nogil: -- * err = mpv_initialize(self._ctx) -- * return err # <<<<<<<<<<<<<< -- * -- * def wait_event(self, timeout=None): -+ * self._ctx = mpv_create() -+ * if not self._ctx: # <<<<<<<<<<<<<< -+ * raise MPVError("Context creation error") -+ * self.callbackthread = CallbackThread() - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __pyx_t_3 = ((!(__pyx_v_self->_ctx != 0)) != 0); -+ if (unlikely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":696 -- * -- * @_errors -- * def initialize(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_initialize""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":741 -+ * self._ctx = mpv_create() -+ * if not self._ctx: -+ * raise MPVError("Context creation error") # <<<<<<<<<<<<<< -+ * self.callbackthread = CallbackThread() -+ * _callbacks[ctxid] = self.callbackthread - */ -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 741, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_4, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_Context_creation_error) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Context_creation_error); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(0, 741, __pyx_L1_error) - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.initialize", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -+ /* "vidcutter/libs/pympv/mpv.pyx":740 -+ * with nogil: -+ * self._ctx = mpv_create() -+ * if not self._ctx: # <<<<<<<<<<<<<< -+ * raise MPVError("Context creation error") -+ * self.callbackthread = CallbackThread() -+ */ -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":742 -+ * if not self._ctx: -+ * raise MPVError("Context creation error") -+ * self.callbackthread = CallbackThread() # <<<<<<<<<<<<<< -+ * _callbacks[ctxid] = self.callbackthread -+ * self.reply_userdata = dict() -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CallbackThread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 742, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_4, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v_self->callbackthread); -+ __Pyx_DECREF(__pyx_v_self->callbackthread); -+ __pyx_v_self->callbackthread = __pyx_t_1; -+ __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":743 -+ * raise MPVError("Context creation error") -+ * self.callbackthread = CallbackThread() -+ * _callbacks[ctxid] = self.callbackthread # <<<<<<<<<<<<<< -+ * self.reply_userdata = dict() -+ * _reply_userdatas[ctxid] = self.reply_userdata -+ */ -+ __pyx_t_1 = __pyx_v_self->callbackthread; -+ __Pyx_INCREF(__pyx_t_1); -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 743, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":744 -+ * self.callbackthread = CallbackThread() -+ * _callbacks[ctxid] = self.callbackthread -+ * self.reply_userdata = dict() # <<<<<<<<<<<<<< -+ * _reply_userdatas[ctxid] = self.reply_userdata -+ * self.callbackthread.start() -+ */ -+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v_self->reply_userdata); -+ __Pyx_DECREF(__pyx_v_self->reply_userdata); -+ __pyx_v_self->reply_userdata = __pyx_t_1; -+ __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":745 -+ * _callbacks[ctxid] = self.callbackthread -+ * self.reply_userdata = dict() -+ * _reply_userdatas[ctxid] = self.reply_userdata # <<<<<<<<<<<<<< -+ * self.callbackthread.start() -+ * -+ */ -+ __pyx_t_1 = __pyx_v_self->reply_userdata; -+ __Pyx_INCREF(__pyx_t_1); -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 745, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":746 -+ * self.reply_userdata = dict() -+ * _reply_userdatas[ctxid] = self.reply_userdata -+ * self.callbackthread.start() # <<<<<<<<<<<<<< -+ * -+ * @_errors -+ */ -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 746, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_4, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":736 -+ * return pipe -+ * -+ * def __cinit__(self): # <<<<<<<<<<<<<< -+ * cdef uint64_t ctxid = id(self) -+ * with nogil: -+ */ -+ -+ /* function exit code */ -+ __pyx_r = 0; -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = -1; -+ __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":704 -- * return err -+/* "vidcutter/libs/pympv/mpv.pyx":749 - * -- * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< -- * """Wraps: mpv_wait_event""" -+ * @_errors -+ * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_observe_property""" - * assert self._ctx - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29wait_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_28wait_event[] = "Wraps: mpv_wait_event"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29wait_event(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_timeout = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_34observe_property[] = "Wraps: mpv_observe_property"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_prop = 0; -+ PyObject *__pyx_v_data = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("wait_event (wrapper)", 0); -+ __Pyx_RefNannySetupContext("observe_property (wrapper)", 0); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; -- PyObject* values[1] = {0}; -- values[0] = ((PyObject *)Py_None); -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,0}; -+ PyObject* values[2] = {0,0}; -+ values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; -@@ -14211,117 +14206,291 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_29wait_event(PyObject * - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: - if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); -- if (value) { values[0] = value; kw_args--; } -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); -+ if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_event") < 0)) __PYX_ERR(0, 704, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "observe_property") < 0)) __PYX_ERR(0, 749, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; -- case 0: break; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ break; - default: goto __pyx_L5_argtuple_error; - } - } -- __pyx_v_timeout = values[0]; -+ __pyx_v_prop = values[0]; -+ __pyx_v_data = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("wait_event", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 704, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("observe_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 749, __pyx_L3_error) - __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_28wait_event(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_timeout); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28wait_event(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_timeout) { -- double __pyx_v_timeout_d; -- struct mpv_event *__pyx_v_event; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data) { -+ uint64_t __pyx_v_id_data; -+ PyObject *__pyx_v_userdatas = NULL; -+ char *__pyx_v_propc; -+ int __pyx_v_err; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- double __pyx_t_1; -- int __pyx_t_2; -- double __pyx_t_3; -+ Py_hash_t __pyx_t_1; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; -+ PyObject *__pyx_t_7 = NULL; -+ int __pyx_t_8; -+ int __pyx_t_9; -+ char *__pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("wait_event", 0); -+ __Pyx_RefNannySetupContext("observe_property", 0); -+ __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":706 -- * def wait_event(self, timeout=None): -- * """Wraps: mpv_wait_event""" -+ /* "vidcutter/libs/pympv/mpv.pyx":751 -+ * def observe_property(self, prop, data=None): -+ * """Wraps: mpv_observe_property""" - * assert self._ctx # <<<<<<<<<<<<<< -- * cdef double timeout_d = timeout if timeout is not None else -1 -- * cdef mpv_event* event -+ * cdef uint64_t id_data = hash(data) -+ * id_data = hash(data) - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 706, __pyx_L1_error) -+ __PYX_ERR(0, 751, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":707 -- * """Wraps: mpv_wait_event""" -+ /* "vidcutter/libs/pympv/mpv.pyx":752 -+ * """Wraps: mpv_observe_property""" - * assert self._ctx -- * cdef double timeout_d = timeout if timeout is not None else -1 # <<<<<<<<<<<<<< -- * cdef mpv_event* event -- * with nogil: -+ * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< -+ * id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) - */ -- __pyx_t_2 = (__pyx_v_timeout != Py_None); -- if ((__pyx_t_2 != 0)) { -- __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_timeout); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 707, __pyx_L1_error) -- __pyx_t_1 = __pyx_t_3; -- } else { -- __pyx_t_1 = -1.0; -- } -- __pyx_v_timeout_d = __pyx_t_1; -+ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 752, __pyx_L1_error) -+ __pyx_v_id_data = ((uint64_t)__pyx_t_1); - -- /* "vidcutter/libs/pympv/mpv.pyx":709 -- * cdef double timeout_d = timeout if timeout is not None else -1 -- * cdef mpv_event* event -- * with nogil: # <<<<<<<<<<<<<< -- * event = mpv_wait_event(self._ctx, timeout_d) -- * return Event()._init(event, self) -+ /* "vidcutter/libs/pympv/mpv.pyx":753 -+ * assert self._ctx -+ * cdef uint64_t id_data = hash(data) -+ * id_data = hash(data) # <<<<<<<<<<<<<< -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is None: - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 753, __pyx_L1_error) -+ __pyx_v_id_data = ((uint64_t)__pyx_t_1); - -- /* "vidcutter/libs/pympv/mpv.pyx":710 -- * cdef mpv_event* event -- * with nogil: -- * event = mpv_wait_event(self._ctx, timeout_d) # <<<<<<<<<<<<<< -- * return Event()._init(event, self) -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":754 -+ * cdef uint64_t id_data = hash(data) -+ * id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< -+ * if userdatas is None: -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) - */ -- __pyx_v_event = mpv_wait_event(__pyx_v_self->_ctx, __pyx_v_timeout_d); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":709 -- * cdef double timeout_d = timeout if timeout is not None else -1 -- * cdef mpv_event* event -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ __pyx_t_6 = 0; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ __pyx_t_6 = 1; -+ } -+ } -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_3)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ if (__pyx_t_5) { -+ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; -+ } -+ __Pyx_GIVEREF(__pyx_t_4); -+ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); -+ __pyx_t_4 = 0; -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ } -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_v_userdatas = __pyx_t_2; -+ __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":755 -+ * id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is None: # <<<<<<<<<<<<<< -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ * userdatas.observed = True -+ */ -+ __pyx_t_8 = (__pyx_v_userdatas == Py_None); -+ __pyx_t_9 = (__pyx_t_8 != 0); -+ if (__pyx_t_9) { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":756 -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is None: -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< -+ * userdatas.observed = True -+ * prop = _strenc(prop) -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_7 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_7)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_7); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } -+ } -+ __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); -+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_2, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 756, __pyx_L1_error) -+ __Pyx_INCREF(__pyx_t_2); -+ __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_2); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":755 -+ * id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is None: # <<<<<<<<<<<<<< -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ * userdatas.observed = True -+ */ -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":757 -+ * if userdatas is None: -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ * userdatas.observed = True # <<<<<<<<<<<<<< -+ * prop = _strenc(prop) -+ * cdef char* propc = prop -+ */ -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_True) < 0) __PYX_ERR(0, 757, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":758 -+ * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ * userdatas.observed = True -+ * prop = _strenc(prop) # <<<<<<<<<<<<<< -+ * cdef char* propc = prop -+ * cdef int err -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strenc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_7 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_7)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_7); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } -+ } -+ __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_prop); -+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_2); -+ __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":759 -+ * userdatas.observed = True -+ * prop = _strenc(prop) -+ * cdef char* propc = prop # <<<<<<<<<<<<<< -+ * cdef int err -+ * with nogil: -+ */ -+ __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 759, __pyx_L1_error) -+ __pyx_v_propc = __pyx_t_10; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":761 -+ * cdef char* propc = prop -+ * cdef int err - * with nogil: # <<<<<<<<<<<<<< -- * event = mpv_wait_event(self._ctx, timeout_d) -- * return Event()._init(event, self) -+ * err = mpv_observe_property( -+ * self._ctx, -+ */ -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":762 -+ * cdef int err -+ * with nogil: -+ * err = mpv_observe_property( # <<<<<<<<<<<<<< -+ * self._ctx, -+ * id_data, -+ */ -+ __pyx_v_err = mpv_observe_property(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_propc, MPV_FORMAT_NODE); -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":761 -+ * cdef char* propc = prop -+ * cdef int err -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_observe_property( -+ * self._ctx, - */ - /*finally:*/ { - /*normal exit:*/{ -@@ -14329,101 +14498,248 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28wait_event(struct __p - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif -- goto __pyx_L5; -+ goto __pyx_L6; - } -- __pyx_L5:; -+ __pyx_L6:; - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":711 -- * with nogil: -- * event = mpv_wait_event(self._ctx, timeout_d) -- * return Event()._init(event, self) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":768 -+ * MPV_FORMAT_NODE, -+ * ) -+ * return err # <<<<<<<<<<<<<< - * -- * def wakeup(self): -+ * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 711, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4), __pyx_v_event, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_r = __pyx_t_5; -- __pyx_t_5 = 0; -+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_r = __pyx_t_2; -+ __pyx_t_2 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":704 -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":749 - * -- * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< -- * """Wraps: mpv_wait_event""" -+ * @_errors -+ * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_observe_property""" - * assert self._ctx - */ - - /* function exit code */ - __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_userdatas); -+ __Pyx_XDECREF(__pyx_v_prop); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":713 -- * return Event()._init(event, self) -+/* "vidcutter/libs/pympv/mpv.pyx":771 - * -- * def wakeup(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_wakeup""" -+ * @_errors -+ * def unobserve_property(self, data): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_unobserve_property""" - * assert self._ctx - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_31wakeup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_30wakeup[] = "Wraps: mpv_wakeup"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_31wakeup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_37unobserve_property(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/ -+static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_36unobserve_property[] = "Wraps: mpv_unobserve_property"; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_37unobserve_property(PyObject *__pyx_v_self, PyObject *__pyx_v_data) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("wakeup (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("unobserve_property (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_data)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_data) { -+ uint64_t __pyx_v_id_data; -+ PyObject *__pyx_v_userdatas = NULL; -+ int __pyx_v_err; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -+ Py_hash_t __pyx_t_1; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; -+ PyObject *__pyx_t_7 = NULL; -+ int __pyx_t_8; -+ int __pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("wakeup", 0); -+ __Pyx_RefNannySetupContext("unobserve_property", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":715 -- * def wakeup(self): -- * """Wraps: mpv_wakeup""" -+ /* "vidcutter/libs/pympv/mpv.pyx":773 -+ * def unobserve_property(self, data): -+ * """Wraps: mpv_unobserve_property""" - * assert self._ctx # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_wakeup(self._ctx) -+ * cdef uint64_t id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 715, __pyx_L1_error) -+ __PYX_ERR(0, 773, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":716 -- * """Wraps: mpv_wakeup""" -+ /* "vidcutter/libs/pympv/mpv.pyx":774 -+ * """Wraps: mpv_unobserve_property""" -+ * assert self._ctx -+ * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is not None: -+ */ -+ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 774, __pyx_L1_error) -+ __pyx_v_id_data = ((uint64_t)__pyx_t_1); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":775 - * assert self._ctx -+ * cdef uint64_t id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< -+ * if userdatas is not None: -+ * userdatas.observed = False -+ */ -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ __pyx_t_6 = 0; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ __pyx_t_6 = 1; -+ } -+ } -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(__pyx_t_3)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { -+ PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else -+ #endif -+ { -+ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ if (__pyx_t_5) { -+ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; -+ } -+ __Pyx_GIVEREF(__pyx_t_4); -+ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); -+ __pyx_t_4 = 0; -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ } -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_v_userdatas = __pyx_t_2; -+ __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":776 -+ * cdef uint64_t id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is not None: # <<<<<<<<<<<<<< -+ * userdatas.observed = False -+ * if userdatas.counter <= 0: -+ */ -+ __pyx_t_8 = (__pyx_v_userdatas != Py_None); -+ __pyx_t_9 = (__pyx_t_8 != 0); -+ if (__pyx_t_9) { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":777 -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is not None: -+ * userdatas.observed = False # <<<<<<<<<<<<<< -+ * if userdatas.counter <= 0: -+ * del self.reply_userdata[id_data] -+ */ -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 777, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":778 -+ * if userdatas is not None: -+ * userdatas.observed = False -+ * if userdatas.counter <= 0: # <<<<<<<<<<<<<< -+ * del self.reply_userdata[id_data] -+ * cdef int err -+ */ -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_counter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 778, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 778, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 778, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (__pyx_t_9) { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":779 -+ * userdatas.observed = False -+ * if userdatas.counter <= 0: -+ * del self.reply_userdata[id_data] # <<<<<<<<<<<<<< -+ * cdef int err -+ * with nogil: -+ */ -+ if (unlikely(__Pyx_DelItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 779, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":778 -+ * if userdatas is not None: -+ * userdatas.observed = False -+ * if userdatas.counter <= 0: # <<<<<<<<<<<<<< -+ * del self.reply_userdata[id_data] -+ * cdef int err -+ */ -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":776 -+ * cdef uint64_t id_data = hash(data) -+ * userdatas = self.reply_userdata.get(id_data, None) -+ * if userdatas is not None: # <<<<<<<<<<<<<< -+ * userdatas.observed = False -+ * if userdatas.counter <= 0: -+ */ -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":781 -+ * del self.reply_userdata[id_data] -+ * cdef int err - * with nogil: # <<<<<<<<<<<<<< -- * mpv_wakeup(self._ctx) -- * -+ * err = mpv_unobserve_property( -+ * self._ctx, - */ - { - #ifdef WITH_THREAD -@@ -14433,22 +14749,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(struct __pyx_o - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":717 -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":782 -+ * cdef int err - * with nogil: -- * mpv_wakeup(self._ctx) # <<<<<<<<<<<<<< -- * -- * def set_wakeup_callback(self, callback): -+ * err = mpv_unobserve_property( # <<<<<<<<<<<<<< -+ * self._ctx, -+ * id_data, - */ -- mpv_wakeup(__pyx_v_self->_ctx); -+ __pyx_v_err = mpv_unobserve_property(__pyx_v_self->_ctx, __pyx_v_id_data); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":716 -- * """Wraps: mpv_wakeup""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":781 -+ * del self.reply_userdata[id_data] -+ * cdef int err - * with nogil: # <<<<<<<<<<<<<< -- * mpv_wakeup(self._ctx) -- * -+ * err = mpv_unobserve_property( -+ * self._ctx, - */ - /*finally:*/ { - /*normal exit:*/{ -@@ -14456,141 +14772,134 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30wakeup(struct __pyx_o - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif -- goto __pyx_L5; -+ goto __pyx_L7; - } -- __pyx_L5:; -+ __pyx_L7:; - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":713 -- * return Event()._init(event, self) -+ /* "vidcutter/libs/pympv/mpv.pyx":786 -+ * id_data, -+ * ) -+ * return err # <<<<<<<<<<<<<< - * -- * def wakeup(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_wakeup""" -+ * def shutdown(self): -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 786, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":771 -+ * -+ * @_errors -+ * def unobserve_property(self, data): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_unobserve_property""" - * assert self._ctx - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wakeup", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.unobserve_property", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_userdatas); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":719 -- * mpv_wakeup(self._ctx) -+/* "vidcutter/libs/pympv/mpv.pyx":788 -+ * return err - * -- * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< -- * """Wraps: mpv_set_wakeup_callback""" -- * assert self._ctx -+ * def shutdown(self): # <<<<<<<<<<<<<< -+ * if self._ctx == NULL: -+ * return - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_33set_wakeup_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback[] = "Wraps: mpv_set_wakeup_callback"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_33set_wakeup_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_39shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_39shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_wakeup_callback (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); -+ __Pyx_RefNannySetupContext("shutdown (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_callback) { -- uint64_t __pyx_v_name; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -+ uint64_t __pyx_v_ctxid; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- uint64_t __pyx_t_2; -- PyObject *__pyx_t_3 = NULL; -+ int __pyx_t_1; -+ PyObject *__pyx_t_2 = NULL; -+ uint64_t __pyx_t_3; - PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("set_wakeup_callback", 0); -+ __Pyx_RefNannySetupContext("shutdown", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":721 -- * def set_wakeup_callback(self, callback): -- * """Wraps: mpv_set_wakeup_callback""" -- * assert self._ctx # <<<<<<<<<<<<<< -- * cdef uint64_t name = id(self) -- * self.callback = callback -+ /* "vidcutter/libs/pympv/mpv.pyx":789 -+ * -+ * def shutdown(self): -+ * if self._ctx == NULL: # <<<<<<<<<<<<<< -+ * return -+ * cdef uint64_t ctxid = id(self) - */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 721, __pyx_L1_error) -- } -- } -- #endif -+ __pyx_t_1 = ((__pyx_v_self->_ctx == NULL) != 0); -+ if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":722 -- * """Wraps: mpv_set_wakeup_callback""" -- * assert self._ctx -- * cdef uint64_t name = id(self) # <<<<<<<<<<<<<< -- * self.callback = callback -- * self.callbackthread.set(callback) -- */ -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 722, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_name = ((uint64_t)__pyx_t_2); -- -- /* "vidcutter/libs/pympv/mpv.pyx":723 -- * assert self._ctx -- * cdef uint64_t name = id(self) -- * self.callback = callback # <<<<<<<<<<<<<< -- * self.callbackthread.set(callback) -+ /* "vidcutter/libs/pympv/mpv.pyx":790 -+ * def shutdown(self): -+ * if self._ctx == NULL: -+ * return # <<<<<<<<<<<<<< -+ * cdef uint64_t ctxid = id(self) - * with nogil: - */ -- __Pyx_INCREF(__pyx_v_callback); -- __Pyx_GIVEREF(__pyx_v_callback); -- __Pyx_GOTREF(__pyx_v_self->callback); -- __Pyx_DECREF(__pyx_v_self->callback); -- __pyx_v_self->callback = __pyx_v_callback; -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":724 -- * cdef uint64_t name = id(self) -- * self.callback = callback -- * self.callbackthread.set(callback) # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) -+ /* "vidcutter/libs/pympv/mpv.pyx":789 -+ * -+ * def shutdown(self): -+ * if self._ctx == NULL: # <<<<<<<<<<<<<< -+ * return -+ * cdef uint64_t ctxid = id(self) - */ -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } - } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_callback) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":725 -- * self.callback = callback -- * self.callbackthread.set(callback) -+ /* "vidcutter/libs/pympv/mpv.pyx":791 -+ * if self._ctx == NULL: -+ * return -+ * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< -+ * with nogil: -+ * mpv_terminate_destroy(self._ctx) -+ */ -+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 791, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_ctxid = ((uint64_t)__pyx_t_3); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":792 -+ * return -+ * cdef uint64_t ctxid = id(self) - * with nogil: # <<<<<<<<<<<<<< -- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) -- * -+ * mpv_terminate_destroy(self._ctx) -+ * self.callbackthread.shutdown() - */ - { - #ifdef WITH_THREAD -@@ -14600,22 +14909,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(s - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":726 -- * self.callbackthread.set(callback) -+ /* "vidcutter/libs/pympv/mpv.pyx":793 -+ * cdef uint64_t ctxid = id(self) - * with nogil: -- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) # <<<<<<<<<<<<<< -- * -- * def get_wakeup_pipe(self): -+ * mpv_terminate_destroy(self._ctx) # <<<<<<<<<<<<<< -+ * self.callbackthread.shutdown() -+ * del _callbacks[ctxid] - */ -- mpv_set_wakeup_callback(__pyx_v_self->_ctx, __pyx_f_9vidcutter_4libs_3mpv__c_callback, ((void *)__pyx_v_name)); -+ mpv_terminate_destroy(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":725 -- * self.callback = callback -- * self.callbackthread.set(callback) -+ /* "vidcutter/libs/pympv/mpv.pyx":792 -+ * return -+ * cdef uint64_t ctxid = id(self) - * with nogil: # <<<<<<<<<<<<<< -- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) -- * -+ * mpv_terminate_destroy(self._ctx) -+ * self.callbackthread.shutdown() - */ - /*finally:*/ { - /*normal exit:*/{ -@@ -14623,28 +14932,107 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(s - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif -- goto __pyx_L5; -+ goto __pyx_L6; - } -- __pyx_L5:; -+ __pyx_L6:; - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":719 -- * mpv_wakeup(self._ctx) -+ /* "vidcutter/libs/pympv/mpv.pyx":794 -+ * with nogil: -+ * mpv_terminate_destroy(self._ctx) -+ * self.callbackthread.shutdown() # <<<<<<<<<<<<<< -+ * del _callbacks[ctxid] -+ * del _reply_userdatas[ctxid] -+ */ -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 794, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_4, function); -+ } -+ } -+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":795 -+ * mpv_terminate_destroy(self._ctx) -+ * self.callbackthread.shutdown() -+ * del _callbacks[ctxid] # <<<<<<<<<<<<<< -+ * del _reply_userdatas[ctxid] -+ * self.callback = None -+ */ -+ if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 795, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":796 -+ * self.callbackthread.shutdown() -+ * del _callbacks[ctxid] -+ * del _reply_userdatas[ctxid] # <<<<<<<<<<<<<< -+ * self.callback = None -+ * self.reply_userdata = None -+ */ -+ if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 796, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":797 -+ * del _callbacks[ctxid] -+ * del _reply_userdatas[ctxid] -+ * self.callback = None # <<<<<<<<<<<<<< -+ * self.reply_userdata = None -+ * self._ctx = NULL -+ */ -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ __Pyx_GOTREF(__pyx_v_self->callback); -+ __Pyx_DECREF(__pyx_v_self->callback); -+ __pyx_v_self->callback = Py_None; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":798 -+ * del _reply_userdatas[ctxid] -+ * self.callback = None -+ * self.reply_userdata = None # <<<<<<<<<<<<<< -+ * self._ctx = NULL - * -- * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< -- * """Wraps: mpv_set_wakeup_callback""" -- * assert self._ctx -+ */ -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ __Pyx_GOTREF(__pyx_v_self->reply_userdata); -+ __Pyx_DECREF(__pyx_v_self->reply_userdata); -+ __pyx_v_self->reply_userdata = Py_None; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":799 -+ * self.callback = None -+ * self.reply_userdata = None -+ * self._ctx = NULL # <<<<<<<<<<<<<< -+ * -+ * # def opengl_cb_api(self): -+ */ -+ __pyx_v_self->_ctx = NULL; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":788 -+ * return err -+ * -+ * def shutdown(self): # <<<<<<<<<<<<<< -+ * if self._ctx == NULL: -+ * return - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_wakeup_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); -@@ -14652,374 +15040,403 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback(s - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":728 -- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) -+/* "vidcutter/libs/pympv/mpv.pyx":813 -+ * # return ctx -+ * -+ * def __dealloc__(self): # <<<<<<<<<<<<<< -+ * self.shutdown() - * -- * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_get_wakeup_pipe""" -- * assert self._ctx - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35get_wakeup_pipe(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe[] = "Wraps: mpv_get_wakeup_pipe"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35get_wakeup_pipe(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -+static void __pyx_pw_9vidcutter_4libs_3mpv_7Context_41__dealloc__(PyObject *__pyx_v_self); /*proto*/ -+static void __pyx_pw_9vidcutter_4libs_3mpv_7Context_41__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("get_wakeup_pipe (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); -+ __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -- return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- int __pyx_v_pipe; -- PyObject *__pyx_r = NULL; -+static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("get_wakeup_pipe", 0); -+ __Pyx_RefNannySetupContext("__dealloc__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":730 -- * def get_wakeup_pipe(self): -- * """Wraps: mpv_get_wakeup_pipe""" -- * assert self._ctx # <<<<<<<<<<<<<< -- * cdef int pipe -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":814 -+ * -+ * def __dealloc__(self): -+ * self.shutdown() # <<<<<<<<<<<<<< -+ * -+ * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: - */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 730, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 814, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); - } - } -- #endif -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":732 -- * assert self._ctx -- * cdef int pipe -- * with nogil: # <<<<<<<<<<<<<< -- * pipe = mpv_get_wakeup_pipe(self._ctx) -- * return pipe -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":733 -- * cdef int pipe -- * with nogil: -- * pipe = mpv_get_wakeup_pipe(self._ctx) # <<<<<<<<<<<<<< -- * return pipe -+ /* "vidcutter/libs/pympv/mpv.pyx":813 -+ * # return ctx -+ * -+ * def __dealloc__(self): # <<<<<<<<<<<<<< -+ * self.shutdown() - * - */ -- __pyx_v_pipe = mpv_get_wakeup_pipe(__pyx_v_self->_ctx); -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":732 -- * assert self._ctx -- * cdef int pipe -- * with nogil: # <<<<<<<<<<<<<< -- * pipe = mpv_get_wakeup_pipe(self._ctx) -- * return pipe -+ /* function exit code */ -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __pyx_L0:; -+ __Pyx_RefNannyFinishContext(); -+} -+ -+/* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * def __setstate_cython__(self, __pyx_state): - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":734 -- * with nogil: -- * pipe = mpv_get_wakeup_pipe(self._ctx) -- * return pipe # <<<<<<<<<<<<<< -- * -- * def __cinit__(self): -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_43__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_43__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_42__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_42__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ -+ /* "(tree fragment)":2 -+ * def __reduce_cython__(self): -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(1, 2, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":728 -- * mpv_set_wakeup_callback(self._ctx, _c_callback, name) -- * -- * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_get_wakeup_pipe""" -- * assert self._ctx -+ /* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_wakeup_pipe", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; -- __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":736 -- * return pipe -- * -- * def __cinit__(self): # <<<<<<<<<<<<<< -- * cdef uint64_t ctxid = id(self) -- * with nogil: -+/* "(tree fragment)":3 -+ * def __reduce_cython__(self): -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") - */ - - /* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_7Context_37__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_7Context_37__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- int __pyx_r; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_45__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_45__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); -- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { -- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} -- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_36__cinit__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_44__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_36__cinit__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- uint64_t __pyx_v_ctxid; -- int __pyx_r; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- uint64_t __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__cinit__", 0); -+ __Pyx_RefNannySetupContext("__setstate_cython__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":737 -- * -- * def __cinit__(self): -- * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< -- * with nogil: -- * self._ctx = mpv_create() -+ /* "(tree fragment)":4 -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< - */ -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 737, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 737, __pyx_L1_error) -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_ctxid = ((uint64_t)__pyx_t_2); -+ __PYX_ERR(1, 4, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":738 -- * def __cinit__(self): -- * cdef uint64_t ctxid = id(self) -- * with nogil: # <<<<<<<<<<<<<< -- * self._ctx = mpv_create() -- * if not self._ctx: -+ /* "(tree fragment)":3 -+ * def __reduce_cython__(self): -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":739 -- * cdef uint64_t ctxid = id(self) -- * with nogil: -- * self._ctx = mpv_create() # <<<<<<<<<<<<<< -- * if not self._ctx: -- * raise MPVError("Context creation error") -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "vidcutter/libs/pympv/mpv.pyx":816 -+ * self.shutdown() -+ * -+ * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< -+ * return (ctx)(name) -+ * - */ -- __pyx_v_self->_ctx = mpv_create(); -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":738 -- * def __cinit__(self): -- * cdef uint64_t ctxid = id(self) -- * with nogil: # <<<<<<<<<<<<<< -- * self._ctx = mpv_create() -- * if not self._ctx: -+static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, char const *__pyx_v_name) { -+ void *__pyx_r; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ intptr_t __pyx_t_5; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ #ifdef WITH_THREAD -+ PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); -+ #endif -+ __Pyx_RefNannySetupContext("_c_getprocaddress", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":817 -+ * -+ * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: -+ * return (ctx)(name) # <<<<<<<<<<<<<< -+ * -+ * cdef void _c_updatecb(void *ctx) with gil: - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -+ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); -+ __pyx_t_3 = ((PyObject *)__pyx_v_ctx); __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } - } -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 817, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_r = ((void *)((intptr_t)__pyx_t_5)); -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":740 -- * with nogil: -- * self._ctx = mpv_create() -- * if not self._ctx: # <<<<<<<<<<<<<< -- * raise MPVError("Context creation error") -- * self.callbackthread = CallbackThread() -+ /* "vidcutter/libs/pympv/mpv.pyx":816 -+ * self.shutdown() -+ * -+ * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< -+ * return (ctx)(name) -+ * - */ -- __pyx_t_3 = ((!(__pyx_v_self->_ctx != 0)) != 0); -- if (unlikely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":741 -- * self._ctx = mpv_create() -- * if not self._ctx: -- * raise MPVError("Context creation error") # <<<<<<<<<<<<<< -- * self.callbackthread = CallbackThread() -- * _callbacks[ctxid] = self.callbackthread -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 741, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -- } -- } -- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_Context_creation_error) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Context_creation_error); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 741, __pyx_L1_error) -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_getprocaddress", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __pyx_r = 0; -+ __pyx_L0:; -+ __Pyx_RefNannyFinishContext(); -+ #ifdef WITH_THREAD -+ __Pyx_PyGILState_Release(__pyx_gilstate_save); -+ #endif -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":740 -- * with nogil: -- * self._ctx = mpv_create() -- * if not self._ctx: # <<<<<<<<<<<<<< -- * raise MPVError("Context creation error") -- * self.callbackthread = CallbackThread() -+/* "vidcutter/libs/pympv/mpv.pyx":819 -+ * return (ctx)(name) -+ * -+ * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< -+ * (ctx)() -+ * - */ -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":742 -- * if not self._ctx: -- * raise MPVError("Context creation error") -- * self.callbackthread = CallbackThread() # <<<<<<<<<<<<<< -- * _callbacks[ctxid] = self.callbackthread -- * self.reply_userdata = dict() -+static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ #ifdef WITH_THREAD -+ PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); -+ #endif -+ __Pyx_RefNannySetupContext("_c_updatecb", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":820 -+ * -+ * cdef void _c_updatecb(void *ctx) with gil: -+ * (ctx)() # <<<<<<<<<<<<<< -+ * -+ * # cdef class OpenGLContext(object): - */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CallbackThread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 742, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -- __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); -+ __pyx_t_2 = ((PyObject *)__pyx_v_ctx); __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); - } - } -- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error) -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 820, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->callbackthread); -- __Pyx_DECREF(__pyx_v_self->callbackthread); -- __pyx_v_self->callbackthread = __pyx_t_1; -- __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":743 -- * raise MPVError("Context creation error") -- * self.callbackthread = CallbackThread() -- * _callbacks[ctxid] = self.callbackthread # <<<<<<<<<<<<<< -- * self.reply_userdata = dict() -- * _reply_userdatas[ctxid] = self.reply_userdata -- */ -- __pyx_t_1 = __pyx_v_self->callbackthread; -- __Pyx_INCREF(__pyx_t_1); -- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 743, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":744 -- * self.callbackthread = CallbackThread() -- * _callbacks[ctxid] = self.callbackthread -- * self.reply_userdata = dict() # <<<<<<<<<<<<<< -- * _reply_userdatas[ctxid] = self.reply_userdata -- * self.callbackthread.start() -+ /* "vidcutter/libs/pympv/mpv.pyx":819 -+ * return (ctx)(name) -+ * -+ * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< -+ * (ctx)() -+ * - */ -- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->reply_userdata); -- __Pyx_DECREF(__pyx_v_self->reply_userdata); -- __pyx_v_self->reply_userdata = __pyx_t_1; -- __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":745 -- * _callbacks[ctxid] = self.callbackthread -- * self.reply_userdata = dict() -- * _reply_userdatas[ctxid] = self.reply_userdata # <<<<<<<<<<<<<< -- * self.callbackthread.start() -+ /* function exit code */ -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_updatecb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __pyx_L0:; -+ __Pyx_RefNannyFinishContext(); -+ #ifdef WITH_THREAD -+ __Pyx_PyGILState_Release(__pyx_gilstate_save); -+ #endif -+} -+ -+/* "vidcutter/libs/pympv/mpv.pyx":886 -+ * object owned - * -+ * def __init__(self): # <<<<<<<<<<<<<< -+ * self.owned = [] -+ * self.params[0].type = MPV_RENDER_PARAM_INVALID - */ -- __pyx_t_1 = __pyx_v_self->reply_userdata; -- __Pyx_INCREF(__pyx_t_1); -- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 745, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":746 -- * self.reply_userdata = dict() -- * _reply_userdatas[ctxid] = self.reply_userdata -- * self.callbackthread.start() # <<<<<<<<<<<<<< -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -+ if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { -+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} -+ if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__init__", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":887 -+ * -+ * def __init__(self): -+ * self.owned = [] # <<<<<<<<<<<<<< -+ * self.params[0].type = MPV_RENDER_PARAM_INVALID - * -- * @_errors - */ -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 746, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -- } -- } -- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) -+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v_self->owned); -+ __Pyx_DECREF(__pyx_v_self->owned); -+ __pyx_v_self->owned = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":736 -- * return pipe -+ /* "vidcutter/libs/pympv/mpv.pyx":888 -+ * def __init__(self): -+ * self.owned = [] -+ * self.params[0].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< - * -- * def __cinit__(self): # <<<<<<<<<<<<<< -- * cdef uint64_t ctxid = id(self) -- * with nogil: -+ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): -+ */ -+ (__pyx_v_self->params[0]).type = MPV_RENDER_PARAM_INVALID; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":886 -+ * object owned -+ * -+ * def __init__(self): # <<<<<<<<<<<<<< -+ * self.owned = [] -+ * self.params[0].type = MPV_RENDER_PARAM_INVALID - */ - - /* function exit code */ -@@ -15027,1094 +15444,479 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_36__cinit__(struct __pyx_obj_ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":749 -+/* "vidcutter/libs/pympv/mpv.pyx":890 -+ * self.params[0].type = MPV_RENDER_PARAM_INVALID - * -- * @_errors -- * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< -- * """Wraps: mpv_observe_property""" -- * assert self._ctx -+ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< -+ * count = len(self.owned) -+ * if count >= MAX_RENDER_PARAMS: - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_39observe_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_38observe_property[] = "Wraps: mpv_observe_property"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_39observe_property(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_prop = 0; -- PyObject *__pyx_v_data = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("observe_property (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prop,&__pyx_n_s_data,0}; -- PyObject* values[2] = {0,0}; -- values[1] = ((PyObject *)Py_None); -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prop)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data); -- if (value) { values[1] = value; kw_args--; } -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "observe_property") < 0)) __PYX_ERR(0, 749, __pyx_L3_error) -- } -- } else { -- switch (PyTuple_GET_SIZE(__pyx_args)) { -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- break; -- default: goto __pyx_L5_argtuple_error; -- } -- } -- __pyx_v_prop = values[0]; -- __pyx_v_data = values[1]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("observe_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 749, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_38observe_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), __pyx_v_prop, __pyx_v_data); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38observe_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_prop, PyObject *__pyx_v_data) { -- uint64_t __pyx_v_id_data; -- PyObject *__pyx_v_userdatas = NULL; -- char *__pyx_v_propc; -- int __pyx_v_err; -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, void *__pyx_v_p, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args) { -+ int __pyx_v_owned = ((int)0); -+ PyObject *__pyx_v_count = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- Py_hash_t __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_1 = NULL; -+ Py_ssize_t __pyx_t_2; -+ int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; -- PyObject *__pyx_t_7 = NULL; -- int __pyx_t_8; -- int __pyx_t_9; -- char *__pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("observe_property", 0); -- __Pyx_INCREF(__pyx_v_prop); -- -- /* "vidcutter/libs/pympv/mpv.pyx":751 -- * def observe_property(self, prop, data=None): -- * """Wraps: mpv_observe_property""" -- * assert self._ctx # <<<<<<<<<<<<<< -- * cdef uint64_t id_data = hash(data) -- * id_data = hash(data) -- */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 751, __pyx_L1_error) -+ __Pyx_RefNannySetupContext("add_voidp", 0); -+ if (__pyx_optional_args) { -+ if (__pyx_optional_args->__pyx_n > 0) { -+ __pyx_v_owned = __pyx_optional_args->owned; - } - } -- #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":752 -- * """Wraps: mpv_observe_property""" -- * assert self._ctx -- * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< -- * id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) -+ /* "vidcutter/libs/pympv/mpv.pyx":891 -+ * -+ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): -+ * count = len(self.owned) # <<<<<<<<<<<<<< -+ * if count >= MAX_RENDER_PARAMS: -+ * if owned: - */ -- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 752, __pyx_L1_error) -- __pyx_v_id_data = ((uint64_t)__pyx_t_1); -+ __pyx_t_1 = __pyx_v_self->owned; -+ __Pyx_INCREF(__pyx_t_1); -+ __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 891, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v_count = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":753 -- * assert self._ctx -- * cdef uint64_t id_data = hash(data) -- * id_data = hash(data) # <<<<<<<<<<<<<< -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is None: -+ /* "vidcutter/libs/pympv/mpv.pyx":892 -+ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): -+ * count = len(self.owned) -+ * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< -+ * if owned: -+ * free(p) - */ -- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 753, __pyx_L1_error) -- __pyx_v_id_data = ((uint64_t)__pyx_t_1); -+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_count, __pyx_int_32, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 892, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 892, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__pyx_t_3) { - -- /* "vidcutter/libs/pympv/mpv.pyx":754 -- * cdef uint64_t id_data = hash(data) -- * id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< -- * if userdatas is None: -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -+ /* "vidcutter/libs/pympv/mpv.pyx":893 -+ * count = len(self.owned) -+ * if count >= MAX_RENDER_PARAMS: -+ * if owned: # <<<<<<<<<<<<<< -+ * free(p) -+ * raise PyMPVError("RenderParams overflow") - */ -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- __pyx_t_6 = 0; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- __pyx_t_6 = 1; -- } -- } -- #if CYTHON_FAST_PYCALL -- if (PyFunction_Check(__pyx_t_3)) { -- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- } else -- #endif -- #if CYTHON_FAST_PYCCALL -- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { -- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- } else -- #endif -- { -- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 754, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- if (__pyx_t_5) { -- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; -- } -- __Pyx_GIVEREF(__pyx_t_4); -- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); -- __pyx_t_4 = 0; -- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- } -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_v_userdatas = __pyx_t_2; -- __pyx_t_2 = 0; -+ __pyx_t_3 = (__pyx_v_owned != 0); -+ if (__pyx_t_3) { - -- /* "vidcutter/libs/pympv/mpv.pyx":755 -- * id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is None: # <<<<<<<<<<<<<< -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -- * userdatas.observed = True -+ /* "vidcutter/libs/pympv/mpv.pyx":894 -+ * if count >= MAX_RENDER_PARAMS: -+ * if owned: -+ * free(p) # <<<<<<<<<<<<<< -+ * raise PyMPVError("RenderParams overflow") -+ * - */ -- __pyx_t_8 = (__pyx_v_userdatas == Py_None); -- __pyx_t_9 = (__pyx_t_8 != 0); -- if (__pyx_t_9) { -+ free(__pyx_v_p); - -- /* "vidcutter/libs/pympv/mpv.pyx":756 -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is None: -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< -- * userdatas.observed = True -- * prop = _strenc(prop) -+ /* "vidcutter/libs/pympv/mpv.pyx":893 -+ * count = len(self.owned) -+ * if count >= MAX_RENDER_PARAMS: -+ * if owned: # <<<<<<<<<<<<<< -+ * free(p) -+ * raise PyMPVError("RenderParams overflow") - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_7 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_7)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_7); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } - } -- __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); -- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_2, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 756, __pyx_L1_error) -- __Pyx_INCREF(__pyx_t_2); -- __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_2); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":755 -- * id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is None: # <<<<<<<<<<<<<< -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -- * userdatas.observed = True -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":757 -- * if userdatas is None: -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -- * userdatas.observed = True # <<<<<<<<<<<<<< -- * prop = _strenc(prop) -- * cdef char* propc = prop -- */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_True) < 0) __PYX_ERR(0, 757, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":758 -- * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) -- * userdatas.observed = True -- * prop = _strenc(prop) # <<<<<<<<<<<<<< -- * cdef char* propc = prop -- * cdef int err -+ /* "vidcutter/libs/pympv/mpv.pyx":895 -+ * if owned: -+ * free(p) -+ * raise PyMPVError("RenderParams overflow") # <<<<<<<<<<<<<< -+ * -+ * self.params[count].type = t - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strenc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_7 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_7)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_7); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_4, function); -+ } - } -- } -- __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_prop); -- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_2); -- __pyx_t_2 = 0; -+ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_RenderParams_overflow) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_RenderParams_overflow); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(0, 895, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":759 -- * userdatas.observed = True -- * prop = _strenc(prop) -- * cdef char* propc = prop # <<<<<<<<<<<<<< -- * cdef int err -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":892 -+ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): -+ * count = len(self.owned) -+ * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< -+ * if owned: -+ * free(p) - */ -- __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 759, __pyx_L1_error) -- __pyx_v_propc = __pyx_t_10; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":761 -- * cdef char* propc = prop -- * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_observe_property( -- * self._ctx, -+ /* "vidcutter/libs/pympv/mpv.pyx":897 -+ * raise PyMPVError("RenderParams overflow") -+ * -+ * self.params[count].type = t # <<<<<<<<<<<<<< -+ * self.params[count].data = p -+ * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 897, __pyx_L1_error) -+ (__pyx_v_self->params[__pyx_t_2]).type = __pyx_v_t; - -- /* "vidcutter/libs/pympv/mpv.pyx":762 -- * cdef int err -- * with nogil: -- * err = mpv_observe_property( # <<<<<<<<<<<<<< -- * self._ctx, -- * id_data, -+ /* "vidcutter/libs/pympv/mpv.pyx":898 -+ * -+ * self.params[count].type = t -+ * self.params[count].data = p # <<<<<<<<<<<<<< -+ * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID -+ * self.owned.append(owned) - */ -- __pyx_v_err = mpv_observe_property(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_propc, MPV_FORMAT_NODE); -- } -+ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 898, __pyx_L1_error) -+ (__pyx_v_self->params[__pyx_t_2]).data = __pyx_v_p; - -- /* "vidcutter/libs/pympv/mpv.pyx":761 -- * cdef char* propc = prop -- * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_observe_property( -- * self._ctx, -+ /* "vidcutter/libs/pympv/mpv.pyx":899 -+ * self.params[count].type = t -+ * self.params[count].data = p -+ * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< -+ * self.owned.append(owned) -+ * - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L6; -- } -- __pyx_L6:; -- } -- } -+ __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_count, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 899, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ (__pyx_v_self->params[__pyx_t_2]).type = MPV_RENDER_PARAM_INVALID; - -- /* "vidcutter/libs/pympv/mpv.pyx":768 -- * MPV_FORMAT_NODE, -- * ) -- * return err # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":900 -+ * self.params[count].data = p -+ * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID -+ * self.owned.append(owned) # <<<<<<<<<<<<<< - * -- * @_errors -+ * cdef add_int(self, mpv_render_param_type t, int val): - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_r = __pyx_t_2; -- __pyx_t_2 = 0; -- goto __pyx_L0; -+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_owned); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 900, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->owned, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 900, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":749 -+ /* "vidcutter/libs/pympv/mpv.pyx":890 -+ * self.params[0].type = MPV_RENDER_PARAM_INVALID - * -- * @_errors -- * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< -- * """Wraps: mpv_observe_property""" -- * assert self._ctx -+ * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< -+ * count = len(self.owned) -+ * if count >= MAX_RENDER_PARAMS: - */ - - /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_voidp", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_userdatas); -- __Pyx_XDECREF(__pyx_v_prop); -+ __Pyx_XDECREF(__pyx_v_count); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":771 -+/* "vidcutter/libs/pympv/mpv.pyx":902 -+ * self.owned.append(owned) - * -- * @_errors -- * def unobserve_property(self, data): # <<<<<<<<<<<<<< -- * """Wraps: mpv_unobserve_property""" -- * assert self._ctx -+ * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< -+ * cdef int *p = malloc(sizeof(int)) -+ * p[0] = val - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_41unobserve_property(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/ --static char __pyx_doc_9vidcutter_4libs_3mpv_7Context_40unobserve_property[] = "Wraps: mpv_unobserve_property"; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_41unobserve_property(PyObject *__pyx_v_self, PyObject *__pyx_v_data) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("unobserve_property (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_40unobserve_property(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v_data)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_40unobserve_property(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, PyObject *__pyx_v_data) { -- uint64_t __pyx_v_id_data; -- PyObject *__pyx_v_userdatas = NULL; -- int __pyx_v_err; -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, int __pyx_v_val) { -+ int *__pyx_v_p; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- Py_hash_t __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- PyObject *__pyx_t_7 = NULL; -- int __pyx_t_8; -- int __pyx_t_9; -+ PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("unobserve_property", 0); -+ __Pyx_RefNannySetupContext("add_int", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":773 -- * def unobserve_property(self, data): -- * """Wraps: mpv_unobserve_property""" -- * assert self._ctx # <<<<<<<<<<<<<< -- * cdef uint64_t id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) -+ /* "vidcutter/libs/pympv/mpv.pyx":903 -+ * -+ * cdef add_int(self, mpv_render_param_type t, int val): -+ * cdef int *p = malloc(sizeof(int)) # <<<<<<<<<<<<<< -+ * p[0] = val -+ * self.add_voidp(t, p) - */ -- #ifndef CYTHON_WITHOUT_ASSERTIONS -- if (unlikely(!Py_OptimizeFlag)) { -- if (unlikely(!(__pyx_v_self->_ctx != 0))) { -- PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 773, __pyx_L1_error) -- } -- } -- #endif -+ __pyx_v_p = ((int *)malloc((sizeof(int)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":774 -- * """Wraps: mpv_unobserve_property""" -- * assert self._ctx -- * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is not None: -- */ -- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 774, __pyx_L1_error) -- __pyx_v_id_data = ((uint64_t)__pyx_t_1); -- -- /* "vidcutter/libs/pympv/mpv.pyx":775 -- * assert self._ctx -- * cdef uint64_t id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< -- * if userdatas is not None: -- * userdatas.observed = False -- */ -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- __pyx_t_6 = 0; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- __pyx_t_6 = 1; -- } -- } -- #if CYTHON_FAST_PYCALL -- if (PyFunction_Check(__pyx_t_3)) { -- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- } else -- #endif -- #if CYTHON_FAST_PYCCALL -- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { -- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- } else -- #endif -- { -- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 775, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- if (__pyx_t_5) { -- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; -- } -- __Pyx_GIVEREF(__pyx_t_4); -- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); -- __pyx_t_4 = 0; -- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- } -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_v_userdatas = __pyx_t_2; -- __pyx_t_2 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":776 -- * cdef uint64_t id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is not None: # <<<<<<<<<<<<<< -- * userdatas.observed = False -- * if userdatas.counter <= 0: -- */ -- __pyx_t_8 = (__pyx_v_userdatas != Py_None); -- __pyx_t_9 = (__pyx_t_8 != 0); -- if (__pyx_t_9) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":777 -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is not None: -- * userdatas.observed = False # <<<<<<<<<<<<<< -- * if userdatas.counter <= 0: -- * del self.reply_userdata[id_data] -- */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 777, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":778 -- * if userdatas is not None: -- * userdatas.observed = False -- * if userdatas.counter <= 0: # <<<<<<<<<<<<<< -- * del self.reply_userdata[id_data] -- * cdef int err -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_counter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 778, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 778, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 778, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (__pyx_t_9) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":779 -- * userdatas.observed = False -- * if userdatas.counter <= 0: -- * del self.reply_userdata[id_data] # <<<<<<<<<<<<<< -- * cdef int err -- * with nogil: -- */ -- if (unlikely(__Pyx_DelItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 779, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":778 -- * if userdatas is not None: -- * userdatas.observed = False -- * if userdatas.counter <= 0: # <<<<<<<<<<<<<< -- * del self.reply_userdata[id_data] -- * cdef int err -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":776 -- * cdef uint64_t id_data = hash(data) -- * userdatas = self.reply_userdata.get(id_data, None) -- * if userdatas is not None: # <<<<<<<<<<<<<< -- * userdatas.observed = False -- * if userdatas.counter <= 0: -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":781 -- * del self.reply_userdata[id_data] -- * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_unobserve_property( -- * self._ctx, -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":782 -- * cdef int err -- * with nogil: -- * err = mpv_unobserve_property( # <<<<<<<<<<<<<< -- * self._ctx, -- * id_data, -- */ -- __pyx_v_err = mpv_unobserve_property(__pyx_v_self->_ctx, __pyx_v_id_data); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":781 -- * del self.reply_userdata[id_data] -- * cdef int err -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_unobserve_property( -- * self._ctx, -+ /* "vidcutter/libs/pympv/mpv.pyx":904 -+ * cdef add_int(self, mpv_render_param_type t, int val): -+ * cdef int *p = malloc(sizeof(int)) -+ * p[0] = val # <<<<<<<<<<<<<< -+ * self.add_voidp(t, p) -+ * - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L7; -- } -- __pyx_L7:; -- } -- } -+ (__pyx_v_p[0]) = __pyx_v_val; - -- /* "vidcutter/libs/pympv/mpv.pyx":786 -- * id_data, -- * ) -- * return err # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":905 -+ * cdef int *p = malloc(sizeof(int)) -+ * p[0] = val -+ * self.add_voidp(t, p) # <<<<<<<<<<<<<< - * -- * def shutdown(self): -+ * cdef add_string(self, mpv_render_param_type t, char *s): - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 786, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":771 -+ /* "vidcutter/libs/pympv/mpv.pyx":902 -+ * self.owned.append(owned) - * -- * @_errors -- * def unobserve_property(self, data): # <<<<<<<<<<<<<< -- * """Wraps: mpv_unobserve_property""" -- * assert self._ctx -+ * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< -+ * cdef int *p = malloc(sizeof(int)) -+ * p[0] = val - */ - - /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.unobserve_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_int", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_userdatas); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":788 -- * return err -+/* "vidcutter/libs/pympv/mpv.pyx":907 -+ * self.add_voidp(t, p) - * -- * def shutdown(self): # <<<<<<<<<<<<<< -- * if self._ctx == NULL: -- * return -+ * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< -+ * cdef char *p = malloc(strlen(s) + 1) -+ * strcpy(p, s) - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_43shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_43shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("shutdown (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_42shutdown(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_42shutdown(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- uint64_t __pyx_v_ctxid; -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, char *__pyx_v_s) { -+ char *__pyx_v_p; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- uint64_t __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("shutdown", 0); -+ __Pyx_RefNannySetupContext("add_string", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":789 -+ /* "vidcutter/libs/pympv/mpv.pyx":908 - * -- * def shutdown(self): -- * if self._ctx == NULL: # <<<<<<<<<<<<<< -- * return -- * cdef uint64_t ctxid = id(self) -- */ -- __pyx_t_1 = ((__pyx_v_self->_ctx == NULL) != 0); -- if (__pyx_t_1) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":790 -- * def shutdown(self): -- * if self._ctx == NULL: -- * return # <<<<<<<<<<<<<< -- * cdef uint64_t ctxid = id(self) -- * with nogil: -- */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":789 -- * -- * def shutdown(self): -- * if self._ctx == NULL: # <<<<<<<<<<<<<< -- * return -- * cdef uint64_t ctxid = id(self) -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":791 -- * if self._ctx == NULL: -- * return -- * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_terminate_destroy(self._ctx) -- */ -- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 791, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_ctxid = ((uint64_t)__pyx_t_3); -- -- /* "vidcutter/libs/pympv/mpv.pyx":792 -- * return -- * cdef uint64_t ctxid = id(self) -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_terminate_destroy(self._ctx) -- * self.callbackthread.shutdown() -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":793 -- * cdef uint64_t ctxid = id(self) -- * with nogil: -- * mpv_terminate_destroy(self._ctx) # <<<<<<<<<<<<<< -- * self.callbackthread.shutdown() -- * del _callbacks[ctxid] -- */ -- mpv_terminate_destroy(__pyx_v_self->_ctx); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":792 -- * return -- * cdef uint64_t ctxid = id(self) -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_terminate_destroy(self._ctx) -- * self.callbackthread.shutdown() -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L6; -- } -- __pyx_L6:; -- } -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":794 -- * with nogil: -- * mpv_terminate_destroy(self._ctx) -- * self.callbackthread.shutdown() # <<<<<<<<<<<<<< -- * del _callbacks[ctxid] -- * del _reply_userdatas[ctxid] -- */ -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 794, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -- } -- } -- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":795 -- * mpv_terminate_destroy(self._ctx) -- * self.callbackthread.shutdown() -- * del _callbacks[ctxid] # <<<<<<<<<<<<<< -- * del _reply_userdatas[ctxid] -- * self.callback = None -- */ -- if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 795, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":796 -- * self.callbackthread.shutdown() -- * del _callbacks[ctxid] -- * del _reply_userdatas[ctxid] # <<<<<<<<<<<<<< -- * self.callback = None -- * self.reply_userdata = None -- */ -- if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 796, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":797 -- * del _callbacks[ctxid] -- * del _reply_userdatas[ctxid] -- * self.callback = None # <<<<<<<<<<<<<< -- * self.reply_userdata = None -- * self._ctx = NULL -+ * cdef add_string(self, mpv_render_param_type t, char *s): -+ * cdef char *p = malloc(strlen(s) + 1) # <<<<<<<<<<<<<< -+ * strcpy(p, s) -+ * self.add_voidp(t, p) - */ -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->callback); -- __Pyx_DECREF(__pyx_v_self->callback); -- __pyx_v_self->callback = Py_None; -+ __pyx_v_p = ((char *)malloc((strlen(__pyx_v_s) + 1))); - -- /* "vidcutter/libs/pympv/mpv.pyx":798 -- * del _reply_userdatas[ctxid] -- * self.callback = None -- * self.reply_userdata = None # <<<<<<<<<<<<<< -- * self._ctx = NULL -+ /* "vidcutter/libs/pympv/mpv.pyx":909 -+ * cdef add_string(self, mpv_render_param_type t, char *s): -+ * cdef char *p = malloc(strlen(s) + 1) -+ * strcpy(p, s) # <<<<<<<<<<<<<< -+ * self.add_voidp(t, p) - * - */ -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- __Pyx_GOTREF(__pyx_v_self->reply_userdata); -- __Pyx_DECREF(__pyx_v_self->reply_userdata); -- __pyx_v_self->reply_userdata = Py_None; -+ (void)(strcpy(__pyx_v_p, __pyx_v_s)); - -- /* "vidcutter/libs/pympv/mpv.pyx":799 -- * self.callback = None -- * self.reply_userdata = None -- * self._ctx = NULL # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":910 -+ * cdef char *p = malloc(strlen(s) + 1) -+ * strcpy(p, s) -+ * self.add_voidp(t, p) # <<<<<<<<<<<<<< - * -- * def opengl_cb_api(self): -+ * def __dealloc__(self): - */ -- __pyx_v_self->_ctx = NULL; -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":788 -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":907 -+ * self.add_voidp(t, p) - * -- * def shutdown(self): # <<<<<<<<<<<<<< -- * if self._ctx == NULL: -- * return -+ * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< -+ * cdef char *p = malloc(strlen(s) + 1) -+ * strcpy(p, s) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_string", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":801 -- * self._ctx = NULL -- * -- * def opengl_cb_api(self): # <<<<<<<<<<<<<< -- * cdef void *cb -+/* "vidcutter/libs/pympv/mpv.pyx":912 -+ * self.add_voidp(t, p) - * -+ * def __dealloc__(self): # <<<<<<<<<<<<<< -+ * for i, j in enumerate(self.owned): -+ * if j: - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_45opengl_cb_api(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_45opengl_cb_api(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -+static void __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ -+static void __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("opengl_cb_api (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_44opengl_cb_api(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); -+ __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -- return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44opengl_cb_api(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- void *__pyx_v__ctx; -- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_ctx = NULL; -- PyObject *__pyx_r = NULL; -+static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { -+ PyObject *__pyx_v_i = NULL; -+ PyObject *__pyx_v_j = NULL; - __Pyx_RefNannyDeclarations -- int __pyx_t_1; -+ PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -+ Py_ssize_t __pyx_t_3; -+ PyObject *(*__pyx_t_4)(PyObject *); -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; -+ Py_ssize_t __pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("opengl_cb_api", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":804 -- * cdef void *cb -- * -- * _ctx = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB) # <<<<<<<<<<<<<< -- * if not _ctx: -- * raise MPVError("OpenGL API not available") -- */ -- __pyx_v__ctx = mpv_get_sub_api(__pyx_v_self->_ctx, MPV_SUB_API_OPENGL_CB); -- -- /* "vidcutter/libs/pympv/mpv.pyx":805 -- * -- * _ctx = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB) -- * if not _ctx: # <<<<<<<<<<<<<< -- * raise MPVError("OpenGL API not available") -- * -- */ -- __pyx_t_1 = ((!(__pyx_v__ctx != 0)) != 0); -- if (unlikely(__pyx_t_1)) { -+ __Pyx_RefNannySetupContext("__dealloc__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":806 -- * _ctx = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB) -- * if not _ctx: -- * raise MPVError("OpenGL API not available") # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":913 - * -- * ctx = OpenGLContext() -+ * def __dealloc__(self): -+ * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< -+ * if j: -+ * free(self.params[i].data) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 806, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_INCREF(__pyx_int_0); -+ __pyx_t_1 = __pyx_int_0; -+ if (likely(PyList_CheckExact(__pyx_v_self->owned)) || PyTuple_CheckExact(__pyx_v_self->owned)) { -+ __pyx_t_2 = __pyx_v_self->owned; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; - __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } -- } -- __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_OpenGL_API_not_available) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_OpenGL_API_not_available); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 806, __pyx_L1_error) -+ } else { -+ __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->owned); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_Raise(__pyx_t_2, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __PYX_ERR(0, 806, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":805 -- * -- * _ctx = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB) -- * if not _ctx: # <<<<<<<<<<<<<< -- * raise MPVError("OpenGL API not available") -- * -- */ -+ __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L1_error) - } -+ for (;;) { -+ if (likely(!__pyx_t_4)) { -+ if (likely(PyList_CheckExact(__pyx_t_2))) { -+ if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) -+ #else -+ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ #endif -+ } else { -+ if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) -+ #else -+ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ #endif -+ } -+ } else { -+ __pyx_t_5 = __pyx_t_4(__pyx_t_2); -+ if (unlikely(!__pyx_t_5)) { -+ PyObject* exc_type = PyErr_Occurred(); -+ if (exc_type) { -+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -+ else __PYX_ERR(0, 913, __pyx_L1_error) -+ } -+ break; -+ } -+ __Pyx_GOTREF(__pyx_t_5); -+ } -+ __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_5); -+ __pyx_t_5 = 0; -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); -+ __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_1); -+ __pyx_t_1 = __pyx_t_5; -+ __pyx_t_5 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":808 -- * raise MPVError("OpenGL API not available") -- * -- * ctx = OpenGLContext() # <<<<<<<<<<<<<< -- * ctx._ctx = _ctx -- * -- */ -- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_OpenGLContext)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 808, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_v_ctx = ((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_t_2); -- __pyx_t_2 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":809 -- * -- * ctx = OpenGLContext() -- * ctx._ctx = _ctx # <<<<<<<<<<<<<< -- * -- * return ctx -- */ -- __pyx_v_ctx->_ctx = ((struct mpv_opengl_cb_context *)__pyx_v__ctx); -- -- /* "vidcutter/libs/pympv/mpv.pyx":811 -- * ctx._ctx = _ctx -- * -- * return ctx # <<<<<<<<<<<<<< -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":914 - * def __dealloc__(self): -+ * for i, j in enumerate(self.owned): -+ * if j: # <<<<<<<<<<<<<< -+ * free(self.params[i].data) -+ * - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); -- __pyx_r = ((PyObject *)__pyx_v_ctx); -- goto __pyx_L0; -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_j); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 914, __pyx_L1_error) -+ if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":801 -- * self._ctx = NULL -- * -- * def opengl_cb_api(self): # <<<<<<<<<<<<<< -- * cdef void *cb -+ /* "vidcutter/libs/pympv/mpv.pyx":915 -+ * for i, j in enumerate(self.owned): -+ * if j: -+ * free(self.params[i].data) # <<<<<<<<<<<<<< - * -+ * cdef void *get_pointer(const char *name, object obj): - */ -+ __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error) -+ free((__pyx_v_self->params[__pyx_t_7]).data); - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.opengl_cb_api", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF((PyObject *)__pyx_v_ctx); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":813 -- * return ctx -- * -- * def __dealloc__(self): # <<<<<<<<<<<<<< -- * self.shutdown() -+ /* "vidcutter/libs/pympv/mpv.pyx":914 -+ * def __dealloc__(self): -+ * for i, j in enumerate(self.owned): -+ * if j: # <<<<<<<<<<<<<< -+ * free(self.params[i].data) - * - */ -+ } - --/* Python wrapper */ --static void __pyx_pw_9vidcutter_4libs_3mpv_7Context_47__dealloc__(PyObject *__pyx_v_self); /*proto*/ --static void __pyx_pw_9vidcutter_4libs_3mpv_7Context_47__dealloc__(PyObject *__pyx_v_self) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); -- __pyx_pf_9vidcutter_4libs_3mpv_7Context_46__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); --} -- --static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_46__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__dealloc__", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":814 -+ /* "vidcutter/libs/pympv/mpv.pyx":913 - * - * def __dealloc__(self): -- * self.shutdown() # <<<<<<<<<<<<<< -- * -- * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: -+ * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< -+ * if j: -+ * free(self.params[i].data) - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 814, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } - } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":813 -- * return ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":912 -+ * self.add_voidp(t, p) - * - * def __dealloc__(self): # <<<<<<<<<<<<<< -- * self.shutdown() -- * -+ * for i, j in enumerate(self.owned): -+ * if j: - */ - - /* function exit code */ -@@ -16122,32 +15924,34 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_46__dealloc__(struct __pyx_o - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv.Context.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv._RenderParams.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_i); -+ __Pyx_XDECREF(__pyx_v_j); - __Pyx_RefNannyFinishContext(); - } - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_49__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_49__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -@@ -16158,11 +15962,11 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYT - - /* "(tree fragment)":2 - * def __reduce_cython__(self): -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -@@ -16170,14 +15974,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYT - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); -@@ -16186,25 +15990,25 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_48__reduce_cython__(CYT - - /* "(tree fragment)":3 - * def __reduce_cython__(self): -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_51__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_51__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -@@ -16214,11 +16018,11 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(C - __Pyx_RefNannySetupContext("__setstate_cython__", 0); - - /* "(tree fragment)":4 -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -@@ -16226,2675 +16030,2187 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_50__setstate_cython__(C - - /* "(tree fragment)":3 - * def __reduce_cython__(self): -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.Context.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":816 -- * self.shutdown() -- * -- * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< -- * return (ctx)(name) -+/* "vidcutter/libs/pympv/mpv.pyx":917 -+ * free(self.params[i].data) - * -+ * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< -+ * cdef void *p -+ * if PyCapsule_IsValid(obj, name): - */ - --static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, char const *__pyx_v_name) { -+static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, PyObject *__pyx_v_obj) { -+ void *__pyx_v_p; - void *__pyx_r; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -+ int __pyx_t_1; -+ void *__pyx_t_2; -+ int __pyx_t_3; -+ int __pyx_t_4; - intptr_t __pyx_t_5; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_8 = NULL; -+ PyObject *__pyx_t_9 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- #ifdef WITH_THREAD -- PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); -- #endif -- __Pyx_RefNannySetupContext("_c_getprocaddress", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":817 -- * -- * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: -- * return (ctx)(name) # <<<<<<<<<<<<<< -- * -- * cdef void _c_updatecb(void *ctx) with gil: -- */ -- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); -- __pyx_t_3 = ((PyObject *)__pyx_v_ctx); __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } -- } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 817, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_r = ((void *)((intptr_t)__pyx_t_5)); -- goto __pyx_L0; -+ __Pyx_RefNannySetupContext("get_pointer", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":816 -- * self.shutdown() -- * -- * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< -- * return (ctx)(name) -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":919 -+ * cdef void *get_pointer(const char *name, object obj): -+ * cdef void *p -+ * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< -+ * p = PyCapsule_GetPointer(obj, name) -+ * elif isinstance(obj, int) or isinstance(obj, long) and obj: - */ -+ __pyx_t_1 = (PyCapsule_IsValid(__pyx_v_obj, __pyx_v_name) != 0); -+ if (__pyx_t_1) { - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_getprocaddress", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_RefNannyFinishContext(); -- #ifdef WITH_THREAD -- __Pyx_PyGILState_Release(__pyx_gilstate_save); -- #endif -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":920 -+ * cdef void *p -+ * if PyCapsule_IsValid(obj, name): -+ * p = PyCapsule_GetPointer(obj, name) # <<<<<<<<<<<<<< -+ * elif isinstance(obj, int) or isinstance(obj, long) and obj: -+ * p = obj -+ */ -+ __pyx_t_2 = PyCapsule_GetPointer(__pyx_v_obj, __pyx_v_name); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 920, __pyx_L1_error) -+ __pyx_v_p = __pyx_t_2; - --/* "vidcutter/libs/pympv/mpv.pyx":819 -- * return (ctx)(name) -- * -- * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< -- * (ctx)() -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":919 -+ * cdef void *get_pointer(const char *name, object obj): -+ * cdef void *p -+ * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< -+ * p = PyCapsule_GetPointer(obj, name) -+ * elif isinstance(obj, int) or isinstance(obj, long) and obj: - */ -+ goto __pyx_L3; -+ } - --static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- #ifdef WITH_THREAD -- PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); -- #endif -- __Pyx_RefNannySetupContext("_c_updatecb", 0); -+ /* "vidcutter/libs/pympv/mpv.pyx":921 -+ * if PyCapsule_IsValid(obj, name): -+ * p = PyCapsule_GetPointer(obj, name) -+ * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< -+ * p = obj -+ * else: -+ */ -+ __pyx_t_3 = PyInt_Check(__pyx_v_obj); -+ __pyx_t_4 = (__pyx_t_3 != 0); -+ if (!__pyx_t_4) { -+ } else { -+ __pyx_t_1 = __pyx_t_4; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_4 = PyLong_Check(__pyx_v_obj); -+ __pyx_t_3 = (__pyx_t_4 != 0); -+ if (__pyx_t_3) { -+ } else { -+ __pyx_t_1 = __pyx_t_3; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 921, __pyx_L1_error) -+ __pyx_t_1 = __pyx_t_3; -+ __pyx_L4_bool_binop_done:; -+ if (likely(__pyx_t_1)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":820 -- * -- * cdef void _c_updatecb(void *ctx) with gil: -- * (ctx)() # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":922 -+ * p = PyCapsule_GetPointer(obj, name) -+ * elif isinstance(obj, int) or isinstance(obj, long) and obj: -+ * p = obj # <<<<<<<<<<<<<< -+ * else: -+ * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) -+ */ -+ __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_v_obj); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) -+ __pyx_v_p = ((void *)((intptr_t)__pyx_t_5)); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":921 -+ * if PyCapsule_IsValid(obj, name): -+ * p = PyCapsule_GetPointer(obj, name) -+ * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< -+ * p = obj -+ * else: -+ */ -+ goto __pyx_L3; -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":924 -+ * p = obj -+ * else: -+ * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) # <<<<<<<<<<<<<< -+ * return p - * -- * cdef class OpenGLContext(object): - */ -- __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); -- __pyx_t_2 = ((PyObject *)__pyx_v_ctx); __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -+ /*else*/ { -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_v_obj); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 924, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_8); -+ __pyx_t_9 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { -+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); -+ if (likely(__pyx_t_9)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -+ __Pyx_INCREF(__pyx_t_9); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_7, function); -+ } - } -+ __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); -+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 924, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_Raise(__pyx_t_6, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __PYX_ERR(0, 924, __pyx_L1_error) - } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 820, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_L3:; - -- /* "vidcutter/libs/pympv/mpv.pyx":819 -- * return (ctx)(name) -- * -- * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< -- * (ctx)() -+ /* "vidcutter/libs/pympv/mpv.pyx":925 -+ * else: -+ * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) -+ * return p # <<<<<<<<<<<<<< - * -+ * @cython.internal - */ -- -- /* function exit code */ -+ __pyx_r = __pyx_v_p; - goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_updatecb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -- __pyx_L0:; -- __Pyx_RefNannyFinishContext(); -- #ifdef WITH_THREAD -- __Pyx_PyGILState_Release(__pyx_gilstate_save); -- #endif --} - --/* "vidcutter/libs/pympv/mpv.pyx":828 -- * object update_cb -+ /* "vidcutter/libs/pympv/mpv.pyx":917 -+ * free(self.params[i].data) - * -- * def __init__(self): # <<<<<<<<<<<<<< -- * self.inited = False -- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) -+ * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< -+ * cdef void *p -+ * if PyCapsule_IsValid(obj, name): - */ - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} -- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self)); -- - /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_XDECREF(__pyx_t_9); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv.get_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __pyx_r = 0; -+ __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self) { -- int __pyx_r; -+/* "vidcutter/libs/pympv/mpv.pyx":929 -+ * @cython.internal -+ * cdef class RenderFrameInfo(object): -+ * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< -+ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) -+ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -+ */ -+ -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self, struct mpv_render_frame_info *__pyx_v_info) { -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -+ int __pyx_t_2; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__init__", 0); -+ __Pyx_RefNannySetupContext("_from_struct", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":829 -- * -- * def __init__(self): -- * self.inited = False # <<<<<<<<<<<<<< -- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":930 -+ * cdef class RenderFrameInfo(object): -+ * cdef _from_struct(self, mpv_render_frame_info *info): -+ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) # <<<<<<<<<<<<<< -+ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -+ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) - */ -- __pyx_v_self->inited = 0; -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_PRESENT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 930, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_present, __pyx_t_1) < 0) __PYX_ERR(0, 930, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":830 -- * def __init__(self): -- * self.inited = False -- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) # <<<<<<<<<<<<<< -- * -- * def init_gl(self, exts, get_proc_address): -+ /* "vidcutter/libs/pympv/mpv.pyx":931 -+ * cdef _from_struct(self, mpv_render_frame_info *info): -+ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) -+ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) # <<<<<<<<<<<<<< -+ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) -+ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_warnings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REDRAW)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warn); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 830, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 931, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redraw, __pyx_t_1) < 0) __PYX_ERR(0, 931, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":828 -- * object update_cb -- * -- * def __init__(self): # <<<<<<<<<<<<<< -- * self.inited = False -- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) -+ /* "vidcutter/libs/pympv/mpv.pyx":932 -+ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) -+ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -+ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) # <<<<<<<<<<<<<< -+ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) -+ * self.target_time = info[0].target_time - */ -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REPEAT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 932, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repeat, __pyx_t_1) < 0) __PYX_ERR(0, 932, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* function exit code */ -- __pyx_r = 0; -- goto __pyx_L0; -+ /* "vidcutter/libs/pympv/mpv.pyx":933 -+ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -+ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) -+ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) # <<<<<<<<<<<<<< -+ * self.target_time = info[0].target_time -+ * return self -+ */ -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_block_vsync, __pyx_t_1) < 0) __PYX_ERR(0, 933, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":934 -+ * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) -+ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) -+ * self.target_time = info[0].target_time # <<<<<<<<<<<<<< -+ * return self -+ * -+ */ -+ __pyx_t_1 = __Pyx_PyInt_From_int64_t((__pyx_v_info[0]).target_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target_time, __pyx_t_1) < 0) __PYX_ERR(0, 934, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":935 -+ * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) -+ * self.target_time = info[0].target_time -+ * return self # <<<<<<<<<<<<<< -+ * -+ * cdef class RenderContext(object): -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(((PyObject *)__pyx_v_self)); -+ __pyx_r = ((PyObject *)__pyx_v_self); -+ goto __pyx_L0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":929 -+ * @cython.internal -+ * cdef class RenderFrameInfo(object): -+ * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< -+ * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) -+ * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = -1; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo._from_struct", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; - __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":832 -- * 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 -+/* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * cdef tuple state -+ * cdef object _dict - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_3init_gl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_3init_gl(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_exts = 0; -- PyObject *__pyx_v_get_proc_address = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("init_gl (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exts,&__pyx_n_s_get_proc_address,0}; -- PyObject* values[2] = {0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exts)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_get_proc_address)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("init_gl", 1, 2, 2, 1); __PYX_ERR(0, 832, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init_gl") < 0)) __PYX_ERR(0, 832, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- } -- __pyx_v_exts = values[0]; -- __pyx_v_get_proc_address = values[1]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("init_gl", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 832, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.init_gl", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_2init_gl(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), __pyx_v_exts, __pyx_v_get_proc_address); -+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_2init_gl(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_exts, PyObject *__pyx_v_get_proc_address) { -- char *__pyx_v_extsc; -- int __pyx_v_err; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self) { -+ PyObject *__pyx_v_state = 0; -+ PyObject *__pyx_v__dict = 0; -+ int __pyx_v_use_setstate; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; -- PyObject *__pyx_t_3 = NULL; -+ int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- char *__pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("init_gl", 0); -- __Pyx_INCREF(__pyx_v_exts); -- -- /* "vidcutter/libs/pympv/mpv.pyx":833 -- * -- * 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: -- */ -- __pyx_t_2 = (__pyx_v_exts != Py_None); -- if ((__pyx_t_2 != 0)) { -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_strenc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 833, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -- } -- } -- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_exts) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_exts); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 833, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_1 = __pyx_t_3; -- __pyx_t_3 = 0; -- } else { -- __Pyx_INCREF(Py_None); -- __pyx_t_1 = Py_None; -- } -- __Pyx_DECREF_SET(__pyx_v_exts, __pyx_t_1); -- __pyx_t_1 = 0; -+ __Pyx_RefNannySetupContext("__reduce_cython__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":834 -- * 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 -+ /* "(tree fragment)":5 -+ * cdef object _dict -+ * cdef bint use_setstate -+ * state = () # <<<<<<<<<<<<<< -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: - */ -- __pyx_v_extsc = NULL; -+ __Pyx_INCREF(__pyx_empty_tuple); -+ __pyx_v_state = __pyx_empty_tuple; - -- /* "vidcutter/libs/pympv/mpv.pyx":835 -- * exts = _strenc(exts) if exts is not None else None -- * cdef char* extsc = NULL -- * if exts is not None: # <<<<<<<<<<<<<< -- * extsc = exts -- * with nogil: -+ /* "(tree fragment)":6 -+ * cdef bint use_setstate -+ * state = () -+ * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< -+ * if _dict is not None: -+ * state += (_dict,) - */ -- __pyx_t_2 = (__pyx_v_exts != Py_None); -- __pyx_t_6 = (__pyx_t_2 != 0); -- if (__pyx_t_6) { -+ __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v__dict = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":836 -- * cdef char* extsc = NULL -- * if exts is not None: -- * extsc = exts # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, -+ /* "(tree fragment)":7 -+ * state = () -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: # <<<<<<<<<<<<<< -+ * state += (_dict,) -+ * use_setstate = True - */ -- __pyx_t_7 = __Pyx_PyObject_AsWritableString(__pyx_v_exts); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 836, __pyx_L1_error) -- __pyx_v_extsc = __pyx_t_7; -+ __pyx_t_2 = (__pyx_v__dict != Py_None); -+ __pyx_t_3 = (__pyx_t_2 != 0); -+ if (__pyx_t_3) { - -- /* "vidcutter/libs/pympv/mpv.pyx":835 -- * exts = _strenc(exts) if exts is not None else None -- * cdef char* extsc = NULL -- * if exts is not None: # <<<<<<<<<<<<<< -- * extsc = exts -- * with nogil: -+ /* "(tree fragment)":8 -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: -+ * state += (_dict,) # <<<<<<<<<<<<<< -+ * use_setstate = True -+ * else: - */ -- } -+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_INCREF(__pyx_v__dict); -+ __Pyx_GIVEREF(__pyx_v__dict); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); -+ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); -+ __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":837 -- * if exts is not None: -- * extsc = exts -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, -- * get_proc_address) -+ /* "(tree fragment)":9 -+ * if _dict is not None: -+ * state += (_dict,) -+ * use_setstate = True # <<<<<<<<<<<<<< -+ * else: -+ * use_setstate = False - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_v_use_setstate = 1; - -- /* "vidcutter/libs/pympv/mpv.pyx":838 -- * extsc = exts -- * with nogil: -- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, # <<<<<<<<<<<<<< -- * get_proc_address) -- * if err < 0: -+ /* "(tree fragment)":7 -+ * state = () -+ * _dict = getattr(self, '__dict__', None) -+ * if _dict is not None: # <<<<<<<<<<<<<< -+ * state += (_dict,) -+ * use_setstate = True - */ -- __pyx_v_err = mpv_opengl_cb_init_gl(__pyx_v_self->_ctx, __pyx_v_extsc, (&__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress), ((void *)__pyx_v_get_proc_address)); -- } -+ goto __pyx_L3; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":837 -- * if exts is not None: -- * extsc = exts -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, -- * get_proc_address) -+ /* "(tree fragment)":11 -+ * use_setstate = True -+ * else: -+ * use_setstate = False # <<<<<<<<<<<<<< -+ * if use_setstate: -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L6; -- } -- __pyx_L6:; -- } -+ /*else*/ { -+ __pyx_v_use_setstate = 0; - } -+ __pyx_L3:; - -- /* "vidcutter/libs/pympv/mpv.pyx":840 -- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, -- * get_proc_address) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * -+ /* "(tree fragment)":12 -+ * else: -+ * use_setstate = False -+ * if use_setstate: # <<<<<<<<<<<<<< -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state -+ * else: - */ -- __pyx_t_6 = ((__pyx_v_err < 0) != 0); -- if (unlikely(__pyx_t_6)) { -+ __pyx_t_3 = (__pyx_v_use_setstate != 0); -+ if (__pyx_t_3) { - -- /* "vidcutter/libs/pympv/mpv.pyx":841 -- * get_proc_address) -- * if err < 0: -- * raise MPVError(err) # <<<<<<<<<<<<<< -- * -- * self.inited = True -+ /* "(tree fragment)":13 -+ * use_setstate = False -+ * if use_setstate: -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state # <<<<<<<<<<<<<< -+ * else: -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 841, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 841, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_RenderFrameInfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } -- } -- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error) -+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 841, __pyx_L1_error) -+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_INCREF(__pyx_int_222419149); -+ __Pyx_GIVEREF(__pyx_int_222419149); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); -+ __Pyx_INCREF(Py_None); -+ __Pyx_GIVEREF(Py_None); -+ PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); -+ __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_GIVEREF(__pyx_t_4); -+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); -+ __Pyx_GIVEREF(__pyx_t_1); -+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); -+ __Pyx_INCREF(__pyx_v_state); -+ __Pyx_GIVEREF(__pyx_v_state); -+ PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state); -+ __pyx_t_4 = 0; -+ __pyx_t_1 = 0; -+ __pyx_r = __pyx_t_5; -+ __pyx_t_5 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":840 -- * err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress, -- * get_proc_address) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * -+ /* "(tree fragment)":12 -+ * else: -+ * use_setstate = False -+ * if use_setstate: # <<<<<<<<<<<<<< -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state -+ * else: - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":843 -- * raise MPVError(err) -- * -- * self.inited = True # <<<<<<<<<<<<<< -- * -- * def set_update_callback(self, cb): -+ /* "(tree fragment)":15 -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state -+ * else: -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) - */ -- __pyx_v_self->inited = 1; -+ /*else*/ { -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_RenderFrameInfo); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -+ __Pyx_INCREF(__pyx_int_222419149); -+ __Pyx_GIVEREF(__pyx_int_222419149); -+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); -+ __Pyx_INCREF(__pyx_v_state); -+ __Pyx_GIVEREF(__pyx_v_state); -+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); -+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_GIVEREF(__pyx_t_5); -+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); -+ __Pyx_GIVEREF(__pyx_t_1); -+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); -+ __pyx_t_5 = 0; -+ __pyx_t_1 = 0; -+ __pyx_r = __pyx_t_4; -+ __pyx_t_4 = 0; -+ goto __pyx_L0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":832 -- * 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 -+ /* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * cdef tuple state -+ * cdef object _dict - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.init_gl", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_exts); -+ __Pyx_XDECREF(__pyx_v_state); -+ __Pyx_XDECREF(__pyx_v__dict); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":845 -- * self.inited = True -- * -- * def set_update_callback(self, cb): # <<<<<<<<<<<<<< -- * self.update_cb = cb -- * with nogil: -+/* "(tree fragment)":16 -+ * else: -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_5set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_5set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_update_callback (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_4set_update_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), ((PyObject *)__pyx_v_cb)); -+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_4set_update_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_cb) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_update_callback", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":846 -- * -- * def set_update_callback(self, cb): -- * self.update_cb = cb # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) -- */ -- __Pyx_INCREF(__pyx_v_cb); -- __Pyx_GIVEREF(__pyx_v_cb); -- __Pyx_GOTREF(__pyx_v_self->update_cb); -- __Pyx_DECREF(__pyx_v_self->update_cb); -- __pyx_v_self->update_cb = __pyx_v_cb; -- -- /* "vidcutter/libs/pympv/mpv.pyx":847 -- * def set_update_callback(self, cb): -- * self.update_cb = cb -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) -- * -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":848 -- * self.update_cb = cb -- * with nogil: -- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) # <<<<<<<<<<<<<< -- * -- * def draw(self, fbo, w, h): -- */ -- mpv_opengl_cb_set_update_callback(__pyx_v_self->_ctx, (&__pyx_f_9vidcutter_4libs_3mpv__c_updatecb), ((void *)__pyx_v_cb)); -- } -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__setstate_cython__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":847 -- * def set_update_callback(self, cb): -- * self.update_cb = cb -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) -- * -+ /* "(tree fragment)":17 -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) -+ * def __setstate_cython__(self, __pyx_state): -+ * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<< - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":845 -- * self.inited = True -- * -- * def set_update_callback(self, cb): # <<<<<<<<<<<<<< -- * self.update_cb = cb -- * with nogil: -+ /* "(tree fragment)":16 -+ * else: -+ * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":850 -- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) -+/* "vidcutter/libs/pympv/mpv.pyx":950 -+ * bint inited - * -- * def draw(self, fbo, w, h): # <<<<<<<<<<<<<< -- * cdef: -- * int fboc = fbo -+ * def __init__(self, mpv, # <<<<<<<<<<<<<< -+ * api_type, -+ * opengl_init_params=None, - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_7draw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_7draw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_fbo = 0; -- PyObject *__pyx_v_w = 0; -- PyObject *__pyx_v_h = 0; -+static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_mpv = 0; -+ PyObject *__pyx_v_api_type = 0; -+ PyObject *__pyx_v_opengl_init_params = 0; -+ PyObject *__pyx_v_advanced_control = 0; -+ PyObject *__pyx_v_x11_display = 0; -+ PyObject *__pyx_v_wl_display = 0; -+ PyObject *__pyx_v_drm_display = 0; -+ PyObject *__pyx_v_drm_osd_size = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -+ int __pyx_r; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("draw (wrapper)", 0); -+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fbo,&__pyx_n_s_w,&__pyx_n_s_h,0}; -- PyObject* values[3] = {0,0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fbo)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("draw", 1, 3, 3, 1); __PYX_ERR(0, 850, __pyx_L3_error) -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("draw", 1, 3, 3, 2); __PYX_ERR(0, 850, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "draw") < 0)) __PYX_ERR(0, 850, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- } -- __pyx_v_fbo = values[0]; -- __pyx_v_w = values[1]; -- __pyx_v_h = values[2]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("draw", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 850, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.draw", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_6draw(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), __pyx_v_fbo, __pyx_v_w, __pyx_v_h); -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_api_type,&__pyx_n_s_opengl_init_params,&__pyx_n_s_advanced_control,&__pyx_n_s_x11_display,&__pyx_n_s_wl_display,&__pyx_n_s_drm_display,&__pyx_n_s_drm_osd_size,0}; -+ PyObject* values[8] = {0,0,0,0,0,0,0,0}; - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_6draw(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_fbo, PyObject *__pyx_v_w, PyObject *__pyx_v_h) { -- int __pyx_v_fboc; -- int __pyx_v_wc; -- int __pyx_v_hc; -- int __pyx_v_err; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- int __pyx_t_2; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- PyObject *__pyx_t_6 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("draw", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":852 -- * def draw(self, fbo, w, h): -- * cdef: -- * int fboc = fbo # <<<<<<<<<<<<<< -- * int wc = w -- * int hc = h -+ /* "vidcutter/libs/pympv/mpv.pyx":952 -+ * def __init__(self, mpv, -+ * api_type, -+ * opengl_init_params=None, # <<<<<<<<<<<<<< -+ * advanced_control=False, -+ * x11_display=None, - */ -- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_fbo); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 852, __pyx_L1_error) -- __pyx_v_fboc = __pyx_t_1; -+ values[2] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":853 -- * cdef: -- * int fboc = fbo -- * int wc = w # <<<<<<<<<<<<<< -- * int hc = h -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":953 -+ * api_type, -+ * opengl_init_params=None, -+ * advanced_control=False, # <<<<<<<<<<<<<< -+ * x11_display=None, -+ * wl_display=None, - */ -- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_w); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 853, __pyx_L1_error) -- __pyx_v_wc = __pyx_t_1; -+ values[3] = ((PyObject *)Py_False); - -- /* "vidcutter/libs/pympv/mpv.pyx":854 -- * int fboc = fbo -- * int wc = w -- * int hc = h # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) -+ /* "vidcutter/libs/pympv/mpv.pyx":954 -+ * opengl_init_params=None, -+ * advanced_control=False, -+ * x11_display=None, # <<<<<<<<<<<<<< -+ * wl_display=None, -+ * drm_display=None, - */ -- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_h); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 854, __pyx_L1_error) -- __pyx_v_hc = __pyx_t_1; -+ values[4] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":855 -- * int wc = w -- * int hc = h -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) -- * if err < 0: -+ /* "vidcutter/libs/pympv/mpv.pyx":955 -+ * advanced_control=False, -+ * x11_display=None, -+ * wl_display=None, # <<<<<<<<<<<<<< -+ * drm_display=None, -+ * drm_osd_size=None - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ values[5] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":856 -- * int hc = h -- * with nogil: -- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) # <<<<<<<<<<<<<< -- * if err < 0: -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":956 -+ * x11_display=None, -+ * wl_display=None, -+ * drm_display=None, # <<<<<<<<<<<<<< -+ * drm_osd_size=None -+ * ): - */ -- __pyx_v_err = mpv_opengl_cb_draw(__pyx_v_self->_ctx, __pyx_v_fboc, __pyx_v_wc, __pyx_v_hc); -- } -+ values[6] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":855 -- * int wc = w -- * int hc = h -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) -- * if err < 0: -+ /* "vidcutter/libs/pympv/mpv.pyx":957 -+ * wl_display=None, -+ * drm_display=None, -+ * drm_osd_size=None # <<<<<<<<<<<<<< -+ * ): -+ * - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -+ values[7] = ((PyObject *)Py_None); -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); -+ CYTHON_FALLTHROUGH; -+ case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); -+ CYTHON_FALLTHROUGH; -+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); -+ CYTHON_FALLTHROUGH; -+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); -+ CYTHON_FALLTHROUGH; -+ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -+ CYTHON_FALLTHROUGH; -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mpv)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_api_type)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, 1); __PYX_ERR(0, 950, __pyx_L3_error) -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_opengl_init_params); -+ if (value) { values[2] = value; kw_args--; } -+ } -+ CYTHON_FALLTHROUGH; -+ case 3: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_advanced_control); -+ if (value) { values[3] = value; kw_args--; } -+ } -+ CYTHON_FALLTHROUGH; -+ case 4: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x11_display); -+ if (value) { values[4] = value; kw_args--; } -+ } -+ CYTHON_FALLTHROUGH; -+ case 5: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wl_display); -+ if (value) { values[5] = value; kw_args--; } -+ } -+ CYTHON_FALLTHROUGH; -+ case 6: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_drm_display); -+ if (value) { values[6] = value; kw_args--; } -+ } -+ CYTHON_FALLTHROUGH; -+ case 7: -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_drm_osd_size); -+ if (value) { values[7] = value; kw_args--; } - } -- __pyx_L5:; - } -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":857 -- * with nogil: -- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * -- */ -- __pyx_t_2 = ((__pyx_v_err < 0) != 0); -- if (unlikely(__pyx_t_2)) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":858 -- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) -- * if err < 0: -- * raise MPVError(err) # <<<<<<<<<<<<<< -- * -- * def report_flip(self, time): -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 858, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 858, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_6 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); -- if (likely(__pyx_t_6)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -- __Pyx_INCREF(__pyx_t_6); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 950, __pyx_L3_error) -+ } -+ } else { -+ switch (PyTuple_GET_SIZE(__pyx_args)) { -+ case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); -+ CYTHON_FALLTHROUGH; -+ case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); -+ CYTHON_FALLTHROUGH; -+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); -+ CYTHON_FALLTHROUGH; -+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); -+ CYTHON_FALLTHROUGH; -+ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -+ CYTHON_FALLTHROUGH; -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ break; -+ default: goto __pyx_L5_argtuple_error; - } - } -- __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 858, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_Raise(__pyx_t_3, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(0, 858, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":857 -- * with nogil: -- * err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * -- */ -+ __pyx_v_mpv = values[0]; -+ __pyx_v_api_type = values[1]; -+ __pyx_v_opengl_init_params = values[2]; -+ __pyx_v_advanced_control = values[3]; -+ __pyx_v_x11_display = values[4]; -+ __pyx_v_wl_display = values[5]; -+ __pyx_v_drm_display = values[6]; -+ __pyx_v_drm_osd_size = values[7]; - } -- -- /* "vidcutter/libs/pympv/mpv.pyx":850 -- * mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, cb) -- * -- * def draw(self, fbo, w, h): # <<<<<<<<<<<<<< -- * cdef: -- * int fboc = fbo -- */ -- -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.draw", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 950, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ return -1; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_api_type, __pyx_v_opengl_init_params, __pyx_v_advanced_control, __pyx_v_x11_display, __pyx_v_wl_display, __pyx_v_drm_display, __pyx_v_drm_osd_size); - --/* "vidcutter/libs/pympv/mpv.pyx":860 -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":950 -+ * bint inited - * -- * def report_flip(self, time): # <<<<<<<<<<<<<< -- * cdef int64_t ctime = time -- * with nogil: -+ * def __init__(self, mpv, # <<<<<<<<<<<<<< -+ * api_type, -+ * opengl_init_params=None, - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_9report_flip(PyObject *__pyx_v_self, PyObject *__pyx_v_time); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_9report_flip(PyObject *__pyx_v_self, PyObject *__pyx_v_time) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("report_flip (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_8report_flip(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), ((PyObject *)__pyx_v_time)); -- - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_8report_flip(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, PyObject *__pyx_v_time) { -- int64_t __pyx_v_ctime; -- int __pyx_v_err; -- PyObject *__pyx_r = NULL; -+static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_mpv, PyObject *__pyx_v_api_type, PyObject *__pyx_v_opengl_init_params, PyObject *__pyx_v_advanced_control, PyObject *__pyx_v_x11_display, PyObject *__pyx_v_wl_display, PyObject *__pyx_v_drm_display, PyObject *__pyx_v_drm_osd_size) { -+ struct mpv_opengl_init_params __pyx_v_gl_params; -+ struct mpv_opengl_drm_params __pyx_v_drm_params; -+ struct mpv_opengl_drm_osd_size __pyx_v__drm_osd_size; -+ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_params = NULL; -+ PyObject *__pyx_v_arp = NULL; -+ int __pyx_v_err; -+ int __pyx_r; - __Pyx_RefNannyDeclarations -- int64_t __pyx_t_1; -- int __pyx_t_2; -- PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; -- PyObject *__pyx_t_6 = NULL; -+ int __pyx_t_6; -+ int __pyx_t_7; -+ char const *__pyx_t_8; -+ PyObject *(*__pyx_t_9)(PyObject *); -+ int __pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("report_flip", 0); -+ __Pyx_RefNannySetupContext("__init__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":861 -+ /* "vidcutter/libs/pympv/mpv.pyx":965 -+ * mpv_opengl_drm_osd_size _drm_osd_size - * -- * def report_flip(self, time): -- * cdef int64_t ctime = time # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) -+ * self._mpv = mpv # <<<<<<<<<<<<<< -+ * -+ * memset(&gl_params, 0, sizeof(gl_params)) - */ -- __pyx_t_1 = __Pyx_PyInt_As_int64_t(__pyx_v_time); if (unlikely((__pyx_t_1 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 861, __pyx_L1_error) -- __pyx_v_ctime = __pyx_t_1; -+ if (!(likely(((__pyx_v_mpv) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_mpv, __pyx_ptype_9vidcutter_4libs_3mpv_Context))))) __PYX_ERR(0, 965, __pyx_L1_error) -+ __pyx_t_1 = __pyx_v_mpv; -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v_self->_mpv); -+ __Pyx_DECREF(((PyObject *)__pyx_v_self->_mpv)); -+ __pyx_v_self->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_t_1); -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":862 -- * def report_flip(self, time): -- * cdef int64_t ctime = time -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) -- * if err < 0: -+ /* "vidcutter/libs/pympv/mpv.pyx":967 -+ * 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)) - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ (void)(memset((&__pyx_v_gl_params), 0, (sizeof(__pyx_v_gl_params)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":863 -- * cdef int64_t ctime = time -- * with nogil: -- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) # <<<<<<<<<<<<<< -- * if err < 0: -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":968 -+ * -+ * memset(&gl_params, 0, sizeof(gl_params)) -+ * memset(&drm_params, 0, sizeof(drm_params)) # <<<<<<<<<<<<<< -+ * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) -+ * - */ -- __pyx_v_err = mpv_opengl_cb_report_flip(__pyx_v_self->_ctx, __pyx_v_ctime); -- } -+ (void)(memset((&__pyx_v_drm_params), 0, (sizeof(__pyx_v_drm_params)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":862 -- * def report_flip(self, time): -- * cdef int64_t ctime = time -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) -- * if err < 0: -+ /* "vidcutter/libs/pympv/mpv.pyx":969 -+ * memset(&gl_params, 0, sizeof(gl_params)) -+ * memset(&drm_params, 0, sizeof(drm_params)) -+ * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) # <<<<<<<<<<<<<< -+ * -+ * params = _RenderParams() - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -+ (void)(memset((&__pyx_v__drm_osd_size), 0, (sizeof(__pyx_v__drm_osd_size)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":864 -- * with nogil: -- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":971 -+ * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) -+ * -+ * params = _RenderParams() # <<<<<<<<<<<<<< - * -+ * if api_type == self.API_OPENGL: - */ -- __pyx_t_2 = ((__pyx_v_err < 0) != 0); -- if (unlikely(__pyx_t_2)) { -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":865 -- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) -- * if err < 0: -- * raise MPVError(err) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":973 -+ * params = _RenderParams() -+ * -+ * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< -+ * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) -+ * else: -+ */ -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_api_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 973, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (likely(__pyx_t_3)) { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":974 -+ * -+ * if api_type == self.API_OPENGL: -+ * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) # <<<<<<<<<<<<<< -+ * else: -+ * raise PyMPVError("Unknown api_type %r" % api_type) -+ */ -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_string(__pyx_v_params, MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":973 -+ * params = _RenderParams() -+ * -+ * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< -+ * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) -+ * else: -+ */ -+ goto __pyx_L3; -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":976 -+ * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) -+ * else: -+ * raise PyMPVError("Unknown api_type %r" % api_type) # <<<<<<<<<<<<<< - * -- * def uninit_gl(self): -+ * if opengl_init_params is not None: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 865, __pyx_L1_error) -+ /*else*/ { -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_api_type_r, __pyx_v_api_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 976, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 865, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_6 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); -- if (likely(__pyx_t_6)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -- __Pyx_INCREF(__pyx_t_6); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); -+ __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -+ __Pyx_DECREF_SET(__pyx_t_1, function); - } - } -- __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 865, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_Raise(__pyx_t_3, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(0, 865, __pyx_L1_error) -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_Raise(__pyx_t_2, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __PYX_ERR(0, 976, __pyx_L1_error) -+ } -+ __pyx_L3:; - -- /* "vidcutter/libs/pympv/mpv.pyx":864 -- * with nogil: -- * err = mpv_opengl_cb_report_flip(self._ctx, ctime) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":978 -+ * raise PyMPVError("Unknown api_type %r" % api_type) - * -+ * if opengl_init_params is not None: # <<<<<<<<<<<<<< -+ * self._get_proc_address = opengl_init_params["get_proc_address"] -+ * gl_params.get_proc_address = &_c_getprocaddress - */ -- } -+ __pyx_t_3 = (__pyx_v_opengl_init_params != Py_None); -+ __pyx_t_6 = (__pyx_t_3 != 0); -+ if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":860 -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":979 - * -- * def report_flip(self, time): # <<<<<<<<<<<<<< -- * cdef int64_t ctime = time -- * with nogil: -+ * if opengl_init_params is not None: -+ * self._get_proc_address = opengl_init_params["get_proc_address"] # <<<<<<<<<<<<<< -+ * gl_params.get_proc_address = &_c_getprocaddress -+ * gl_params.get_proc_address_ctx = self._get_proc_address - */ -+ __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_init_params, __pyx_n_s_get_proc_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_GIVEREF(__pyx_t_2); -+ __Pyx_GOTREF(__pyx_v_self->_get_proc_address); -+ __Pyx_DECREF(__pyx_v_self->_get_proc_address); -+ __pyx_v_self->_get_proc_address = __pyx_t_2; -+ __pyx_t_2 = 0; - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.report_flip", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":980 -+ * if opengl_init_params is not None: -+ * self._get_proc_address = opengl_init_params["get_proc_address"] -+ * gl_params.get_proc_address = &_c_getprocaddress # <<<<<<<<<<<<<< -+ * gl_params.get_proc_address_ctx = self._get_proc_address -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -+ */ -+ __pyx_v_gl_params.get_proc_address = (&__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress); - --/* "vidcutter/libs/pympv/mpv.pyx":867 -- * raise MPVError(err) -- * -- * def uninit_gl(self): # <<<<<<<<<<<<<< -- * if not self.inited: -- * return -+ /* "vidcutter/libs/pympv/mpv.pyx":981 -+ * self._get_proc_address = opengl_init_params["get_proc_address"] -+ * gl_params.get_proc_address = &_c_getprocaddress -+ * gl_params.get_proc_address_ctx = self._get_proc_address # <<<<<<<<<<<<<< -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -+ * if advanced_control: - */ -+ __pyx_v_gl_params.get_proc_address_ctx = ((void *)__pyx_v_self->_get_proc_address); - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_11uninit_gl(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_11uninit_gl(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("uninit_gl (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_10uninit_gl(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self)); -+ /* "vidcutter/libs/pympv/mpv.pyx":982 -+ * gl_params.get_proc_address = &_c_getprocaddress -+ * gl_params.get_proc_address_ctx = self._get_proc_address -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) # <<<<<<<<<<<<<< -+ * if advanced_control: -+ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -+ */ -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, (&__pyx_v_gl_params), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 982, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":978 -+ * raise PyMPVError("Unknown api_type %r" % api_type) -+ * -+ * if opengl_init_params is not None: # <<<<<<<<<<<<<< -+ * self._get_proc_address = opengl_init_params["get_proc_address"] -+ * gl_params.get_proc_address = &_c_getprocaddress -+ */ -+ } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_10uninit_gl(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self) { -- int __pyx_v_err; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("uninit_gl", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":868 -- * -- * def uninit_gl(self): -- * if not self.inited: # <<<<<<<<<<<<<< -- * return -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":983 -+ * gl_params.get_proc_address_ctx = self._get_proc_address -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -+ * if advanced_control: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -+ * if x11_display: - */ -- __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); -- if (__pyx_t_1) { -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_advanced_control); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 983, __pyx_L1_error) -+ if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":869 -- * def uninit_gl(self): -- * if not self.inited: -- * return # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_opengl_cb_uninit_gl(self._ctx) -+ /* "vidcutter/libs/pympv/mpv.pyx":984 -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -+ * if advanced_control: -+ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) # <<<<<<<<<<<<<< -+ * if x11_display: -+ * self._x11_display = x11_display - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_ADVANCED_CONTROL, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 984, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":868 -- * -- * def uninit_gl(self): -- * if not self.inited: # <<<<<<<<<<<<<< -- * return -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":983 -+ * gl_params.get_proc_address_ctx = self._get_proc_address -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -+ * if advanced_control: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -+ * if x11_display: - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":870 -- * if not self.inited: -- * return -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_opengl_cb_uninit_gl(self._ctx) -- * if err < 0: -+ /* "vidcutter/libs/pympv/mpv.pyx":985 -+ * if advanced_control: -+ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -+ * if x11_display: # <<<<<<<<<<<<<< -+ * self._x11_display = x11_display -+ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_x11_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 985, __pyx_L1_error) -+ if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":871 -- * return -- * with nogil: -- * err = mpv_opengl_cb_uninit_gl(self._ctx) # <<<<<<<<<<<<<< -- * if err < 0: -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":986 -+ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -+ * if x11_display: -+ * self._x11_display = x11_display # <<<<<<<<<<<<<< -+ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -+ * if wl_display: - */ -- __pyx_v_err = mpv_opengl_cb_uninit_gl(__pyx_v_self->_ctx); -- } -+ __Pyx_INCREF(__pyx_v_x11_display); -+ __Pyx_GIVEREF(__pyx_v_x11_display); -+ __Pyx_GOTREF(__pyx_v_self->_x11_display); -+ __Pyx_DECREF(__pyx_v_self->_x11_display); -+ __pyx_v_self->_x11_display = __pyx_v_x11_display; - -- /* "vidcutter/libs/pympv/mpv.pyx":870 -- * if not self.inited: -- * return -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_opengl_cb_uninit_gl(self._ctx) -- * if err < 0: -+ /* "vidcutter/libs/pympv/mpv.pyx":987 -+ * if x11_display: -+ * self._x11_display = x11_display -+ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) # <<<<<<<<<<<<<< -+ * if wl_display: -+ * self._wl_display = wl_display -+ */ -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_X11_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"Display"), __pyx_v_x11_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 987, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":985 -+ * if advanced_control: -+ * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -+ * if x11_display: # <<<<<<<<<<<<<< -+ * self._x11_display = x11_display -+ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L6; -- } -- __pyx_L6:; -- } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":872 -- * with nogil: -- * err = mpv_opengl_cb_uninit_gl(self._ctx) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * self.inited = False -+ /* "vidcutter/libs/pympv/mpv.pyx":988 -+ * self._x11_display = x11_display -+ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -+ * if wl_display: # <<<<<<<<<<<<<< -+ * self._wl_display = wl_display -+ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) - */ -- __pyx_t_1 = ((__pyx_v_err < 0) != 0); -- if (unlikely(__pyx_t_1)) { -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_wl_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 988, __pyx_L1_error) -+ if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":873 -- * err = mpv_opengl_cb_uninit_gl(self._ctx) -- * if err < 0: -- * raise MPVError(err) # <<<<<<<<<<<<<< -- * self.inited = False -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":989 -+ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -+ * if wl_display: -+ * self._wl_display = wl_display # <<<<<<<<<<<<<< -+ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -+ * if drm_display: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 873, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 873, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } -- } -- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 873, __pyx_L1_error) -+ __Pyx_INCREF(__pyx_v_wl_display); -+ __Pyx_GIVEREF(__pyx_v_wl_display); -+ __Pyx_GOTREF(__pyx_v_self->_wl_display); -+ __Pyx_DECREF(__pyx_v_self->_wl_display); -+ __pyx_v_self->_wl_display = __pyx_v_wl_display; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":990 -+ * if wl_display: -+ * self._wl_display = wl_display -+ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) # <<<<<<<<<<<<<< -+ * if drm_display: -+ * drm_params.fd = drm_display.get("fd", -1) -+ */ -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_WL_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"wl_display"), __pyx_v_wl_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __PYX_ERR(0, 873, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":872 -- * with nogil: -- * err = mpv_opengl_cb_uninit_gl(self._ctx) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * self.inited = False -+ /* "vidcutter/libs/pympv/mpv.pyx":988 -+ * self._x11_display = x11_display -+ * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -+ * if wl_display: # <<<<<<<<<<<<<< -+ * self._wl_display = wl_display -+ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":874 -- * if err < 0: -- * raise MPVError(err) -- * self.inited = False # <<<<<<<<<<<<<< -- * -- * def __dealloc__(self): -+ /* "vidcutter/libs/pympv/mpv.pyx":991 -+ * self._wl_display = wl_display -+ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -+ * if drm_display: # <<<<<<<<<<<<<< -+ * drm_params.fd = drm_display.get("fd", -1) -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) - */ -- __pyx_v_self->inited = 0; -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_drm_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 991, __pyx_L1_error) -+ if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":867 -- * raise MPVError(err) -- * -- * def uninit_gl(self): # <<<<<<<<<<<<<< -- * if not self.inited: -- * return -+ /* "vidcutter/libs/pympv/mpv.pyx":992 -+ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -+ * if drm_display: -+ * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) -+ * drm_params.connector_id = drm_display.get("connector_id", -1) - */ -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 992, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_drm_params.fd = __pyx_t_7; - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.uninit_gl", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":876 -- * self.inited = False -- * -- * def __dealloc__(self): # <<<<<<<<<<<<<< -- * self.uninit_gl() -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":993 -+ * if drm_display: -+ * drm_params.fd = drm_display.get("fd", -1) -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< -+ * drm_params.connector_id = drm_display.get("connector_id", -1) -+ * arp = drm_display.get("atomic_request_ptr", None) - */ -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 993, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_drm_params.crtc_id = __pyx_t_7; - --/* Python wrapper */ --static void __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_13__dealloc__(PyObject *__pyx_v_self); /*proto*/ --static void __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_13__dealloc__(PyObject *__pyx_v_self) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); -- __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_12__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); --} -- --static void __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_12__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self) { -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__dealloc__", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":877 -- * -- * def __dealloc__(self): -- * self.uninit_gl() # <<<<<<<<<<<<<< -- * -- * DEF MAX_RENDER_PARAMS = 32 -+ /* "vidcutter/libs/pympv/mpv.pyx":994 -+ * drm_params.fd = drm_display.get("fd", -1) -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) -+ * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< -+ * arp = drm_display.get("atomic_request_ptr", None) -+ * if arp is not None: - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_uninit_gl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 877, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 877, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 994, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_drm_params.connector_id = __pyx_t_7; - -- /* "vidcutter/libs/pympv/mpv.pyx":876 -- * self.inited = False -- * -- * def __dealloc__(self): # <<<<<<<<<<<<<< -- * self.uninit_gl() -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":995 -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) -+ * drm_params.connector_id = drm_display.get("connector_id", -1) -+ * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< -+ * if arp is not None: -+ * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") - */ -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_arp = __pyx_t_2; -+ __pyx_t_2 = 0; - -- /* function exit code */ -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv.OpenGLContext.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -- __pyx_L0:; -- __Pyx_RefNannyFinishContext(); --} -- --/* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -+ /* "vidcutter/libs/pympv/mpv.pyx":996 -+ * drm_params.connector_id = drm_display.get("connector_id", -1) -+ * arp = drm_display.get("atomic_request_ptr", None) -+ * if arp is not None: # <<<<<<<<<<<<<< -+ * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") -+ * drm_params.render_fd = drm_display.get("render_fd", -1) - */ -+ __pyx_t_6 = (__pyx_v_arp != Py_None); -+ __pyx_t_3 = (__pyx_t_6 != 0); -+ if (__pyx_t_3) { - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_15__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_15__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_14__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__reduce_cython__", 0); -- -- /* "(tree fragment)":2 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ /* "vidcutter/libs/pympv/mpv.pyx":997 -+ * arp = drm_display.get("atomic_request_ptr", None) -+ * if arp is not None: -+ * 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) - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(1, 2, __pyx_L1_error) -+ __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_arp); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 997, __pyx_L1_error) -+ __pyx_v_drm_params.atomic_request_ptr = ((struct _drmModeAtomicReq **)__pyx_f_9vidcutter_4libs_3mpv_get_pointer(__pyx_t_8, __pyx_kp_s_drmModeAtomicReq)); - -- /* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -+ /* "vidcutter/libs/pympv/mpv.pyx":996 -+ * drm_params.connector_id = drm_display.get("connector_id", -1) -+ * arp = drm_display.get("atomic_request_ptr", None) -+ * if arp is not None: # <<<<<<<<<<<<<< -+ * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") -+ * drm_params.render_fd = drm_display.get("render_fd", -1) - */ -+ } - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "(tree fragment)":3 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ /* "vidcutter/libs/pympv/mpv.pyx":998 -+ * if arp is not None: -+ * 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: - */ -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 998, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 998, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v_drm_params.render_fd = __pyx_t_7; - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_17__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_17__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_16__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13OpenGLContext_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__setstate_cython__", 0); -- -- /* "(tree fragment)":4 -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":999 -+ * 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 - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(1, 4, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_DISPLAY, (&__pyx_v_drm_params), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "(tree fragment)":3 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ /* "vidcutter/libs/pympv/mpv.pyx":991 -+ * self._wl_display = wl_display -+ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -+ * if drm_display: # <<<<<<<<<<<<<< -+ * drm_params.fd = drm_display.get("fd", -1) -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) - */ -+ } - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":886 -- * object owned -- * -- * def __init__(self): # <<<<<<<<<<<<<< -- * self.owned = [] -- * self.params[0].type = MPV_RENDER_PARAM_INVALID -+ /* "vidcutter/libs/pympv/mpv.pyx":1000 -+ * 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) - */ -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_drm_osd_size); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1000, __pyx_L1_error) -+ if (__pyx_t_3) { - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -- if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} -- if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__init__", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":887 -- * -- * def __init__(self): -- * self.owned = [] # <<<<<<<<<<<<<< -- * self.params[0].type = MPV_RENDER_PARAM_INVALID -+ /* "vidcutter/libs/pympv/mpv.pyx":1001 -+ * 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) - * - */ -- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->owned); -- __Pyx_DECREF(__pyx_v_self->owned); -- __pyx_v_self->owned = __pyx_t_1; -- __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":888 -- * def __init__(self): -- * self.owned = [] -- * self.params[0].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< -- * -- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): -- */ -- (__pyx_v_self->params[0]).type = MPV_RENDER_PARAM_INVALID; -+ if ((likely(PyTuple_CheckExact(__pyx_v_drm_osd_size))) || (PyList_CheckExact(__pyx_v_drm_osd_size))) { -+ PyObject* sequence = __pyx_v_drm_osd_size; -+ Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); -+ if (unlikely(size != 2)) { -+ if (size > 2) __Pyx_RaiseTooManyValuesError(2); -+ else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); -+ __PYX_ERR(0, 1001, __pyx_L1_error) -+ } -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ if (likely(PyTuple_CheckExact(sequence))) { -+ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); -+ __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); -+ } else { -+ __pyx_t_1 = PyList_GET_ITEM(sequence, 0); -+ __pyx_t_2 = PyList_GET_ITEM(sequence, 1); -+ } -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(__pyx_t_2); -+ #else -+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ #endif -+ } else { -+ Py_ssize_t index = -1; -+ __pyx_t_4 = PyObject_GetIter(__pyx_v_drm_osd_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; -+ index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed; -+ __Pyx_GOTREF(__pyx_t_1); -+ index = 1; __pyx_t_2 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; -+ __Pyx_GOTREF(__pyx_t_2); -+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __pyx_t_9 = NULL; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ goto __pyx_L12_unpacking_done; -+ __pyx_L11_unpacking_failed:; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_9 = NULL; -+ if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); -+ __PYX_ERR(0, 1001, __pyx_L1_error) -+ __pyx_L12_unpacking_done:; -+ } -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v__drm_osd_size.width = __pyx_t_7; -+ __pyx_v__drm_osd_size.height = __pyx_t_10; - -- /* "vidcutter/libs/pympv/mpv.pyx":886 -- * object owned -+ /* "vidcutter/libs/pympv/mpv.pyx":1002 -+ * 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) # <<<<<<<<<<<<<< - * -- * def __init__(self): # <<<<<<<<<<<<<< -- * self.owned = [] -- * self.params[0].type = MPV_RENDER_PARAM_INVALID -+ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) - */ -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_OSD_SIZE, (&__pyx_v__drm_osd_size), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1002, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* function exit code */ -- __pyx_r = 0; -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = -1; -- __pyx_L0:; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":890 -- * self.params[0].type = MPV_RENDER_PARAM_INVALID -- * -- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< -- * count = len(self.owned) -- * if count >= MAX_RENDER_PARAMS: -+ /* "vidcutter/libs/pympv/mpv.pyx":1000 -+ * 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) - */ -- --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, void *__pyx_v_p, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args) { -- int __pyx_v_owned = ((int)0); -- PyObject *__pyx_v_count = NULL; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- Py_ssize_t __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("add_voidp", 0); -- if (__pyx_optional_args) { -- if (__pyx_optional_args->__pyx_n > 0) { -- __pyx_v_owned = __pyx_optional_args->owned; -- } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":891 -+ /* "vidcutter/libs/pympv/mpv.pyx":1004 -+ * params.add_voidp(MPV_RENDER_PARAM_DRM_OSD_SIZE, &_drm_osd_size) - * -- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): -- * count = len(self.owned) # <<<<<<<<<<<<<< -- * if count >= MAX_RENDER_PARAMS: -- * if owned: -- */ -- __pyx_t_1 = __pyx_v_self->owned; -- __Pyx_INCREF(__pyx_t_1); -- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 891, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_count = __pyx_t_1; -- __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":892 -- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): -- * count = len(self.owned) -- * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< -- * if owned: -- * free(p) -- */ -- __pyx_t_1 = PyObject_RichCompare(__pyx_v_count, __pyx_int_32, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 892, __pyx_L1_error) -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 892, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- if (__pyx_t_3) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":893 -- * count = len(self.owned) -- * if count >= MAX_RENDER_PARAMS: -- * if owned: # <<<<<<<<<<<<<< -- * free(p) -- * raise PyMPVError("RenderParams overflow") -+ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) # <<<<<<<<<<<<<< -+ * if err < 0: -+ * raise MPVError(err) - */ -- __pyx_t_3 = (__pyx_v_owned != 0); -- if (__pyx_t_3) { -+ __pyx_v_err = mpv_render_context_create((&__pyx_v_self->_ctx), __pyx_v_self->_mpv->_ctx, __pyx_v_params->params); - -- /* "vidcutter/libs/pympv/mpv.pyx":894 -- * if count >= MAX_RENDER_PARAMS: -- * if owned: -- * free(p) # <<<<<<<<<<<<<< -- * raise PyMPVError("RenderParams overflow") -+ /* "vidcutter/libs/pympv/mpv.pyx":1005 - * -+ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) -+ * if err < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(err) -+ * self.inited = True - */ -- free(__pyx_v_p); -- -- /* "vidcutter/libs/pympv/mpv.pyx":893 -- * count = len(self.owned) -- * if count >= MAX_RENDER_PARAMS: -- * if owned: # <<<<<<<<<<<<<< -- * free(p) -- * raise PyMPVError("RenderParams overflow") -- */ -- } -+ __pyx_t_3 = ((__pyx_v_err < 0) != 0); -+ if (unlikely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":895 -- * if owned: -- * free(p) -- * raise PyMPVError("RenderParams overflow") # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1006 -+ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) -+ * if err < 0: -+ * raise MPVError(err) # <<<<<<<<<<<<<< -+ * self.inited = True - * -- * self.params[count].type = t - */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1006, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1006, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -+ __Pyx_DECREF_SET(__pyx_t_1, function); - } - } -- __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_RenderParams_overflow) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_RenderParams_overflow); -+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1006, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 895, __pyx_L1_error) -+ __Pyx_Raise(__pyx_t_2, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __PYX_ERR(0, 1006, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":892 -- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): -- * count = len(self.owned) -- * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< -- * if owned: -- * free(p) -+ /* "vidcutter/libs/pympv/mpv.pyx":1005 -+ * -+ * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) -+ * if err < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(err) -+ * self.inited = True - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":897 -- * raise PyMPVError("RenderParams overflow") -+ /* "vidcutter/libs/pympv/mpv.pyx":1007 -+ * if err < 0: -+ * raise MPVError(err) -+ * self.inited = True # <<<<<<<<<<<<<< - * -- * self.params[count].type = t # <<<<<<<<<<<<<< -- * self.params[count].data = p -- * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID -+ * @_errors - */ -- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 897, __pyx_L1_error) -- (__pyx_v_self->params[__pyx_t_2]).type = __pyx_v_t; -+ __pyx_v_self->inited = 1; - -- /* "vidcutter/libs/pympv/mpv.pyx":898 -+ /* "vidcutter/libs/pympv/mpv.pyx":950 -+ * bint inited - * -- * self.params[count].type = t -- * self.params[count].data = p # <<<<<<<<<<<<<< -- * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID -- * self.owned.append(owned) -- */ -- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 898, __pyx_L1_error) -- (__pyx_v_self->params[__pyx_t_2]).data = __pyx_v_p; -- -- /* "vidcutter/libs/pympv/mpv.pyx":899 -- * self.params[count].type = t -- * self.params[count].data = p -- * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< -- * self.owned.append(owned) -- * -- */ -- __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_count, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 899, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- (__pyx_v_self->params[__pyx_t_2]).type = MPV_RENDER_PARAM_INVALID; -- -- /* "vidcutter/libs/pympv/mpv.pyx":900 -- * self.params[count].data = p -- * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID -- * self.owned.append(owned) # <<<<<<<<<<<<<< -- * -- * cdef add_int(self, mpv_render_param_type t, int val): -- */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_owned); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 900, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->owned, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 900, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":890 -- * self.params[0].type = MPV_RENDER_PARAM_INVALID -- * -- * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< -- * count = len(self.owned) -- * if count >= MAX_RENDER_PARAMS: -+ * def __init__(self, mpv, # <<<<<<<<<<<<<< -+ * api_type, -+ * opengl_init_params=None, - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_voidp", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = -1; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_count); -- __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_XDECREF((PyObject *)__pyx_v_params); -+ __Pyx_XDECREF(__pyx_v_arp); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":902 -- * self.owned.append(owned) -+/* "vidcutter/libs/pympv/mpv.pyx":1010 - * -- * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< -- * cdef int *p = malloc(sizeof(int)) -- * p[0] = val -+ * @_errors -+ * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< -+ * cdef: -+ * mpv_render_param param - */ - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, int __pyx_v_val) { -- int *__pyx_v_p; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile(PyObject *__pyx_v_self, PyObject *__pyx_v_icc_blob); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile(PyObject *__pyx_v_self, PyObject *__pyx_v_icc_blob) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("set_icc_profile (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_icc_blob)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_icc_blob) { -+ struct mpv_render_param __pyx_v_param; -+ struct mpv_byte_array __pyx_v_val; -+ int __pyx_v_err; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_1; -+ int __pyx_t_2; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ char *__pyx_t_6; -+ Py_ssize_t __pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("add_int", 0); -+ __Pyx_RefNannySetupContext("set_icc_profile", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":903 -+ /* "vidcutter/libs/pympv/mpv.pyx":1016 -+ * int err - * -- * cdef add_int(self, mpv_render_param_type t, int val): -- * cdef int *p = malloc(sizeof(int)) # <<<<<<<<<<<<<< -- * p[0] = val -- * self.add_voidp(t, p) -+ * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< -+ * raise PyMPVError("icc_blob should be a bytes instance") -+ * val.data = icc_blob - */ -- __pyx_v_p = ((int *)malloc((sizeof(int)))); -+ __pyx_t_1 = PyBytes_Check(__pyx_v_icc_blob); -+ __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); -+ if (unlikely(__pyx_t_2)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":904 -- * cdef add_int(self, mpv_render_param_type t, int val): -- * cdef int *p = malloc(sizeof(int)) -- * p[0] = val # <<<<<<<<<<<<<< -- * self.add_voidp(t, p) -+ /* "vidcutter/libs/pympv/mpv.pyx":1017 - * -+ * if not isinstance(icc_blob, bytes): -+ * raise PyMPVError("icc_blob should be a bytes instance") # <<<<<<<<<<<<<< -+ * val.data = icc_blob -+ * val.size = len(icc_blob) - */ -- (__pyx_v_p[0]) = __pyx_v_val; -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1017, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_4, function); -+ } -+ } -+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_icc_blob_should_be_a_bytes_insta) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_icc_blob_should_be_a_bytes_insta); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1017, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_Raise(__pyx_t_3, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __PYX_ERR(0, 1017, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":905 -- * cdef int *p = malloc(sizeof(int)) -- * p[0] = val -- * self.add_voidp(t, p) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1016 -+ * int err - * -- * cdef add_string(self, mpv_render_param_type t, char *s): -+ * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< -+ * raise PyMPVError("icc_blob should be a bytes instance") -+ * val.data = icc_blob - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":902 -- * self.owned.append(owned) -+ /* "vidcutter/libs/pympv/mpv.pyx":1018 -+ * if not isinstance(icc_blob, bytes): -+ * raise PyMPVError("icc_blob should be a bytes instance") -+ * val.data = icc_blob # <<<<<<<<<<<<<< -+ * val.size = len(icc_blob) - * -- * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< -- * cdef int *p = malloc(sizeof(int)) -- * p[0] = val - */ -+ __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_icc_blob); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1018, __pyx_L1_error) -+ __pyx_v_val.data = ((void *)((char *)__pyx_t_6)); - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_int", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":907 -- * self.add_voidp(t, p) -+ /* "vidcutter/libs/pympv/mpv.pyx":1019 -+ * raise PyMPVError("icc_blob should be a bytes instance") -+ * val.data = icc_blob -+ * val.size = len(icc_blob) # <<<<<<<<<<<<<< - * -- * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< -- * cdef char *p = malloc(strlen(s) + 1) -- * strcpy(p, s) -+ * param.type = MPV_RENDER_PARAM_ICC_PROFILE - */ -+ __pyx_t_7 = PyObject_Length(__pyx_v_icc_blob); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1019, __pyx_L1_error) -+ __pyx_v_val.size = __pyx_t_7; - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, enum mpv_render_param_type __pyx_v_t, char *__pyx_v_s) { -- char *__pyx_v_p; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("add_string", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":908 -+ /* "vidcutter/libs/pympv/mpv.pyx":1021 -+ * val.size = len(icc_blob) -+ * -+ * param.type = MPV_RENDER_PARAM_ICC_PROFILE # <<<<<<<<<<<<<< -+ * param.data = &val - * -- * cdef add_string(self, mpv_render_param_type t, char *s): -- * cdef char *p = malloc(strlen(s) + 1) # <<<<<<<<<<<<<< -- * strcpy(p, s) -- * self.add_voidp(t, p) - */ -- __pyx_v_p = ((char *)malloc((strlen(__pyx_v_s) + 1))); -+ __pyx_v_param.type = MPV_RENDER_PARAM_ICC_PROFILE; - -- /* "vidcutter/libs/pympv/mpv.pyx":909 -- * cdef add_string(self, mpv_render_param_type t, char *s): -- * cdef char *p = malloc(strlen(s) + 1) -- * strcpy(p, s) # <<<<<<<<<<<<<< -- * self.add_voidp(t, p) -+ /* "vidcutter/libs/pympv/mpv.pyx":1022 -+ * -+ * param.type = MPV_RENDER_PARAM_ICC_PROFILE -+ * param.data = &val # <<<<<<<<<<<<<< - * -+ * with nogil: - */ -- (void)(strcpy(__pyx_v_p, __pyx_v_s)); -+ __pyx_v_param.data = (&__pyx_v_val); - -- /* "vidcutter/libs/pympv/mpv.pyx":910 -- * cdef char *p = malloc(strlen(s) + 1) -- * strcpy(p, s) -- * self.add_voidp(t, p) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1024 -+ * param.data = &val - * -- * def __dealloc__(self): -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_render_context_set_parameter(self._ctx, param) -+ * return err - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":907 -- * self.add_voidp(t, p) -+ /* "vidcutter/libs/pympv/mpv.pyx":1025 -+ * -+ * with nogil: -+ * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< -+ * return err - * -- * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< -- * cdef char *p = malloc(strlen(s) + 1) -- * strcpy(p, s) - */ -+ __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); -+ } - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.add_string", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":912 -- * self.add_voidp(t, p) -- * -- * def __dealloc__(self): # <<<<<<<<<<<<<< -- * for i, j in enumerate(self.owned): -- * if j: -- */ -- --/* Python wrapper */ --static void __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ --static void __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(PyObject *__pyx_v_self) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); -- __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); --} -- --static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { -- PyObject *__pyx_v_i = NULL; -- PyObject *__pyx_v_j = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- Py_ssize_t __pyx_t_3; -- PyObject *(*__pyx_t_4)(PyObject *); -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- Py_ssize_t __pyx_t_7; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__dealloc__", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":913 -+ /* "vidcutter/libs/pympv/mpv.pyx":1024 -+ * param.data = &val - * -- * def __dealloc__(self): -- * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< -- * if j: -- * free(self.params[i].data) -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_render_context_set_parameter(self._ctx, param) -+ * return err - */ -- __Pyx_INCREF(__pyx_int_0); -- __pyx_t_1 = __pyx_int_0; -- if (likely(PyList_CheckExact(__pyx_v_self->owned)) || PyTuple_CheckExact(__pyx_v_self->owned)) { -- __pyx_t_2 = __pyx_v_self->owned; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; -- __pyx_t_4 = NULL; -- } else { -- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->owned); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L1_error) -- } -- for (;;) { -- if (likely(!__pyx_t_4)) { -- if (likely(PyList_CheckExact(__pyx_t_2))) { -- if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; -- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) -- #else -- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- #endif -- } else { -- if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) -- #else -- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- #endif -- } -- } else { -- __pyx_t_5 = __pyx_t_4(__pyx_t_2); -- if (unlikely(!__pyx_t_5)) { -- PyObject* exc_type = PyErr_Occurred(); -- if (exc_type) { -- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -- else __PYX_ERR(0, 913, __pyx_L1_error) -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L6; - } -- break; -+ __pyx_L6:; - } -- __Pyx_GOTREF(__pyx_t_5); -- } -- __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_5); -- __pyx_t_5 = 0; -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); -- __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(__pyx_t_1); -- __pyx_t_1 = __pyx_t_5; -- __pyx_t_5 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":914 -- * def __dealloc__(self): -- * for i, j in enumerate(self.owned): -- * if j: # <<<<<<<<<<<<<< -- * free(self.params[i].data) -- * -- */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_j); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 914, __pyx_L1_error) -- if (__pyx_t_6) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":915 -- * for i, j in enumerate(self.owned): -- * if j: -- * free(self.params[i].data) # <<<<<<<<<<<<<< -- * -- * cdef void *get_pointer(const char *name, object obj): -- */ -- __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error) -- free((__pyx_v_self->params[__pyx_t_7]).data); -- -- /* "vidcutter/libs/pympv/mpv.pyx":914 -- * def __dealloc__(self): -- * for i, j in enumerate(self.owned): -- * if j: # <<<<<<<<<<<<<< -- * free(self.params[i].data) -- * -- */ -- } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":913 -+ /* "vidcutter/libs/pympv/mpv.pyx":1026 -+ * with nogil: -+ * err = mpv_render_context_set_parameter(self._ctx, param) -+ * return err # <<<<<<<<<<<<<< - * -- * def __dealloc__(self): -- * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< -- * if j: -- * free(self.params[i].data) -+ * @_errors - */ -- } -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1026, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":912 -- * self.add_voidp(t, p) -+ /* "vidcutter/libs/pympv/mpv.pyx":1010 - * -- * def __dealloc__(self): # <<<<<<<<<<<<<< -- * for i, j in enumerate(self.owned): -- * if j: -+ * @_errors -+ * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< -+ * cdef: -+ * mpv_render_param param - */ - - /* function exit code */ -- goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv._RenderParams.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.set_icc_profile", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_i); -- __Pyx_XDECREF(__pyx_v_j); -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); -+ return __pyx_r; - } - --/* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -+/* "vidcutter/libs/pympv/mpv.pyx":1029 -+ * -+ * @_errors -+ * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< -+ * cdef: -+ * mpv_render_param param - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light(PyObject *__pyx_v_self, PyObject *__pyx_v_lux); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light(PyObject *__pyx_v_self, PyObject *__pyx_v_lux) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("set_ambient_light (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_light(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_lux)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_light(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_lux) { -+ struct mpv_render_param __pyx_v_param; -+ int __pyx_v_val; -+ int __pyx_v_err; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_1; -+ PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ __Pyx_RefNannySetupContext("set_ambient_light", 0); - -- /* "(tree fragment)":2 -- * def __reduce_cython__(self): -- * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -+ /* "vidcutter/libs/pympv/mpv.pyx":1035 -+ * int err -+ * -+ * val = lux # <<<<<<<<<<<<<< -+ * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT -+ * param.data = &val - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(1, 2, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_lux); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1035, __pyx_L1_error) -+ __pyx_v_val = __pyx_t_1; - -- /* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -+ /* "vidcutter/libs/pympv/mpv.pyx":1036 -+ * -+ * val = lux -+ * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT # <<<<<<<<<<<<<< -+ * param.data = &val -+ * - */ -+ __pyx_v_param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT; - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "(tree fragment)":3 -- * def __reduce_cython__(self): -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -+ /* "vidcutter/libs/pympv/mpv.pyx":1037 -+ * val = lux -+ * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT -+ * param.data = &val # <<<<<<<<<<<<<< -+ * -+ * with nogil: - */ -+ __pyx_v_param.data = (&__pyx_v_val); - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ /* "vidcutter/libs/pympv/mpv.pyx":1039 -+ * param.data = &val -+ * -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_render_context_set_parameter(self._ctx, param) -+ * return err -+ */ -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "vidcutter/libs/pympv/mpv.pyx":1040 -+ * -+ * with nogil: -+ * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< -+ * return err -+ * -+ */ -+ __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); -+ } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__setstate_cython__", 0); -+ /* "vidcutter/libs/pympv/mpv.pyx":1039 -+ * param.data = &val -+ * -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_render_context_set_parameter(self._ctx, param) -+ * return err -+ */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } - -- /* "(tree fragment)":4 -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1041 -+ * with nogil: -+ * err = mpv_render_context_set_parameter(self._ctx, param) -+ * return err # <<<<<<<<<<<<<< -+ * -+ * def get_next_frame_info(self): - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(1, 4, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_r = __pyx_t_2; -+ __pyx_t_2 = 0; -+ goto __pyx_L0; - -- /* "(tree fragment)":3 -- * def __reduce_cython__(self): -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -+ /* "vidcutter/libs/pympv/mpv.pyx":1029 -+ * -+ * @_errors -+ * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< -+ * cdef: -+ * mpv_render_param param - */ - - /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv._RenderParams.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.set_ambient_light", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; -+ __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":917 -- * free(self.params[i].data) -+/* "vidcutter/libs/pympv/mpv.pyx":1043 -+ * return err - * -- * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< -- * cdef void *p -- * if PyCapsule_IsValid(obj, name): -+ * def get_next_frame_info(self): # <<<<<<<<<<<<<< -+ * cdef: -+ * mpv_render_frame_info info - */ - --static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, PyObject *__pyx_v_obj) { -- void *__pyx_v_p; -- void *__pyx_r; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("get_next_frame_info (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_info(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); -+ -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_info(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -+ struct mpv_render_frame_info __pyx_v_info; -+ struct mpv_render_param __pyx_v_param; -+ int __pyx_v_err; -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; -- void *__pyx_t_2; -- int __pyx_t_3; -- int __pyx_t_4; -- intptr_t __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -- PyObject *__pyx_t_9 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("get_pointer", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":919 -- * cdef void *get_pointer(const char *name, object obj): -- * cdef void *p -- * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< -- * p = PyCapsule_GetPointer(obj, name) -- * elif isinstance(obj, int) or isinstance(obj, long) and obj: -- */ -- __pyx_t_1 = (PyCapsule_IsValid(__pyx_v_obj, __pyx_v_name) != 0); -- if (__pyx_t_1) { -+ __Pyx_RefNannySetupContext("get_next_frame_info", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":920 -- * cdef void *p -- * if PyCapsule_IsValid(obj, name): -- * p = PyCapsule_GetPointer(obj, name) # <<<<<<<<<<<<<< -- * elif isinstance(obj, int) or isinstance(obj, long) and obj: -- * p = obj -+ /* "vidcutter/libs/pympv/mpv.pyx":1048 -+ * mpv_render_param param -+ * -+ * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO # <<<<<<<<<<<<<< -+ * param.data = &info -+ * with nogil: - */ -- __pyx_t_2 = PyCapsule_GetPointer(__pyx_v_obj, __pyx_v_name); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 920, __pyx_L1_error) -- __pyx_v_p = __pyx_t_2; -+ __pyx_v_param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO; - -- /* "vidcutter/libs/pympv/mpv.pyx":919 -- * cdef void *get_pointer(const char *name, object obj): -- * cdef void *p -- * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< -- * p = PyCapsule_GetPointer(obj, name) -- * elif isinstance(obj, int) or isinstance(obj, long) and obj: -+ /* "vidcutter/libs/pympv/mpv.pyx":1049 -+ * -+ * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO -+ * param.data = &info # <<<<<<<<<<<<<< -+ * with nogil: -+ * err = mpv_render_context_get_info(self._ctx, param) - */ -- goto __pyx_L3; -- } -+ __pyx_v_param.data = (&__pyx_v_info); - -- /* "vidcutter/libs/pympv/mpv.pyx":921 -- * if PyCapsule_IsValid(obj, name): -- * p = PyCapsule_GetPointer(obj, name) -- * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< -- * p = obj -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":1050 -+ * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO -+ * param.data = &info -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_render_context_get_info(self._ctx, param) -+ * if err < 0: - */ -- __pyx_t_3 = PyInt_Check(__pyx_v_obj); -- __pyx_t_4 = (__pyx_t_3 != 0); -- if (!__pyx_t_4) { -- } else { -- __pyx_t_1 = __pyx_t_4; -- goto __pyx_L4_bool_binop_done; -- } -- __pyx_t_4 = PyLong_Check(__pyx_v_obj); -- __pyx_t_3 = (__pyx_t_4 != 0); -- if (__pyx_t_3) { -- } else { -- __pyx_t_1 = __pyx_t_3; -- goto __pyx_L4_bool_binop_done; -- } -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 921, __pyx_L1_error) -- __pyx_t_1 = __pyx_t_3; -- __pyx_L4_bool_binop_done:; -- if (likely(__pyx_t_1)) { -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":922 -- * p = PyCapsule_GetPointer(obj, name) -- * elif isinstance(obj, int) or isinstance(obj, long) and obj: -- * p = obj # <<<<<<<<<<<<<< -- * else: -- * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) -+ /* "vidcutter/libs/pympv/mpv.pyx":1051 -+ * param.data = &info -+ * with nogil: -+ * err = mpv_render_context_get_info(self._ctx, param) # <<<<<<<<<<<<<< -+ * if err < 0: -+ * raise MPVError(err) - */ -- __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_v_obj); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) -- __pyx_v_p = ((void *)((intptr_t)__pyx_t_5)); -+ __pyx_v_err = mpv_render_context_get_info(__pyx_v_self->_ctx, __pyx_v_param); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":921 -- * if PyCapsule_IsValid(obj, name): -- * p = PyCapsule_GetPointer(obj, name) -- * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< -- * p = obj -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":1050 -+ * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO -+ * param.data = &info -+ * with nogil: # <<<<<<<<<<<<<< -+ * err = mpv_render_context_get_info(self._ctx, param) -+ * if err < 0: - */ -- goto __pyx_L3; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":924 -- * p = obj -- * else: -- * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) # <<<<<<<<<<<<<< -- * return p -+ /* "vidcutter/libs/pympv/mpv.pyx":1052 -+ * with nogil: -+ * err = mpv_render_context_get_info(self._ctx, param) -+ * if err < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(err) - * - */ -- /*else*/ { -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_v_obj); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 924, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_8); -- __pyx_t_9 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { -- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); -- if (likely(__pyx_t_9)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -- __Pyx_INCREF(__pyx_t_9); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_7, function); -- } -- } -- __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); -- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; -- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 924, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_Raise(__pyx_t_6, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __PYX_ERR(0, 924, __pyx_L1_error) -- } -- __pyx_L3:; -+ __pyx_t_1 = ((__pyx_v_err < 0) != 0); -+ if (unlikely(__pyx_t_1)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":925 -- * else: -- * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) -- * return p # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1053 -+ * err = mpv_render_context_get_info(self._ctx, param) -+ * if err < 0: -+ * raise MPVError(err) # <<<<<<<<<<<<<< - * -- * @cython.internal -+ * return RenderFrameInfo()._from_struct(&info) - */ -- __pyx_r = __pyx_v_p; -- goto __pyx_L0; -+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1053, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } -+ } -+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_Raise(__pyx_t_2, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __PYX_ERR(0, 1053, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":917 -- * free(self.params[i].data) -+ /* "vidcutter/libs/pympv/mpv.pyx":1052 -+ * with nogil: -+ * err = mpv_render_context_get_info(self._ctx, param) -+ * if err < 0: # <<<<<<<<<<<<<< -+ * raise MPVError(err) - * -- * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< -- * cdef void *p -- * if PyCapsule_IsValid(obj, name): -- */ -- -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_XDECREF(__pyx_t_9); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv.get_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":929 -- * @cython.internal -- * cdef class RenderFrameInfo(object): -- * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< -- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) -- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -- */ -- --static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self, struct mpv_render_frame_info *__pyx_v_info) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("_from_struct", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":930 -- * cdef class RenderFrameInfo(object): -- * cdef _from_struct(self, mpv_render_frame_info *info): -- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) # <<<<<<<<<<<<<< -- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) -- */ -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_PRESENT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 930, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_present, __pyx_t_1) < 0) __PYX_ERR(0, 930, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":931 -- * cdef _from_struct(self, mpv_render_frame_info *info): -- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) -- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) # <<<<<<<<<<<<<< -- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) -- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) -- */ -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REDRAW)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 931, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redraw, __pyx_t_1) < 0) __PYX_ERR(0, 931, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":932 -- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) -- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) # <<<<<<<<<<<<<< -- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) -- * self.target_time = info[0].target_time -- */ -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REPEAT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 932, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repeat, __pyx_t_1) < 0) __PYX_ERR(0, 932, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":933 -- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) -- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) # <<<<<<<<<<<<<< -- * self.target_time = info[0].target_time -- * return self - */ -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_block_vsync, __pyx_t_1) < 0) __PYX_ERR(0, 933, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":934 -- * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) -- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) -- * self.target_time = info[0].target_time # <<<<<<<<<<<<<< -- * return self -+ /* "vidcutter/libs/pympv/mpv.pyx":1055 -+ * raise MPVError(err) - * -- */ -- __pyx_t_1 = __Pyx_PyInt_From_int64_t((__pyx_v_info[0]).target_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target_time, __pyx_t_1) < 0) __PYX_ERR(0, 934, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":935 -- * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) -- * self.target_time = info[0].target_time -- * return self # <<<<<<<<<<<<<< -+ * return RenderFrameInfo()._from_struct(&info) # <<<<<<<<<<<<<< - * -- * cdef class RenderContext(object): -+ * def set_update_callback(self, cb): - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(((PyObject *)__pyx_v_self)); -- __pyx_r = ((PyObject *)__pyx_v_self); -+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo *)((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2)->__pyx_vtab)->_from_struct(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2), (&__pyx_v_info)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_r = __pyx_t_3; -+ __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":929 -- * @cython.internal -- * cdef class RenderFrameInfo(object): -- * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< -- * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) -- * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) -+ /* "vidcutter/libs/pympv/mpv.pyx":1043 -+ * return err -+ * -+ * def get_next_frame_info(self): # <<<<<<<<<<<<<< -+ * cdef: -+ * mpv_render_frame_info info - */ - - /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo._from_struct", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.get_next_frame_info", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * cdef tuple state -- * cdef object _dict -+/* "vidcutter/libs/pympv/mpv.pyx":1057 -+ * return RenderFrameInfo()._from_struct(&info) -+ * -+ * def set_update_callback(self, cb): # <<<<<<<<<<<<<< -+ * with nogil: -+ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo___reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("set_update_callback (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_cb)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo___reduce_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self) { -- PyObject *__pyx_v_state = 0; -- PyObject *__pyx_v__dict = 0; -- int __pyx_v_use_setstate; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_cb) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__reduce_cython__", 0); -- -- /* "(tree fragment)":5 -- * cdef object _dict -- * cdef bint use_setstate -- * state = () # <<<<<<<<<<<<<< -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: -- */ -- __Pyx_INCREF(__pyx_empty_tuple); -- __pyx_v_state = __pyx_empty_tuple; -- -- /* "(tree fragment)":6 -- * cdef bint use_setstate -- * state = () -- * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< -- * if _dict is not None: -- * state += (_dict,) -- */ -- __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v__dict = __pyx_t_1; -- __pyx_t_1 = 0; -- -- /* "(tree fragment)":7 -- * state = () -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: # <<<<<<<<<<<<<< -- * state += (_dict,) -- * use_setstate = True -- */ -- __pyx_t_2 = (__pyx_v__dict != Py_None); -- __pyx_t_3 = (__pyx_t_2 != 0); -- if (__pyx_t_3) { -- -- /* "(tree fragment)":8 -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: -- * state += (_dict,) # <<<<<<<<<<<<<< -- * use_setstate = True -- * else: -- */ -- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_v__dict); -- __Pyx_GIVEREF(__pyx_v__dict); -- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); -- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); -- __pyx_t_4 = 0; -- -- /* "(tree fragment)":9 -- * if _dict is not None: -- * state += (_dict,) -- * use_setstate = True # <<<<<<<<<<<<<< -- * else: -- * use_setstate = False -- */ -- __pyx_v_use_setstate = 1; -- -- /* "(tree fragment)":7 -- * state = () -- * _dict = getattr(self, '__dict__', None) -- * if _dict is not None: # <<<<<<<<<<<<<< -- * state += (_dict,) -- * use_setstate = True -- */ -- goto __pyx_L3; -- } -- -- /* "(tree fragment)":11 -- * use_setstate = True -- * else: -- * use_setstate = False # <<<<<<<<<<<<<< -- * if use_setstate: -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state -- */ -- /*else*/ { -- __pyx_v_use_setstate = 0; -- } -- __pyx_L3:; -+ __Pyx_RefNannySetupContext("set_update_callback", 0); - -- /* "(tree fragment)":12 -- * else: -- * use_setstate = False -- * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":1058 -+ * -+ * def set_update_callback(self, cb): -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) -+ * self.update_cb = cb - */ -- __pyx_t_3 = (__pyx_v_use_setstate != 0); -- if (__pyx_t_3) { -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "(tree fragment)":13 -- * use_setstate = False -- * if use_setstate: -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state # <<<<<<<<<<<<<< -- * else: -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) -+ /* "vidcutter/libs/pympv/mpv.pyx":1059 -+ * def set_update_callback(self, cb): -+ * with nogil: -+ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) # <<<<<<<<<<<<<< -+ * self.update_cb = cb -+ * - */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_RenderFrameInfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_222419149); -- __Pyx_GIVEREF(__pyx_int_222419149); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); -- __Pyx_INCREF(Py_None); -- __Pyx_GIVEREF(Py_None); -- PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); -- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_GIVEREF(__pyx_t_4); -- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); -- __Pyx_INCREF(__pyx_v_state); -- __Pyx_GIVEREF(__pyx_v_state); -- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state); -- __pyx_t_4 = 0; -- __pyx_t_1 = 0; -- __pyx_r = __pyx_t_5; -- __pyx_t_5 = 0; -- goto __pyx_L0; -+ mpv_render_context_set_update_callback(__pyx_v_self->_ctx, (&__pyx_f_9vidcutter_4libs_3mpv__c_updatecb), ((void *)__pyx_v_cb)); -+ } - -- /* "(tree fragment)":12 -- * else: -- * use_setstate = False -- * if use_setstate: # <<<<<<<<<<<<<< -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":1058 -+ * -+ * def set_update_callback(self, cb): -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) -+ * self.update_cb = cb - */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } - } - -- /* "(tree fragment)":15 -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, None), state -- * else: -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) -+ /* "vidcutter/libs/pympv/mpv.pyx":1060 -+ * with nogil: -+ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) -+ * self.update_cb = cb # <<<<<<<<<<<<<< -+ * -+ * def update(self): - */ -- /*else*/ { -- __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_RenderFrameInfo); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); -- __Pyx_INCREF(__pyx_int_222419149); -- __Pyx_GIVEREF(__pyx_int_222419149); -- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); -- __Pyx_INCREF(__pyx_v_state); -- __Pyx_GIVEREF(__pyx_v_state); -- PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); -- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_GIVEREF(__pyx_t_5); -- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); -- __pyx_t_5 = 0; -- __pyx_t_1 = 0; -- __pyx_r = __pyx_t_4; -- __pyx_t_4 = 0; -- goto __pyx_L0; -- } -+ __Pyx_INCREF(__pyx_v_cb); -+ __Pyx_GIVEREF(__pyx_v_cb); -+ __Pyx_GOTREF(__pyx_v_self->update_cb); -+ __Pyx_DECREF(__pyx_v_self->update_cb); -+ __pyx_v_self->update_cb = __pyx_v_cb; - -- /* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * cdef tuple state -- * cdef object _dict -+ /* "vidcutter/libs/pympv/mpv.pyx":1057 -+ * return RenderFrameInfo()._from_struct(&info) -+ * -+ * def set_update_callback(self, cb): # <<<<<<<<<<<<<< -+ * with nogil: -+ * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) - */ - - /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_state); -- __Pyx_XDECREF(__pyx_v__dict); -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "(tree fragment)":16 -- * else: -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) -+/* "vidcutter/libs/pympv/mpv.pyx":1062 -+ * self.update_cb = cb -+ * -+ * def update(self): # <<<<<<<<<<<<<< -+ * cdef uint64_t ret -+ * with nogil: - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ __Pyx_RefNannySetupContext("update (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cython__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -+ uint64_t __pyx_v_ret; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__setstate_cython__", 0); -+ __Pyx_RefNannySetupContext("update", 0); - -- /* "(tree fragment)":17 -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) -- * def __setstate_cython__(self, __pyx_state): -- * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1064 -+ * def update(self): -+ * cdef uint64_t ret -+ * with nogil: # <<<<<<<<<<<<<< -+ * ret = mpv_render_context_update(self._ctx) -+ * return ret - */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1065 -+ * cdef uint64_t ret -+ * with nogil: -+ * ret = mpv_render_context_update(self._ctx) # <<<<<<<<<<<<<< -+ * return ret -+ * -+ */ -+ __pyx_v_ret = mpv_render_context_update(__pyx_v_self->_ctx); -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1064 -+ * def update(self): -+ * cdef uint64_t ret -+ * with nogil: # <<<<<<<<<<<<<< -+ * ret = mpv_render_context_update(self._ctx) -+ * return ret -+ */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1066 -+ * with nogil: -+ * ret = mpv_render_context_update(self._ctx) -+ * return ret # <<<<<<<<<<<<<< -+ * -+ * @_errors -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - -- /* "(tree fragment)":16 -- * else: -- * return __pyx_unpickle_RenderFrameInfo, (type(self), 0xd41d8cd, state) -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_unpickle_RenderFrameInfo__set_state(self, __pyx_state) -+ /* "vidcutter/libs/pympv/mpv.pyx":1062 -+ * self.update_cb = cb -+ * -+ * def update(self): # <<<<<<<<<<<<<< -+ * cdef uint64_t ret -+ * with nogil: - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderFrameInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.update", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); -@@ -18902,98 +18218,80 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cy - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":950 -- * bint inited -+/* "vidcutter/libs/pympv/mpv.pyx":1069 - * -- * def __init__(self, mpv, # <<<<<<<<<<<<<< -- * api_type, -- * opengl_init_params=None, -+ * @_errors -+ * def render(self, # <<<<<<<<<<<<<< -+ * opengl_fbo=None, -+ * flip_y=False, - */ - - /* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_mpv = 0; -- PyObject *__pyx_v_api_type = 0; -- PyObject *__pyx_v_opengl_init_params = 0; -- PyObject *__pyx_v_advanced_control = 0; -- PyObject *__pyx_v_x11_display = 0; -- PyObject *__pyx_v_wl_display = 0; -- PyObject *__pyx_v_drm_display = 0; -- PyObject *__pyx_v_drm_osd_size = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_opengl_fbo = 0; -+ PyObject *__pyx_v_flip_y = 0; -+ PyObject *__pyx_v_depth = 0; -+ PyObject *__pyx_v_block_for_target_time = 0; -+ PyObject *__pyx_v_skip_rendering = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- int __pyx_r; -+ PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -+ __Pyx_RefNannySetupContext("render (wrapper)", 0); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_api_type,&__pyx_n_s_opengl_init_params,&__pyx_n_s_advanced_control,&__pyx_n_s_x11_display,&__pyx_n_s_wl_display,&__pyx_n_s_drm_display,&__pyx_n_s_drm_osd_size,0}; -- PyObject* values[8] = {0,0,0,0,0,0,0,0}; -- -- /* "vidcutter/libs/pympv/mpv.pyx":952 -- * def __init__(self, mpv, -- * api_type, -- * opengl_init_params=None, # <<<<<<<<<<<<<< -- * advanced_control=False, -- * x11_display=None, -- */ -- values[2] = ((PyObject *)Py_None); -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_opengl_fbo,&__pyx_n_s_flip_y,&__pyx_n_s_depth,&__pyx_n_s_block_for_target_time,&__pyx_n_s_skip_rendering,0}; -+ PyObject* values[5] = {0,0,0,0,0}; - -- /* "vidcutter/libs/pympv/mpv.pyx":953 -- * api_type, -- * opengl_init_params=None, -- * advanced_control=False, # <<<<<<<<<<<<<< -- * x11_display=None, -- * wl_display=None, -+ /* "vidcutter/libs/pympv/mpv.pyx":1070 -+ * @_errors -+ * def render(self, -+ * opengl_fbo=None, # <<<<<<<<<<<<<< -+ * flip_y=False, -+ * depth=None, - */ -- values[3] = ((PyObject *)Py_False); -+ values[0] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":954 -- * opengl_init_params=None, -- * advanced_control=False, -- * x11_display=None, # <<<<<<<<<<<<<< -- * wl_display=None, -- * drm_display=None, -+ /* "vidcutter/libs/pympv/mpv.pyx":1071 -+ * def render(self, -+ * opengl_fbo=None, -+ * flip_y=False, # <<<<<<<<<<<<<< -+ * depth=None, -+ * block_for_target_time=True, - */ -- values[4] = ((PyObject *)Py_None); -+ values[1] = ((PyObject *)Py_False); - -- /* "vidcutter/libs/pympv/mpv.pyx":955 -- * advanced_control=False, -- * x11_display=None, -- * wl_display=None, # <<<<<<<<<<<<<< -- * drm_display=None, -- * drm_osd_size=None -+ /* "vidcutter/libs/pympv/mpv.pyx":1072 -+ * opengl_fbo=None, -+ * flip_y=False, -+ * depth=None, # <<<<<<<<<<<<<< -+ * block_for_target_time=True, -+ * skip_rendering=False): - */ -- values[5] = ((PyObject *)Py_None); -+ values[2] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":956 -- * x11_display=None, -- * wl_display=None, -- * drm_display=None, # <<<<<<<<<<<<<< -- * drm_osd_size=None -- * ): -+ /* "vidcutter/libs/pympv/mpv.pyx":1073 -+ * flip_y=False, -+ * depth=None, -+ * block_for_target_time=True, # <<<<<<<<<<<<<< -+ * skip_rendering=False): -+ * - */ -- values[6] = ((PyObject *)Py_None); -+ values[3] = ((PyObject *)Py_True); - -- /* "vidcutter/libs/pympv/mpv.pyx":957 -- * wl_display=None, -- * drm_display=None, -- * drm_osd_size=None # <<<<<<<<<<<<<< -- * ): -+ /* "vidcutter/libs/pympv/mpv.pyx":1074 -+ * depth=None, -+ * block_for_target_time=True, -+ * skip_rendering=False): # <<<<<<<<<<<<<< - * -+ * cdef: - */ -- values[7] = ((PyObject *)Py_None); -+ values[4] = ((PyObject *)Py_False); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { -- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); -- CYTHON_FALLTHROUGH; -- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); -- CYTHON_FALLTHROUGH; -- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); -- CYTHON_FALLTHROUGH; - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -@@ -19010,62 +18308,40 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mpv)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_opengl_fbo); -+ if (value) { values[0] = value; kw_args--; } -+ } - CYTHON_FALLTHROUGH; - case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_api_type)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, 1); __PYX_ERR(0, 950, __pyx_L3_error) -+ if (kw_args > 0) { -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flip_y); -+ if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_opengl_init_params); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_advanced_control); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block_for_target_time); - if (value) { values[3] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x11_display); -+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_skip_rendering); - if (value) { values[4] = value; kw_args--; } - } -- CYTHON_FALLTHROUGH; -- case 5: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wl_display); -- if (value) { values[5] = value; kw_args--; } -- } -- CYTHON_FALLTHROUGH; -- case 6: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_drm_display); -- if (value) { values[6] = value; kw_args--; } -- } -- CYTHON_FALLTHROUGH; -- case 7: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_drm_osd_size); -- if (value) { values[7] = value; kw_args--; } -- } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 950, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(0, 1069, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -- case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); -- CYTHON_FALLTHROUGH; -- case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); -- CYTHON_FALLTHROUGH; -- case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); -- CYTHON_FALLTHROUGH; - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -@@ -19073,36 +18349,35 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- break; -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } -- __pyx_v_mpv = values[0]; -- __pyx_v_api_type = values[1]; -- __pyx_v_opengl_init_params = values[2]; -- __pyx_v_advanced_control = values[3]; -- __pyx_v_x11_display = values[4]; -- __pyx_v_wl_display = values[5]; -- __pyx_v_drm_display = values[6]; -- __pyx_v_drm_osd_size = values[7]; -- } -- goto __pyx_L4_argument_unpacking_done; -+ __pyx_v_opengl_fbo = values[0]; -+ __pyx_v_flip_y = values[1]; -+ __pyx_v_depth = values[2]; -+ __pyx_v_block_for_target_time = values[3]; -+ __pyx_v_skip_rendering = values[4]; -+ } -+ goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 950, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("render", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1069, __pyx_L3_error) - __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -- return -1; -+ return NULL; - __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_api_type, __pyx_v_opengl_init_params, __pyx_v_advanced_control, __pyx_v_x11_display, __pyx_v_wl_display, __pyx_v_drm_display, __pyx_v_drm_osd_size); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_opengl_fbo, __pyx_v_flip_y, __pyx_v_depth, __pyx_v_block_for_target_time, __pyx_v_skip_rendering); - -- /* "vidcutter/libs/pympv/mpv.pyx":950 -- * bint inited -+ /* "vidcutter/libs/pympv/mpv.pyx":1069 - * -- * def __init__(self, mpv, # <<<<<<<<<<<<<< -- * api_type, -- * opengl_init_params=None, -+ * @_errors -+ * def render(self, # <<<<<<<<<<<<<< -+ * opengl_fbo=None, -+ * flip_y=False, - */ - - /* function exit code */ -@@ -19110,786 +18385,626 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_mpv, PyObject *__pyx_v_api_type, PyObject *__pyx_v_opengl_init_params, PyObject *__pyx_v_advanced_control, PyObject *__pyx_v_x11_display, PyObject *__pyx_v_wl_display, PyObject *__pyx_v_drm_display, PyObject *__pyx_v_drm_osd_size) { -- struct mpv_opengl_init_params __pyx_v_gl_params; -- struct mpv_opengl_drm_params __pyx_v_drm_params; -- struct mpv_opengl_drm_osd_size __pyx_v__drm_osd_size; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_opengl_fbo, PyObject *__pyx_v_flip_y, PyObject *__pyx_v_depth, PyObject *__pyx_v_block_for_target_time, PyObject *__pyx_v_skip_rendering) { -+ struct mpv_opengl_fbo __pyx_v_fbo; - struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_params = NULL; -- PyObject *__pyx_v_arp = NULL; -- int __pyx_v_err; -- int __pyx_r; -+ int __pyx_v_ret; -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -+ int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_5; - int __pyx_t_6; -- int __pyx_t_7; -- char const *__pyx_t_8; -- PyObject *(*__pyx_t_9)(PyObject *); -- int __pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__init__", 0); -+ __Pyx_RefNannySetupContext("render", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":965 -- * mpv_opengl_drm_osd_size _drm_osd_size -+ /* "vidcutter/libs/pympv/mpv.pyx":1079 -+ * mpv_opengl_fbo fbo - * -- * self._mpv = mpv # <<<<<<<<<<<<<< -+ * params = _RenderParams() # <<<<<<<<<<<<<< - * -- * memset(&gl_params, 0, sizeof(gl_params)) -+ * if opengl_fbo: - */ -- if (!(likely(((__pyx_v_mpv) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_mpv, __pyx_ptype_9vidcutter_4libs_3mpv_Context))))) __PYX_ERR(0, 965, __pyx_L1_error) -- __pyx_t_1 = __pyx_v_mpv; -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v_self->_mpv); -- __Pyx_DECREF(((PyObject *)__pyx_v_self->_mpv)); -- __pyx_v_self->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_t_1); -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":967 -- * self._mpv = mpv -+ /* "vidcutter/libs/pympv/mpv.pyx":1081 -+ * params = _RenderParams() - * -- * memset(&gl_params, 0, sizeof(gl_params)) # <<<<<<<<<<<<<< -- * memset(&drm_params, 0, sizeof(drm_params)) -- * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) -+ * if opengl_fbo: # <<<<<<<<<<<<<< -+ * memset(&fbo, 0, sizeof(fbo)) -+ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 - */ -- (void)(memset((&__pyx_v_gl_params), 0, (sizeof(__pyx_v_gl_params)))); -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_opengl_fbo); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1081, __pyx_L1_error) -+ if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":968 -- * -- * memset(&gl_params, 0, sizeof(gl_params)) -- * memset(&drm_params, 0, sizeof(drm_params)) # <<<<<<<<<<<<<< -- * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) -+ /* "vidcutter/libs/pympv/mpv.pyx":1082 - * -+ * if opengl_fbo: -+ * memset(&fbo, 0, sizeof(fbo)) # <<<<<<<<<<<<<< -+ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 -+ * fbo.w = opengl_fbo["w"] - */ -- (void)(memset((&__pyx_v_drm_params), 0, (sizeof(__pyx_v_drm_params)))); -+ (void)(memset((&__pyx_v_fbo), 0, (sizeof(__pyx_v_fbo)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":969 -- * memset(&gl_params, 0, sizeof(gl_params)) -- * memset(&drm_params, 0, sizeof(drm_params)) -- * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) # <<<<<<<<<<<<<< -- * -- * params = _RenderParams() -+ /* "vidcutter/libs/pympv/mpv.pyx":1083 -+ * if opengl_fbo: -+ * memset(&fbo, 0, sizeof(fbo)) -+ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< -+ * fbo.w = opengl_fbo["w"] -+ * fbo.h = opengl_fbo["h"] - */ -- (void)(memset((&__pyx_v__drm_osd_size), 0, (sizeof(__pyx_v__drm_osd_size)))); -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1083, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1083, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1083, __pyx_L1_error) -+ if (!__pyx_t_2) { -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ } else { -+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1083, __pyx_L1_error) -+ __pyx_t_3 = __pyx_t_5; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_3 = 0; -+ __pyx_L4_bool_binop_done:; -+ __pyx_v_fbo.fbo = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":971 -- * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) -- * -- * params = _RenderParams() # <<<<<<<<<<<<<< -- * -- * if api_type == self.API_OPENGL: -+ /* "vidcutter/libs/pympv/mpv.pyx":1084 -+ * memset(&fbo, 0, sizeof(fbo)) -+ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 -+ * fbo.w = opengl_fbo["w"] # <<<<<<<<<<<<<< -+ * fbo.h = opengl_fbo["h"] -+ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 - */ -- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); -- __pyx_t_1 = 0; -+ __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1084, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1084, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_v_fbo.w = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":973 -- * params = _RenderParams() -- * -- * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< -- * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) -- * else: -+ /* "vidcutter/libs/pympv/mpv.pyx":1085 -+ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 -+ * fbo.w = opengl_fbo["w"] -+ * fbo.h = opengl_fbo["h"] # <<<<<<<<<<<<<< -+ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_api_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 973, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (likely(__pyx_t_3)) { -+ __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1085, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1085, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_v_fbo.h = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":974 -- * -- * if api_type == self.API_OPENGL: -- * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) # <<<<<<<<<<<<<< -- * else: -- * raise PyMPVError("Unknown api_type %r" % api_type) -+ /* "vidcutter/libs/pympv/mpv.pyx":1086 -+ * fbo.w = opengl_fbo["w"] -+ * fbo.h = opengl_fbo["h"] -+ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -+ * if flip_y: - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_string(__pyx_v_params, MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1086, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error) -+ if (!__pyx_t_2) { -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ } else { -+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1086, __pyx_L1_error) -+ __pyx_t_3 = __pyx_t_5; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ goto __pyx_L6_bool_binop_done; -+ } -+ __pyx_t_3 = 0; -+ __pyx_L6_bool_binop_done:; -+ __pyx_v_fbo.internal_format = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":973 -+ /* "vidcutter/libs/pympv/mpv.pyx":1087 -+ * fbo.h = opengl_fbo["h"] -+ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) # <<<<<<<<<<<<<< -+ * if flip_y: -+ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -+ */ -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_FBO, (&__pyx_v_fbo), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1081 - * params = _RenderParams() - * -- * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< -- * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) -- * else: -+ * if opengl_fbo: # <<<<<<<<<<<<<< -+ * memset(&fbo, 0, sizeof(fbo)) -+ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 - */ -- goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":976 -- * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) -- * else: -- * raise PyMPVError("Unknown api_type %r" % api_type) # <<<<<<<<<<<<<< -- * -- * if opengl_init_params is not None: -+ /* "vidcutter/libs/pympv/mpv.pyx":1088 -+ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -+ * if flip_y: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -+ * if depth is not None: - */ -- /*else*/ { -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_flip_y); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1088, __pyx_L1_error) -+ if (__pyx_t_2) { -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1089 -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -+ * if flip_y: -+ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) # <<<<<<<<<<<<<< -+ * if depth is not None: -+ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -+ */ -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_FLIP_Y, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_api_type_r, __pyx_v_api_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 976, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_1, function); -- } -- } -- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_Raise(__pyx_t_2, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __PYX_ERR(0, 976, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1088 -+ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -+ * if flip_y: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -+ * if depth is not None: -+ */ - } -- __pyx_L3:; - -- /* "vidcutter/libs/pympv/mpv.pyx":978 -- * raise PyMPVError("Unknown api_type %r" % api_type) -- * -- * if opengl_init_params is not None: # <<<<<<<<<<<<<< -- * self._get_proc_address = opengl_init_params["get_proc_address"] -- * gl_params.get_proc_address = &_c_getprocaddress -+ /* "vidcutter/libs/pympv/mpv.pyx":1090 -+ * if flip_y: -+ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -+ * if depth is not None: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -+ * if not block_for_target_time: - */ -- __pyx_t_3 = (__pyx_v_opengl_init_params != Py_None); -- __pyx_t_6 = (__pyx_t_3 != 0); -+ __pyx_t_2 = (__pyx_v_depth != Py_None); -+ __pyx_t_6 = (__pyx_t_2 != 0); - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":979 -- * -- * if opengl_init_params is not None: -- * self._get_proc_address = opengl_init_params["get_proc_address"] # <<<<<<<<<<<<<< -- * gl_params.get_proc_address = &_c_getprocaddress -- * gl_params.get_proc_address_ctx = self._get_proc_address -+ /* "vidcutter/libs/pympv/mpv.pyx":1091 -+ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -+ * if depth is not None: -+ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) # <<<<<<<<<<<<<< -+ * if not block_for_target_time: -+ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) - */ -- __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_init_params, __pyx_n_s_get_proc_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_GIVEREF(__pyx_t_2); -- __Pyx_GOTREF(__pyx_v_self->_get_proc_address); -- __Pyx_DECREF(__pyx_v_self->_get_proc_address); -- __pyx_v_self->_get_proc_address = __pyx_t_2; -- __pyx_t_2 = 0; -+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_depth); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1091, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_DEPTH, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":980 -- * if opengl_init_params is not None: -- * self._get_proc_address = opengl_init_params["get_proc_address"] -- * gl_params.get_proc_address = &_c_getprocaddress # <<<<<<<<<<<<<< -- * gl_params.get_proc_address_ctx = self._get_proc_address -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -+ /* "vidcutter/libs/pympv/mpv.pyx":1090 -+ * if flip_y: -+ * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -+ * if depth is not None: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -+ * if not block_for_target_time: - */ -- __pyx_v_gl_params.get_proc_address = (&__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":981 -- * self._get_proc_address = opengl_init_params["get_proc_address"] -- * gl_params.get_proc_address = &_c_getprocaddress -- * gl_params.get_proc_address_ctx = self._get_proc_address # <<<<<<<<<<<<<< -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -- * if advanced_control: -+ /* "vidcutter/libs/pympv/mpv.pyx":1092 -+ * if depth is not None: -+ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -+ * if not block_for_target_time: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -+ * if skip_rendering: - */ -- __pyx_v_gl_params.get_proc_address_ctx = ((void *)__pyx_v_self->_get_proc_address); -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_block_for_target_time); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1092, __pyx_L1_error) -+ __pyx_t_2 = ((!__pyx_t_6) != 0); -+ if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":982 -- * gl_params.get_proc_address = &_c_getprocaddress -- * gl_params.get_proc_address_ctx = self._get_proc_address -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) # <<<<<<<<<<<<<< -- * if advanced_control: -- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -+ /* "vidcutter/libs/pympv/mpv.pyx":1093 -+ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -+ * if not block_for_target_time: -+ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) # <<<<<<<<<<<<<< -+ * if skip_rendering: -+ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, (&__pyx_v_gl_params), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 982, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":978 -- * raise PyMPVError("Unknown api_type %r" % api_type) -- * -- * if opengl_init_params is not None: # <<<<<<<<<<<<<< -- * self._get_proc_address = opengl_init_params["get_proc_address"] -- * gl_params.get_proc_address = &_c_getprocaddress -+ /* "vidcutter/libs/pympv/mpv.pyx":1092 -+ * if depth is not None: -+ * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -+ * if not block_for_target_time: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -+ * if skip_rendering: - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":983 -- * gl_params.get_proc_address_ctx = self._get_proc_address -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -- * if advanced_control: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -- * if x11_display: -+ /* "vidcutter/libs/pympv/mpv.pyx":1094 -+ * if not block_for_target_time: -+ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -+ * if skip_rendering: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) -+ * - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_advanced_control); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 983, __pyx_L1_error) -- if (__pyx_t_6) { -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skip_rendering); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error) -+ if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":984 -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -- * if advanced_control: -- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) # <<<<<<<<<<<<<< -- * if x11_display: -- * self._x11_display = x11_display -+ /* "vidcutter/libs/pympv/mpv.pyx":1095 -+ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -+ * if skip_rendering: -+ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) # <<<<<<<<<<<<<< -+ * -+ * with nogil: - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_ADVANCED_CONTROL, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 984, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_SKIP_RENDERING, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1095, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":983 -- * gl_params.get_proc_address_ctx = self._get_proc_address -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) -- * if advanced_control: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -- * if x11_display: -+ /* "vidcutter/libs/pympv/mpv.pyx":1094 -+ * if not block_for_target_time: -+ * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -+ * if skip_rendering: # <<<<<<<<<<<<<< -+ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) -+ * - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":985 -- * if advanced_control: -- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -- * if x11_display: # <<<<<<<<<<<<<< -- * self._x11_display = x11_display -- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -+ /* "vidcutter/libs/pympv/mpv.pyx":1097 -+ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) -+ * -+ * with nogil: # <<<<<<<<<<<<<< -+ * ret = mpv_render_context_render(self._ctx, params.params) -+ * return ret - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_x11_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 985, __pyx_L1_error) -- if (__pyx_t_6) { -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":986 -- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -- * if x11_display: -- * self._x11_display = x11_display # <<<<<<<<<<<<<< -- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -- * if wl_display: -+ /* "vidcutter/libs/pympv/mpv.pyx":1098 -+ * -+ * with nogil: -+ * ret = mpv_render_context_render(self._ctx, params.params) # <<<<<<<<<<<<<< -+ * return ret -+ * - */ -- __Pyx_INCREF(__pyx_v_x11_display); -- __Pyx_GIVEREF(__pyx_v_x11_display); -- __Pyx_GOTREF(__pyx_v_self->_x11_display); -- __Pyx_DECREF(__pyx_v_self->_x11_display); -- __pyx_v_self->_x11_display = __pyx_v_x11_display; -+ __pyx_v_ret = mpv_render_context_render(__pyx_v_self->_ctx, __pyx_v_params->params); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":987 -- * if x11_display: -- * self._x11_display = x11_display -- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) # <<<<<<<<<<<<<< -- * if wl_display: -- * self._wl_display = wl_display -+ /* "vidcutter/libs/pympv/mpv.pyx":1097 -+ * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) -+ * -+ * with nogil: # <<<<<<<<<<<<<< -+ * ret = mpv_render_context_render(self._ctx, params.params) -+ * return ret - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_X11_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"Display"), __pyx_v_x11_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 987, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L14; -+ } -+ __pyx_L14:; -+ } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":985 -- * if advanced_control: -- * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) -- * if x11_display: # <<<<<<<<<<<<<< -- * self._x11_display = x11_display -- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -+ /* "vidcutter/libs/pympv/mpv.pyx":1099 -+ * with nogil: -+ * ret = mpv_render_context_render(self._ctx, params.params) -+ * return ret # <<<<<<<<<<<<<< -+ * -+ * def report_swap(self): - */ -- } -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_r = __pyx_t_1; -+ __pyx_t_1 = 0; -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":988 -- * self._x11_display = x11_display -- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -- * if wl_display: # <<<<<<<<<<<<<< -- * self._wl_display = wl_display -- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -+ /* "vidcutter/libs/pympv/mpv.pyx":1069 -+ * -+ * @_errors -+ * def render(self, # <<<<<<<<<<<<<< -+ * opengl_fbo=None, -+ * flip_y=False, - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_wl_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 988, __pyx_L1_error) -- if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":989 -- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -- * if wl_display: -- * self._wl_display = wl_display # <<<<<<<<<<<<<< -- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -- * if drm_display: -- */ -- __Pyx_INCREF(__pyx_v_wl_display); -- __Pyx_GIVEREF(__pyx_v_wl_display); -- __Pyx_GOTREF(__pyx_v_self->_wl_display); -- __Pyx_DECREF(__pyx_v_self->_wl_display); -- __pyx_v_self->_wl_display = __pyx_v_wl_display; -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XDECREF((PyObject *)__pyx_v_params); -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":990 -- * if wl_display: -- * self._wl_display = wl_display -- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) # <<<<<<<<<<<<<< -- * if drm_display: -- * drm_params.fd = drm_display.get("fd", -1) -+/* "vidcutter/libs/pympv/mpv.pyx":1101 -+ * return ret -+ * -+ * def report_swap(self): # <<<<<<<<<<<<<< -+ * with nogil: -+ * mpv_render_context_report_swap(self._ctx) - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_WL_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"wl_display"), __pyx_v_wl_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":988 -- * self._x11_display = x11_display -- * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) -- * if wl_display: # <<<<<<<<<<<<<< -- * self._wl_display = wl_display -- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -- */ -- } -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("report_swap (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); - -- /* "vidcutter/libs/pympv/mpv.pyx":991 -- * self._wl_display = wl_display -- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -- * if drm_display: # <<<<<<<<<<<<<< -- * drm_params.fd = drm_display.get("fd", -1) -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) -- */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_drm_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 991, __pyx_L1_error) -- if (__pyx_t_6) { -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":992 -- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -- * if drm_display: -- * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) -- * drm_params.connector_id = drm_display.get("connector_id", -1) -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 992, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_drm_params.fd = __pyx_t_7; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("report_swap", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":993 -- * if drm_display: -- * drm_params.fd = drm_display.get("fd", -1) -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< -- * drm_params.connector_id = drm_display.get("connector_id", -1) -- * arp = drm_display.get("atomic_request_ptr", None) -+ /* "vidcutter/libs/pympv/mpv.pyx":1102 -+ * -+ * def report_swap(self): -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_render_context_report_swap(self._ctx) -+ * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 993, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_drm_params.crtc_id = __pyx_t_7; -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":994 -- * drm_params.fd = drm_display.get("fd", -1) -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) -- * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< -- * arp = drm_display.get("atomic_request_ptr", None) -- * if arp is not None: -+ /* "vidcutter/libs/pympv/mpv.pyx":1103 -+ * def report_swap(self): -+ * with nogil: -+ * mpv_render_context_report_swap(self._ctx) # <<<<<<<<<<<<<< -+ * -+ * def free(self): - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 994, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_drm_params.connector_id = __pyx_t_7; -+ mpv_render_context_report_swap(__pyx_v_self->_ctx); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":995 -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) -- * drm_params.connector_id = drm_display.get("connector_id", -1) -- * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< -- * if arp is not None: -- * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") -+ /* "vidcutter/libs/pympv/mpv.pyx":1102 -+ * -+ * def report_swap(self): -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_render_context_report_swap(self._ctx) -+ * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_arp = __pyx_t_2; -- __pyx_t_2 = 0; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L5; -+ } -+ __pyx_L5:; -+ } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":996 -- * drm_params.connector_id = drm_display.get("connector_id", -1) -- * arp = drm_display.get("atomic_request_ptr", None) -- * if arp is not None: # <<<<<<<<<<<<<< -- * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") -- * drm_params.render_fd = drm_display.get("render_fd", -1) -+ /* "vidcutter/libs/pympv/mpv.pyx":1101 -+ * return ret -+ * -+ * def report_swap(self): # <<<<<<<<<<<<<< -+ * with nogil: -+ * mpv_render_context_report_swap(self._ctx) - */ -- __pyx_t_6 = (__pyx_v_arp != Py_None); -- __pyx_t_3 = (__pyx_t_6 != 0); -- if (__pyx_t_3) { - -- /* "vidcutter/libs/pympv/mpv.pyx":997 -- * arp = drm_display.get("atomic_request_ptr", None) -- * if arp is not None: -- * 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) -- */ -- __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_arp); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 997, __pyx_L1_error) -- __pyx_v_drm_params.atomic_request_ptr = ((struct _drmModeAtomicReq **)__pyx_f_9vidcutter_4libs_3mpv_get_pointer(__pyx_t_8, __pyx_kp_s_drmModeAtomicReq)); -+ /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":996 -- * drm_params.connector_id = drm_display.get("connector_id", -1) -- * arp = drm_display.get("atomic_request_ptr", None) -- * if arp is not None: # <<<<<<<<<<<<<< -- * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") -- * drm_params.render_fd = drm_display.get("render_fd", -1) -+/* "vidcutter/libs/pympv/mpv.pyx":1105 -+ * mpv_render_context_report_swap(self._ctx) -+ * -+ * def free(self): # <<<<<<<<<<<<<< -+ * if not self.inited: -+ * return - */ -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":998 -- * if arp is not None: -- * 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: -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 998, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 998, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v_drm_params.render_fd = __pyx_t_7; -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("free (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); - -- /* "vidcutter/libs/pympv/mpv.pyx":999 -- * 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 -- */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_DISPLAY, (&__pyx_v_drm_params), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":991 -- * self._wl_display = wl_display -- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -- * if drm_display: # <<<<<<<<<<<<<< -- * drm_params.fd = drm_display.get("fd", -1) -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) -- */ -- } -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ int __pyx_t_1; -+ __Pyx_RefNannySetupContext("free", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1000 -- * 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) -- */ -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_drm_osd_size); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1000, __pyx_L1_error) -- if (__pyx_t_3) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":1001 -- * 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 ((likely(PyTuple_CheckExact(__pyx_v_drm_osd_size))) || (PyList_CheckExact(__pyx_v_drm_osd_size))) { -- PyObject* sequence = __pyx_v_drm_osd_size; -- Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); -- if (unlikely(size != 2)) { -- if (size > 2) __Pyx_RaiseTooManyValuesError(2); -- else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); -- __PYX_ERR(0, 1001, __pyx_L1_error) -- } -- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- if (likely(PyTuple_CheckExact(sequence))) { -- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); -- __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); -- } else { -- __pyx_t_1 = PyList_GET_ITEM(sequence, 0); -- __pyx_t_2 = PyList_GET_ITEM(sequence, 1); -- } -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_t_2); -- #else -- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1001, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- #endif -- } else { -- Py_ssize_t index = -1; -- __pyx_t_4 = PyObject_GetIter(__pyx_v_drm_osd_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1001, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; -- index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed; -- __Pyx_GOTREF(__pyx_t_1); -- index = 1; __pyx_t_2 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; -- __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1001, __pyx_L1_error) -- __pyx_t_9 = NULL; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- goto __pyx_L12_unpacking_done; -- __pyx_L11_unpacking_failed:; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_9 = NULL; -- if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); -- __PYX_ERR(0, 1001, __pyx_L1_error) -- __pyx_L12_unpacking_done:; -- } -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v__drm_osd_size.width = __pyx_t_7; -- __pyx_v__drm_osd_size.height = __pyx_t_10; -- -- /* "vidcutter/libs/pympv/mpv.pyx":1002 -- * 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) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1106 - * -- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) -+ * def free(self): -+ * if not self.inited: # <<<<<<<<<<<<<< -+ * return -+ * with nogil: - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_OSD_SIZE, (&__pyx_v__drm_osd_size), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1002, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); -+ if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1000 -- * 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) -+ /* "vidcutter/libs/pympv/mpv.pyx":1107 -+ * def free(self): -+ * if not self.inited: -+ * return # <<<<<<<<<<<<<< -+ * with nogil: -+ * mpv_render_context_free(self._ctx) - */ -- } -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1004 -- * params.add_voidp(MPV_RENDER_PARAM_DRM_OSD_SIZE, &_drm_osd_size) -+ /* "vidcutter/libs/pympv/mpv.pyx":1106 - * -- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) # <<<<<<<<<<<<<< -- * if err < 0: -- * raise MPVError(err) -+ * def free(self): -+ * if not self.inited: # <<<<<<<<<<<<<< -+ * return -+ * with nogil: - */ -- __pyx_v_err = mpv_render_context_create((&__pyx_v_self->_ctx), __pyx_v_self->_mpv->_ctx, __pyx_v_params->params); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":1005 -- * -- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * self.inited = True -+ /* "vidcutter/libs/pympv/mpv.pyx":1108 -+ * if not self.inited: -+ * return -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_render_context_free(self._ctx) -+ * self.inited = False - */ -- __pyx_t_3 = ((__pyx_v_err < 0) != 0); -- if (unlikely(__pyx_t_3)) { -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1006 -- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) -- * if err < 0: -- * raise MPVError(err) # <<<<<<<<<<<<<< -- * self.inited = True -+ /* "vidcutter/libs/pympv/mpv.pyx":1109 -+ * return -+ * with nogil: -+ * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< -+ * self.inited = False - * - */ -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1006, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1006, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_1, function); -+ mpv_render_context_free(__pyx_v_self->_ctx); - } -- } -- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1006, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_Raise(__pyx_t_2, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __PYX_ERR(0, 1006, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1005 -- * -- * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -- * self.inited = True -+ /* "vidcutter/libs/pympv/mpv.pyx":1108 -+ * if not self.inited: -+ * return -+ * with nogil: # <<<<<<<<<<<<<< -+ * mpv_render_context_free(self._ctx) -+ * self.inited = False - */ -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L6; -+ } -+ __pyx_L6:; -+ } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1007 -- * if err < 0: -- * raise MPVError(err) -- * self.inited = True # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1110 -+ * with nogil: -+ * mpv_render_context_free(self._ctx) -+ * self.inited = False # <<<<<<<<<<<<<< - * -- * @_errors -+ * def close(self): - */ -- __pyx_v_self->inited = 1; -+ __pyx_v_self->inited = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":950 -- * bint inited -+ /* "vidcutter/libs/pympv/mpv.pyx":1105 -+ * mpv_render_context_report_swap(self._ctx) - * -- * def __init__(self, mpv, # <<<<<<<<<<<<<< -- * api_type, -- * opengl_init_params=None, -+ * def free(self): # <<<<<<<<<<<<<< -+ * if not self.inited: -+ * return - */ - - /* function exit code */ -- __pyx_r = 0; -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = -1; -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __pyx_L0:; -- __Pyx_XDECREF((PyObject *)__pyx_v_params); -- __Pyx_XDECREF(__pyx_v_arp); -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1010 -+/* "vidcutter/libs/pympv/mpv.pyx":1112 -+ * self.inited = False - * -- * @_errors -- * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< -- * cdef: -- * mpv_render_param param -+ * def close(self): # <<<<<<<<<<<<<< -+ * if not self.inited: -+ * return - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile(PyObject *__pyx_v_self, PyObject *__pyx_v_icc_blob); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile(PyObject *__pyx_v_self, PyObject *__pyx_v_icc_blob) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_icc_profile (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_icc_blob)); -+ __Pyx_RefNannySetupContext("close (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_icc_blob) { -- struct mpv_render_param __pyx_v_param; -- struct mpv_byte_array __pyx_v_val; -- int __pyx_v_err; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; -- int __pyx_t_2; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- char *__pyx_t_6; -- Py_ssize_t __pyx_t_7; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("set_icc_profile", 0); -+ __Pyx_RefNannySetupContext("close", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1016 -- * int err -+ /* "vidcutter/libs/pympv/mpv.pyx":1113 - * -- * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< -- * raise PyMPVError("icc_blob should be a bytes instance") -- * val.data = icc_blob -- */ -- __pyx_t_1 = PyBytes_Check(__pyx_v_icc_blob); -- __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); -- if (unlikely(__pyx_t_2)) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":1017 -- * -- * if not isinstance(icc_blob, bytes): -- * raise PyMPVError("icc_blob should be a bytes instance") # <<<<<<<<<<<<<< -- * val.data = icc_blob -- * val.size = len(icc_blob) -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1017, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -- } -- } -- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_icc_blob_should_be_a_bytes_insta) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_icc_blob_should_be_a_bytes_insta); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1017, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_Raise(__pyx_t_3, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(0, 1017, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":1016 -- * int err -- * -- * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< -- * raise PyMPVError("icc_blob should be a bytes instance") -- * val.data = icc_blob -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1018 -- * if not isinstance(icc_blob, bytes): -- * raise PyMPVError("icc_blob should be a bytes instance") -- * val.data = icc_blob # <<<<<<<<<<<<<< -- * val.size = len(icc_blob) -- * -- */ -- __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_icc_blob); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1018, __pyx_L1_error) -- __pyx_v_val.data = ((void *)((char *)__pyx_t_6)); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1019 -- * raise PyMPVError("icc_blob should be a bytes instance") -- * val.data = icc_blob -- * val.size = len(icc_blob) # <<<<<<<<<<<<<< -- * -- * param.type = MPV_RENDER_PARAM_ICC_PROFILE -+ * def close(self): -+ * if not self.inited: # <<<<<<<<<<<<<< -+ * return -+ * with nogil: - */ -- __pyx_t_7 = PyObject_Length(__pyx_v_icc_blob); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1019, __pyx_L1_error) -- __pyx_v_val.size = __pyx_t_7; -+ __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); -+ if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1021 -- * val.size = len(icc_blob) -- * -- * param.type = MPV_RENDER_PARAM_ICC_PROFILE # <<<<<<<<<<<<<< -- * param.data = &val -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":1114 -+ * def close(self): -+ * if not self.inited: -+ * return # <<<<<<<<<<<<<< -+ * with nogil: -+ * mpv_render_context_free(self._ctx) - */ -- __pyx_v_param.type = MPV_RENDER_PARAM_ICC_PROFILE; -+ __Pyx_XDECREF(__pyx_r); -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1022 -- * -- * param.type = MPV_RENDER_PARAM_ICC_PROFILE -- * param.data = &val # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1113 - * -+ * def close(self): -+ * if not self.inited: # <<<<<<<<<<<<<< -+ * return - * with nogil: - */ -- __pyx_v_param.data = (&__pyx_v_val); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":1024 -- * param.data = &val -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":1115 -+ * if not self.inited: -+ * return - * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_render_context_set_parameter(self._ctx, param) -- * return err -+ * mpv_render_context_free(self._ctx) -+ * self.inited = False - */ - { - #ifdef WITH_THREAD -@@ -19899,22 +19014,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1025 -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":1116 -+ * return - * with nogil: -- * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< -- * return err -+ * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< -+ * self.inited = False - * - */ -- __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); -+ mpv_render_context_free(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1024 -- * param.data = &val -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":1115 -+ * if not self.inited: -+ * return - * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_render_context_set_parameter(self._ctx, param) -- * return err -+ * mpv_render_context_free(self._ctx) -+ * self.inited = False - */ - /*finally:*/ { - /*normal exit:*/{ -@@ -19928,1485 +19043,1505 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1026 -+ /* "vidcutter/libs/pympv/mpv.pyx":1117 - * with nogil: -- * err = mpv_render_context_set_parameter(self._ctx, param) -- * return err # <<<<<<<<<<<<<< -+ * mpv_render_context_free(self._ctx) -+ * self.inited = False # <<<<<<<<<<<<<< - * -- * @_errors -+ * def __dealloc__(self): - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1026, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ __pyx_v_self->inited = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1010 -+ /* "vidcutter/libs/pympv/mpv.pyx":1112 -+ * self.inited = False - * -- * @_errors -- * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< -- * cdef: -- * mpv_render_param param -+ * def close(self): # <<<<<<<<<<<<<< -+ * if not self.inited: -+ * return - */ - - /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.set_icc_profile", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1029 -+/* "vidcutter/libs/pympv/mpv.pyx":1119 -+ * self.inited = False -+ * -+ * def __dealloc__(self): # <<<<<<<<<<<<<< -+ * self.close() - * -- * @_errors -- * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< -- * cdef: -- * mpv_render_param param - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light(PyObject *__pyx_v_self, PyObject *__pyx_v_lux); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light(PyObject *__pyx_v_self, PyObject *__pyx_v_lux) { -- PyObject *__pyx_r = 0; -+static void __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(PyObject *__pyx_v_self); /*proto*/ -+static void __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_ambient_light (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_light(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_lux)); -+ __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); -+ __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -- return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_light(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_lux) { -- struct mpv_render_param __pyx_v_param; -- int __pyx_v_val; -- int __pyx_v_err; -- PyObject *__pyx_r = NULL; -+static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { - __Pyx_RefNannyDeclarations -- int __pyx_t_1; -+ PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("set_ambient_light", 0); -+ __Pyx_RefNannySetupContext("__dealloc__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1035 -- * int err -+ /* "vidcutter/libs/pympv/mpv.pyx":1120 - * -- * val = lux # <<<<<<<<<<<<<< -- * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT -- * param.data = &val -+ * def __dealloc__(self): -+ * self.close() # <<<<<<<<<<<<<< -+ * -+ * cdef class OpenGLRenderContext(RenderContext): - */ -- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_lux); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1035, __pyx_L1_error) -- __pyx_v_val = __pyx_t_1; -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1120, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1120, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1036 -+ /* "vidcutter/libs/pympv/mpv.pyx":1119 -+ * self.inited = False - * -- * val = lux -- * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT # <<<<<<<<<<<<<< -- * param.data = &val -+ * def __dealloc__(self): # <<<<<<<<<<<<<< -+ * self.close() - * - */ -- __pyx_v_param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT; - -- /* "vidcutter/libs/pympv/mpv.pyx":1037 -- * val = lux -- * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT -- * param.data = &val # <<<<<<<<<<<<<< -- * -- * with nogil: -- */ -- __pyx_v_param.data = (&__pyx_v_val); -+ /* function exit code */ -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv.RenderContext.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __pyx_L0:; -+ __Pyx_RefNannyFinishContext(); -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":1039 -- * param.data = &val -- * -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_render_context_set_parameter(self._ctx, param) -- * return err -+/* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1040 -- * -- * with nogil: -- * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< -- * return err -- * -- */ -- __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); -- } -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_22__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); - -- /* "vidcutter/libs/pympv/mpv.pyx":1039 -- * param.data = &val -- * -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_render_context_set_parameter(self._ctx, param) -- * return err -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":1041 -- * with nogil: -- * err = mpv_render_context_set_parameter(self._ctx, param) -- * return err # <<<<<<<<<<<<<< -- * -- * def get_next_frame_info(self): -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ -+ /* "(tree fragment)":2 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_r = __pyx_t_2; -- __pyx_t_2 = 0; -- goto __pyx_L0; -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(1, 2, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1029 -- * -- * @_errors -- * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< -- * cdef: -- * mpv_render_param param -+ /* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.set_ambient_light", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; -- __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1043 -- * return err -- * -- * def get_next_frame_info(self): # <<<<<<<<<<<<<< -- * cdef: -- * mpv_render_frame_info info -+/* "(tree fragment)":3 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("get_next_frame_info (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_info(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_info(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -- struct mpv_render_frame_info __pyx_v_info; -- struct mpv_render_param __pyx_v_param; -- int __pyx_v_err; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("get_next_frame_info", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1048 -- * mpv_render_param param -- * -- * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO # <<<<<<<<<<<<<< -- * param.data = &info -- * with nogil: -- */ -- __pyx_v_param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO; -- -- /* "vidcutter/libs/pympv/mpv.pyx":1049 -- * -- * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO -- * param.data = &info # <<<<<<<<<<<<<< -- * with nogil: -- * err = mpv_render_context_get_info(self._ctx, param) -- */ -- __pyx_v_param.data = (&__pyx_v_info); -+ __Pyx_RefNannySetupContext("__setstate_cython__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1050 -- * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO -- * param.data = &info -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_render_context_get_info(self._ctx, param) -- * if err < 0: -+ /* "(tree fragment)":4 -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(1, 4, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1051 -- * param.data = &info -- * with nogil: -- * err = mpv_render_context_get_info(self._ctx, param) # <<<<<<<<<<<<<< -- * if err < 0: -- * raise MPVError(err) -+ /* "(tree fragment)":3 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") - */ -- __pyx_v_err = mpv_render_context_get_info(__pyx_v_self->_ctx, __pyx_v_param); -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":1050 -- * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO -- * param.data = &info -- * with nogil: # <<<<<<<<<<<<<< -- * err = mpv_render_context_get_info(self._ctx, param) -- * if err < 0: -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -+ /* function exit code */ -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":1052 -- * with nogil: -- * err = mpv_render_context_get_info(self._ctx, param) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -+/* "vidcutter/libs/pympv/mpv.pyx":1123 - * -+ * cdef class OpenGLRenderContext(RenderContext): -+ * def __init__(self, mpv, # <<<<<<<<<<<<<< -+ * get_proc_address, -+ * *args, **kwargs): - */ -- __pyx_t_1 = ((__pyx_v_err < 0) != 0); -- if (unlikely(__pyx_t_1)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1053 -- * err = mpv_render_context_get_info(self._ctx, param) -- * if err < 0: -- * raise MPVError(err) # <<<<<<<<<<<<<< -- * -- * return RenderFrameInfo()._from_struct(&info) -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1053, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } -+/* Python wrapper */ -+static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_mpv = 0; -+ PyObject *__pyx_v_get_proc_address = 0; -+ PyObject *__pyx_v_args = 0; -+ PyObject *__pyx_v_kwargs = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -+ __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1; -+ __Pyx_GOTREF(__pyx_v_kwargs); -+ if (PyTuple_GET_SIZE(__pyx_args) > 2) { -+ __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args)); -+ if (unlikely(!__pyx_v_args)) { -+ __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; -+ __Pyx_RefNannyFinishContext(); -+ return -1; - } -- __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_Raise(__pyx_t_2, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __PYX_ERR(0, 1053, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_v_args); -+ } else { -+ __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); -+ } -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_get_proc_address,0}; -+ PyObject* values[2] = {0,0}; -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ default: -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mpv)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_get_proc_address)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, 1); __PYX_ERR(0, 1123, __pyx_L3_error) -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2; -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 1123, __pyx_L3_error) -+ } -+ } else if (PyTuple_GET_SIZE(__pyx_args) < 2) { -+ goto __pyx_L5_argtuple_error; -+ } else { -+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ } -+ __pyx_v_mpv = values[0]; -+ __pyx_v_get_proc_address = values[1]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1123, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; -+ __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return -1; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_get_proc_address, __pyx_v_args, __pyx_v_kwargs); - -- /* "vidcutter/libs/pympv/mpv.pyx":1052 -- * with nogil: -- * err = mpv_render_context_get_info(self._ctx, param) -- * if err < 0: # <<<<<<<<<<<<<< -- * raise MPVError(err) -+ /* function exit code */ -+ __Pyx_XDECREF(__pyx_v_args); -+ __Pyx_XDECREF(__pyx_v_kwargs); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static int __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self, PyObject *__pyx_v_mpv, PyObject *__pyx_v_get_proc_address, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { -+ PyObject *__pyx_v_init_params = NULL; -+ int __pyx_r; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__init__", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1127 -+ * *args, **kwargs): -+ * init_params = { -+ * "get_proc_address": get_proc_address # <<<<<<<<<<<<<< -+ * } -+ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, -+ */ -+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1127, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_get_proc_address, __pyx_v_get_proc_address) < 0) __PYX_ERR(0, 1127, __pyx_L1_error) -+ __pyx_v_init_params = ((PyObject*)__pyx_t_1); -+ __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1129 -+ * "get_proc_address": get_proc_address -+ * } -+ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< -+ * init_params, *args, **kwargs) - * - */ -- } -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); - -- /* "vidcutter/libs/pympv/mpv.pyx":1055 -- * raise MPVError(err) -+ /* "vidcutter/libs/pympv/mpv.pyx":1130 -+ * } -+ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, -+ * init_params, *args, **kwargs) # <<<<<<<<<<<<<< - * -- * return RenderFrameInfo()._from_struct(&info) # <<<<<<<<<<<<<< -+ * class CallbackThread(Thread): -+ */ -+ __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_INCREF(((PyObject *)__pyx_v_self)); -+ __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); -+ PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self)); -+ __Pyx_INCREF(__pyx_v_mpv); -+ __Pyx_GIVEREF(__pyx_v_mpv); -+ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_mpv); -+ __Pyx_GIVEREF(__pyx_t_2); -+ PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); -+ __Pyx_INCREF(__pyx_v_init_params); -+ __Pyx_GIVEREF(__pyx_v_init_params); -+ PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_init_params); -+ __pyx_t_2 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1129 -+ * "get_proc_address": get_proc_address -+ * } -+ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< -+ * init_params, *args, **kwargs) - * -- * def set_update_callback(self, cb): - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error) -+ __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo *)((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2)->__pyx_vtab)->_from_struct(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2), (&__pyx_v_info)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1130 -+ * } -+ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, -+ * init_params, *args, **kwargs) # <<<<<<<<<<<<<< -+ * -+ * class CallbackThread(Thread): -+ */ -+ __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1130, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1129 -+ * "get_proc_address": get_proc_address -+ * } -+ * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< -+ * init_params, *args, **kwargs) -+ * -+ */ -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_r = __pyx_t_3; -- __pyx_t_3 = 0; -- goto __pyx_L0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1043 -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":1123 - * -- * def get_next_frame_info(self): # <<<<<<<<<<<<<< -- * cdef: -- * mpv_render_frame_info info -+ * cdef class OpenGLRenderContext(RenderContext): -+ * def __init__(self, mpv, # <<<<<<<<<<<<<< -+ * get_proc_address, -+ * *args, **kwargs): - */ - - /* function exit code */ -+ __pyx_r = 0; -+ goto __pyx_L0; - __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.get_next_frame_info", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = -1; - __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_XDECREF(__pyx_v_init_params); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1057 -- * return RenderFrameInfo()._from_struct(&info) -- * -- * def set_update_callback(self, cb): # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) -+/* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_cb) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_update_callback (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_callback(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v_cb)); -+ __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_2__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_callback(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_cb) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set_update_callback", 0); -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__reduce_cython__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1058 -- * -- * def set_update_callback(self, cb): -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) -- * self.update_cb = cb -+ /* "(tree fragment)":2 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(1, 2, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1059 -- * def set_update_callback(self, cb): -- * with nogil: -- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) # <<<<<<<<<<<<<< -- * self.update_cb = cb -- * -- */ -- mpv_render_context_set_update_callback(__pyx_v_self->_ctx, (&__pyx_f_9vidcutter_4libs_3mpv__c_updatecb), ((void *)__pyx_v_cb)); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1058 -- * -- * def set_update_callback(self, cb): -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) -- * self.update_cb = cb -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1060 -- * with nogil: -- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) -- * self.update_cb = cb # <<<<<<<<<<<<<< -- * -- * def update(self): -- */ -- __Pyx_INCREF(__pyx_v_cb); -- __Pyx_GIVEREF(__pyx_v_cb); -- __Pyx_GOTREF(__pyx_v_self->update_cb); -- __Pyx_DECREF(__pyx_v_self->update_cb); -- __pyx_v_self->update_cb = __pyx_v_cb; -- -- /* "vidcutter/libs/pympv/mpv.pyx":1057 -- * return RenderFrameInfo()._from_struct(&info) -- * -- * def set_update_callback(self, cb): # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) -+ /* "(tree fragment)":1 -+ * def __reduce_cython__(self): # <<<<<<<<<<<<<< -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1062 -- * self.update_cb = cb -- * -- * def update(self): # <<<<<<<<<<<<<< -- * cdef uint64_t ret -- * with nogil: -+/* "(tree fragment)":3 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("update (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -- uint64_t __pyx_v_ret; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("update", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1064 -- * def update(self): -- * cdef uint64_t ret -- * with nogil: # <<<<<<<<<<<<<< -- * ret = mpv_render_context_update(self._ctx) -- * return ret -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":1065 -- * cdef uint64_t ret -- * with nogil: -- * ret = mpv_render_context_update(self._ctx) # <<<<<<<<<<<<<< -- * return ret -- * -- */ -- __pyx_v_ret = mpv_render_context_update(__pyx_v_self->_ctx); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1064 -- * def update(self): -- * cdef uint64_t ret -- * with nogil: # <<<<<<<<<<<<<< -- * ret = mpv_render_context_update(self._ctx) -- * return ret -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -- } -- __pyx_L5:; -- } -- } -+ __Pyx_RefNannySetupContext("__setstate_cython__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1066 -- * with nogil: -- * ret = mpv_render_context_update(self._ctx) -- * return ret # <<<<<<<<<<<<<< -- * -- * @_errors -+ /* "(tree fragment)":4 -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ __Pyx_Raise(__pyx_t_1, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __PYX_ERR(1, 4, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1062 -- * self.update_cb = cb -- * -- * def update(self): # <<<<<<<<<<<<<< -- * cdef uint64_t ret -- * with nogil: -+ /* "(tree fragment)":3 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.update", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; -- __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1069 -+/* "vidcutter/libs/pympv/mpv.pyx":1133 - * -- * @_errors -- * def render(self, # <<<<<<<<<<<<<< -- * opengl_fbo=None, -- * flip_y=False, -+ * class CallbackThread(Thread): -+ * def __init__(self): # <<<<<<<<<<<<<< -+ * Thread.__init__(self) -+ * self.daemon = True - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_opengl_fbo = 0; -- PyObject *__pyx_v_flip_y = 0; -- PyObject *__pyx_v_depth = 0; -- PyObject *__pyx_v_block_for_target_time = 0; -- PyObject *__pyx_v_skip_rendering = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, METH_O, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("render (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_opengl_fbo,&__pyx_n_s_flip_y,&__pyx_n_s_depth,&__pyx_n_s_block_for_target_time,&__pyx_n_s_skip_rendering,0}; -- PyObject* values[5] = {0,0,0,0,0}; -+ __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(__pyx_self, ((PyObject *)__pyx_v_self)); - -- /* "vidcutter/libs/pympv/mpv.pyx":1070 -- * @_errors -- * def render(self, -- * opengl_fbo=None, # <<<<<<<<<<<<<< -- * flip_y=False, -- * depth=None, -- */ -- values[0] = ((PyObject *)Py_None); -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":1071 -- * def render(self, -- * opengl_fbo=None, -- * flip_y=False, # <<<<<<<<<<<<<< -- * depth=None, -- * block_for_target_time=True, -- */ -- values[1] = ((PyObject *)Py_False); -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__init__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1072 -- * opengl_fbo=None, -- * flip_y=False, -- * depth=None, # <<<<<<<<<<<<<< -- * block_for_target_time=True, -- * skip_rendering=False): -+ /* "vidcutter/libs/pympv/mpv.pyx":1134 -+ * class CallbackThread(Thread): -+ * def __init__(self): -+ * Thread.__init__(self) # <<<<<<<<<<<<<< -+ * self.daemon = True -+ * self.lock = Semaphore() - */ -- values[2] = ((PyObject *)Py_None); -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1134, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_2)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_2); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_self) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self); -+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1073 -- * flip_y=False, -- * depth=None, -- * block_for_target_time=True, # <<<<<<<<<<<<<< -- * skip_rendering=False): -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":1135 -+ * def __init__(self): -+ * Thread.__init__(self) -+ * self.daemon = True # <<<<<<<<<<<<<< -+ * self.lock = Semaphore() -+ * self.lock.acquire(True) - */ -- values[3] = ((PyObject *)Py_True); -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1074 -- * depth=None, -- * block_for_target_time=True, -- * skip_rendering=False): # <<<<<<<<<<<<<< -- * -- * cdef: -+ /* "vidcutter/libs/pympv/mpv.pyx":1136 -+ * Thread.__init__(self) -+ * self.daemon = True -+ * self.lock = Semaphore() # <<<<<<<<<<<<<< -+ * self.lock.acquire(True) -+ * self.callback = None - */ -- values[4] = ((PyObject *)Py_False); -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); -- CYTHON_FALLTHROUGH; -- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -- CYTHON_FALLTHROUGH; -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_opengl_fbo); -- if (value) { values[0] = value; kw_args--; } -- } -- CYTHON_FALLTHROUGH; -- case 1: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flip_y); -- if (value) { values[1] = value; kw_args--; } -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth); -- if (value) { values[2] = value; kw_args--; } -- } -- CYTHON_FALLTHROUGH; -- case 3: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block_for_target_time); -- if (value) { values[3] = value; kw_args--; } -- } -- CYTHON_FALLTHROUGH; -- case 4: -- if (kw_args > 0) { -- PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_skip_rendering); -- if (value) { values[4] = value; kw_args--; } -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(0, 1069, __pyx_L3_error) -- } -- } else { -- switch (PyTuple_GET_SIZE(__pyx_args)) { -- case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); -- CYTHON_FALLTHROUGH; -- case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); -- CYTHON_FALLTHROUGH; -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1136, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_2 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_2)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_2); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); - } -- __pyx_v_opengl_fbo = values[0]; -- __pyx_v_flip_y = values[1]; -- __pyx_v_depth = values[2]; -- __pyx_v_block_for_target_time = values[3]; -- __pyx_v_skip_rendering = values[4]; - } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("render", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1069, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1136, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lock, __pyx_t_1) < 0) __PYX_ERR(0, 1136, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1137 -+ * self.daemon = True -+ * self.lock = Semaphore() -+ * self.lock.acquire(True) # <<<<<<<<<<<<<< -+ * self.callback = None -+ * self.isshutdown = False -+ */ -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_2, Py_True); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1137, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1138 -+ * self.lock = Semaphore() -+ * self.lock.acquire(True) -+ * self.callback = None # <<<<<<<<<<<<<< -+ * self.isshutdown = False -+ * -+ */ -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1138, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1139 -+ * self.lock.acquire(True) -+ * self.callback = None -+ * self.isshutdown = False # <<<<<<<<<<<<<< -+ * -+ * def shutdown(self): -+ */ -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_False) < 0) __PYX_ERR(0, 1139, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1133 -+ * -+ * class CallbackThread(Thread): -+ * def __init__(self): # <<<<<<<<<<<<<< -+ * Thread.__init__(self) -+ * self.daemon = True -+ */ -+ -+ /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_opengl_fbo, __pyx_v_flip_y, __pyx_v_depth, __pyx_v_block_for_target_time, __pyx_v_skip_rendering); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":1069 -+/* "vidcutter/libs/pympv/mpv.pyx":1141 -+ * self.isshutdown = False - * -- * @_errors -- * def render(self, # <<<<<<<<<<<<<< -- * opengl_fbo=None, -- * flip_y=False, -+ * def shutdown(self): # <<<<<<<<<<<<<< -+ * self.isshutdown = True -+ * self.callback = None - */ - -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown = {"shutdown", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, METH_O, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown(PyObject *__pyx_self, PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("shutdown (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(__pyx_self, ((PyObject *)__pyx_v_self)); -+ - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, PyObject *__pyx_v_opengl_fbo, PyObject *__pyx_v_flip_y, PyObject *__pyx_v_depth, PyObject *__pyx_v_block_for_target_time, PyObject *__pyx_v_skip_rendering) { -- struct mpv_opengl_fbo __pyx_v_fbo; -- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *__pyx_v_params = NULL; -- int __pyx_v_ret; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_t_5; -- int __pyx_t_6; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("render", 0); -+ __Pyx_RefNannySetupContext("shutdown", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1079 -- * mpv_opengl_fbo fbo -- * -- * params = _RenderParams() # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1142 - * -- * if opengl_fbo: -+ * def shutdown(self): -+ * self.isshutdown = True # <<<<<<<<<<<<<< -+ * self.callback = None -+ * self.lock.release() - */ -- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); -- __pyx_t_1 = 0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_True) < 0) __PYX_ERR(0, 1142, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1081 -- * params = _RenderParams() -+ /* "vidcutter/libs/pympv/mpv.pyx":1143 -+ * def shutdown(self): -+ * self.isshutdown = True -+ * self.callback = None # <<<<<<<<<<<<<< -+ * self.lock.release() - * -- * if opengl_fbo: # <<<<<<<<<<<<<< -- * memset(&fbo, 0, sizeof(fbo)) -- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 - */ -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_opengl_fbo); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1081, __pyx_L1_error) -- if (__pyx_t_2) { -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1143, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1082 -+ /* "vidcutter/libs/pympv/mpv.pyx":1144 -+ * self.isshutdown = True -+ * self.callback = None -+ * self.lock.release() # <<<<<<<<<<<<<< - * -- * if opengl_fbo: -- * memset(&fbo, 0, sizeof(fbo)) # <<<<<<<<<<<<<< -- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 -- * fbo.w = opengl_fbo["w"] -- */ -- (void)(memset((&__pyx_v_fbo), 0, (sizeof(__pyx_v_fbo)))); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1083 -- * if opengl_fbo: -- * memset(&fbo, 0, sizeof(fbo)) -- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< -- * fbo.w = opengl_fbo["w"] -- * fbo.h = opengl_fbo["h"] -+ * def call(self): - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1083, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1083, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1083, __pyx_L1_error) -- if (!__pyx_t_2) { -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- } else { -- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1083, __pyx_L1_error) -- __pyx_t_3 = __pyx_t_5; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- goto __pyx_L4_bool_binop_done; -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1144, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1144, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_2)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_2); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); - } -- __pyx_t_3 = 0; -- __pyx_L4_bool_binop_done:; -- __pyx_v_fbo.fbo = __pyx_t_3; -- -- /* "vidcutter/libs/pympv/mpv.pyx":1084 -- * memset(&fbo, 0, sizeof(fbo)) -- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 -- * fbo.w = opengl_fbo["w"] # <<<<<<<<<<<<<< -- * fbo.h = opengl_fbo["h"] -- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 -- */ -- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1084, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1084, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_v_fbo.w = __pyx_t_3; -- -- /* "vidcutter/libs/pympv/mpv.pyx":1085 -- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 -- * fbo.w = opengl_fbo["w"] -- * fbo.h = opengl_fbo["h"] # <<<<<<<<<<<<<< -- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -- */ -- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1085, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1085, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_v_fbo.h = __pyx_t_3; -+ } -+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1144, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1086 -- * fbo.w = opengl_fbo["w"] -- * fbo.h = opengl_fbo["h"] -- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -- * if flip_y: -+ /* "vidcutter/libs/pympv/mpv.pyx":1141 -+ * self.isshutdown = False -+ * -+ * def shutdown(self): # <<<<<<<<<<<<<< -+ * self.isshutdown = True -+ * self.callback = None - */ -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1086, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error) -- if (!__pyx_t_2) { -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- } else { -- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1086, __pyx_L1_error) -- __pyx_t_3 = __pyx_t_5; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- goto __pyx_L6_bool_binop_done; -- } -- __pyx_t_3 = 0; -- __pyx_L6_bool_binop_done:; -- __pyx_v_fbo.internal_format = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":1087 -- * fbo.h = opengl_fbo["h"] -- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) # <<<<<<<<<<<<<< -- * if flip_y: -- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -- */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_FBO, (&__pyx_v_fbo), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":1081 -- * params = _RenderParams() -+/* "vidcutter/libs/pympv/mpv.pyx":1146 -+ * self.lock.release() -+ * -+ * def call(self): # <<<<<<<<<<<<<< -+ * self.lock.release() - * -- * if opengl_fbo: # <<<<<<<<<<<<<< -- * memset(&fbo, 0, sizeof(fbo)) -- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 - */ -- } - -- /* "vidcutter/libs/pympv/mpv.pyx":1088 -- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -- * if flip_y: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -- * if depth is not None: -- */ -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_flip_y); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1088, __pyx_L1_error) -- if (__pyx_t_2) { -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call = {"call", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call, METH_O, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call(PyObject *__pyx_self, PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("call (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(__pyx_self, ((PyObject *)__pyx_v_self)); - -- /* "vidcutter/libs/pympv/mpv.pyx":1089 -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -- * if flip_y: -- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) # <<<<<<<<<<<<<< -- * if depth is not None: -- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -- */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_FLIP_Y, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":1088 -- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -- * if flip_y: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -- * if depth is not None: -- */ -- } -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("call", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1090 -- * if flip_y: -- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -- * if depth is not None: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -- * if not block_for_target_time: -+ /* "vidcutter/libs/pympv/mpv.pyx":1147 -+ * -+ * def call(self): -+ * self.lock.release() # <<<<<<<<<<<<<< -+ * -+ * def set(self, callback): - */ -- __pyx_t_2 = (__pyx_v_depth != Py_None); -- __pyx_t_6 = (__pyx_t_2 != 0); -- if (__pyx_t_6) { -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1147, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); -+ if (likely(__pyx_t_2)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_2); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_3, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1091 -- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -- * if depth is not None: -- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) # <<<<<<<<<<<<<< -- * if not block_for_target_time: -- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -+ /* "vidcutter/libs/pympv/mpv.pyx":1146 -+ * self.lock.release() -+ * -+ * def call(self): # <<<<<<<<<<<<<< -+ * self.lock.release() -+ * - */ -- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_depth); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1091, __pyx_L1_error) -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_DEPTH, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1090 -- * if flip_y: -- * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) -- * if depth is not None: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -- * if not block_for_target_time: -- */ -- } -+ /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.call", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":1092 -- * if depth is not None: -- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -- * if not block_for_target_time: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -- * if skip_rendering: -+/* "vidcutter/libs/pympv/mpv.pyx":1149 -+ * self.lock.release() -+ * -+ * def set(self, callback): # <<<<<<<<<<<<<< -+ * self.callback = callback -+ * - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_block_for_target_time); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1092, __pyx_L1_error) -- __pyx_t_2 = ((!__pyx_t_6) != 0); -- if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1093 -- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -- * if not block_for_target_time: -- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) # <<<<<<<<<<<<<< -- * if skip_rendering: -- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) -- */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":1092 -- * if depth is not None: -- * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) -- * if not block_for_target_time: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -- * if skip_rendering: -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1094 -- * if not block_for_target_time: -- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -- * if skip_rendering: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) -- * -- */ -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skip_rendering); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error) -- if (__pyx_t_2) { -- -- /* "vidcutter/libs/pympv/mpv.pyx":1095 -- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -- * if skip_rendering: -- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) # <<<<<<<<<<<<<< -- * -- * with nogil: -- */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_SKIP_RENDERING, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1095, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":1094 -- * if not block_for_target_time: -- * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) -- * if skip_rendering: # <<<<<<<<<<<<<< -- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) -- * -- */ -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1097 -- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) -- * -- * with nogil: # <<<<<<<<<<<<<< -- * ret = mpv_render_context_render(self._ctx, params.params) -- * return ret -- */ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v_self = 0; -+ PyObject *__pyx_v_callback = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("set (wrapper)", 0); - { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":1098 -- * -- * with nogil: -- * ret = mpv_render_context_render(self._ctx, params.params) # <<<<<<<<<<<<<< -- * return ret -- * -- */ -- __pyx_v_ret = mpv_render_context_render(__pyx_v_self->_ctx, __pyx_v_params->params); -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_callback,0}; -+ PyObject* values[2] = {0,0}; -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; - } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1097 -- * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) -- * -- * with nogil: # <<<<<<<<<<<<<< -- * ret = mpv_render_context_render(self._ctx, params.params) -- * return ret -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L14; -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1149, __pyx_L3_error) - } -- __pyx_L14:; - } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1149, __pyx_L3_error) -+ } -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -+ goto __pyx_L5_argtuple_error; -+ } else { -+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ } -+ __pyx_v_self = values[0]; -+ __pyx_v_callback = values[1]; - } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1149, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(__pyx_self, __pyx_v_self, __pyx_v_callback); - -- /* "vidcutter/libs/pympv/mpv.pyx":1099 -- * with nogil: -- * ret = mpv_render_context_render(self._ctx, params.params) -- * return ret # <<<<<<<<<<<<<< -+ /* function exit code */ -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("set", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1150 - * -- * def report_swap(self): -+ * def set(self, callback): -+ * self.callback = callback # <<<<<<<<<<<<<< -+ * -+ * def run(self): - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_r = __pyx_t_1; -- __pyx_t_1 = 0; -- goto __pyx_L0; -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 1150, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1069 -+ /* "vidcutter/libs/pympv/mpv.pyx":1149 -+ * self.lock.release() -+ * -+ * def set(self, callback): # <<<<<<<<<<<<<< -+ * self.callback = callback - * -- * @_errors -- * def render(self, # <<<<<<<<<<<<<< -- * opengl_fbo=None, -- * flip_y=False, - */ - - /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF((PyObject *)__pyx_v_params); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1101 -- * return ret -+/* "vidcutter/libs/pympv/mpv.pyx":1152 -+ * self.callback = callback - * -- * def report_swap(self): # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_render_context_report_swap(self._ctx) -+ * def run(self): # <<<<<<<<<<<<<< -+ * while not self.isshutdown: -+ * self.lock.acquire(True) - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run = {"run", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run, METH_O, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run(PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("report_swap (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("run (wrapper)", 0); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(__pyx_self, ((PyObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("report_swap", 0); -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_2; -+ int __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("run", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1102 -- * -- * def report_swap(self): -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_render_context_report_swap(self._ctx) -+ /* "vidcutter/libs/pympv/mpv.pyx":1153 - * -+ * def run(self): -+ * while not self.isshutdown: # <<<<<<<<<<<<<< -+ * self.lock.acquire(True) -+ * self.mpv_callback(self.callback) if self.callback else None - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ while (1) { -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1153, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_3 = ((!__pyx_t_2) != 0); -+ if (!__pyx_t_3) break; - -- /* "vidcutter/libs/pympv/mpv.pyx":1103 -- * def report_swap(self): -- * with nogil: -- * mpv_render_context_report_swap(self._ctx) # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1154 -+ * def run(self): -+ * while not self.isshutdown: -+ * self.lock.acquire(True) # <<<<<<<<<<<<<< -+ * self.mpv_callback(self.callback) if self.callback else None - * -- * def free(self): - */ -- mpv_render_context_report_swap(__pyx_v_self->_ctx); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1102 -- * -- * def report_swap(self): -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_render_context_report_swap(self._ctx) -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_acquire); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1154, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_5, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_5, Py_True); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1155 -+ * while not self.isshutdown: -+ * self.lock.acquire(True) -+ * self.mpv_callback(self.callback) if self.callback else None # <<<<<<<<<<<<<< - * -+ * def mpv_callback(self, callback): - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L5; -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ if (__pyx_t_3) { -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mpv_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_7 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { -+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); -+ if (likely(__pyx_t_7)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -+ __Pyx_INCREF(__pyx_t_7); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_4, function); - } -- __pyx_L5:; - } -+ __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_1 = __pyx_t_5; -+ __pyx_t_5 = 0; -+ } else { -+ __Pyx_INCREF(Py_None); -+ __pyx_t_1 = Py_None; -+ } -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1101 -- * return ret -+ /* "vidcutter/libs/pympv/mpv.pyx":1152 -+ * self.callback = callback - * -- * def report_swap(self): # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_render_context_report_swap(self._ctx) -+ * def run(self): # <<<<<<<<<<<<<< -+ * while not self.isshutdown: -+ * self.lock.acquire(True) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.run", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; -+ __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1105 -- * mpv_render_context_report_swap(self._ctx) -+/* "vidcutter/libs/pympv/mpv.pyx":1157 -+ * self.mpv_callback(self.callback) if self.callback else None - * -- * def free(self): # <<<<<<<<<<<<<< -- * if not self.inited: -- * return -+ * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -+ * try: -+ * callback() - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback = {"mpv_callback", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ CYTHON_UNUSED PyObject *__pyx_v_self = 0; -+ PyObject *__pyx_v_callback = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("free (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("mpv_callback (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_callback,0}; -+ PyObject* values[2] = {0,0}; -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, 1); __PYX_ERR(0, 1157, __pyx_L3_error) -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mpv_callback") < 0)) __PYX_ERR(0, 1157, __pyx_L3_error) -+ } -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -+ goto __pyx_L5_argtuple_error; -+ } else { -+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ } -+ __pyx_v_self = values[0]; -+ __pyx_v_callback = values[1]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1157, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(__pyx_self, __pyx_v_self, __pyx_v_callback); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { -+ PyObject *__pyx_v_e = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- __Pyx_RefNannySetupContext("free", 0); -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_6 = NULL; -+ int __pyx_t_7; -+ PyObject *__pyx_t_8 = NULL; -+ PyObject *__pyx_t_9 = NULL; -+ PyObject *__pyx_t_10 = NULL; -+ PyObject *__pyx_t_11 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("mpv_callback", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1106 -+ /* "vidcutter/libs/pympv/mpv.pyx":1158 - * -- * def free(self): -- * if not self.inited: # <<<<<<<<<<<<<< -- * return -- * with nogil: -+ * def mpv_callback(self, callback): -+ * try: # <<<<<<<<<<<<<< -+ * callback() -+ * except Exception as e: - */ -- __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); -- if (__pyx_t_1) { -+ { -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); -+ __Pyx_XGOTREF(__pyx_t_1); -+ __Pyx_XGOTREF(__pyx_t_2); -+ __Pyx_XGOTREF(__pyx_t_3); -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1107 -- * def free(self): -- * if not self.inited: -- * return # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_render_context_free(self._ctx) -+ /* "vidcutter/libs/pympv/mpv.pyx":1159 -+ * def mpv_callback(self, callback): -+ * try: -+ * callback() # <<<<<<<<<<<<<< -+ * except Exception as e: -+ * sys.stderr.write("pympv error during callback: %s\n" % e) - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ __Pyx_INCREF(__pyx_v_callback); -+ __pyx_t_5 = __pyx_v_callback; __pyx_t_6 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { -+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); -+ if (likely(__pyx_t_6)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -+ __Pyx_INCREF(__pyx_t_6); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_5, function); -+ } -+ } -+ __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1159, __pyx_L3_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1106 -+ /* "vidcutter/libs/pympv/mpv.pyx":1158 - * -- * def free(self): -- * if not self.inited: # <<<<<<<<<<<<<< -- * return -- * with nogil: -+ * def mpv_callback(self, callback): -+ * try: # <<<<<<<<<<<<<< -+ * callback() -+ * except Exception as e: - */ -- } -+ } -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ goto __pyx_L8_try_end; -+ __pyx_L3_error:; -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1108 -- * if not self.inited: -- * return -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_render_context_free(self._ctx) -- * self.inited = False -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":1109 -- * return -- * with nogil: -- * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< -- * self.inited = False -+ /* "vidcutter/libs/pympv/mpv.pyx":1160 -+ * try: -+ * callback() -+ * except Exception as e: # <<<<<<<<<<<<<< -+ * sys.stderr.write("pympv error during callback: %s\n" % e) - * - */ -- mpv_render_context_free(__pyx_v_self->_ctx); -- } -+ __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -+ if (__pyx_t_7) { -+ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 1160, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_5); -+ __pyx_v_e = __pyx_t_5; - -- /* "vidcutter/libs/pympv/mpv.pyx":1108 -- * if not self.inited: -- * return -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_render_context_free(self._ctx) -- * self.inited = False -+ /* "vidcutter/libs/pympv/mpv.pyx":1161 -+ * callback() -+ * except Exception as e: -+ * sys.stderr.write("pympv error during callback: %s\n" % e) # <<<<<<<<<<<<<< -+ * -+ * cdef void _c_callback(void* d) with gil: - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L6; -+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_9); -+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_stderr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_10); -+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_write); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_9); -+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -+ __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_pympv_error_during_callback_s, __pyx_v_e); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_10); -+ __pyx_t_11 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { -+ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); -+ if (likely(__pyx_t_11)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); -+ __Pyx_INCREF(__pyx_t_11); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_9, function); - } -- __pyx_L6:; - } -- } -+ __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); -+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ __Pyx_GOTREF(__pyx_t_8); -+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ goto __pyx_L4_exception_handled; -+ } -+ goto __pyx_L5_except_error; -+ __pyx_L5_except_error:; - -- /* "vidcutter/libs/pympv/mpv.pyx":1110 -- * with nogil: -- * mpv_render_context_free(self._ctx) -- * self.inited = False # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":1158 - * -- * def close(self): -+ * def mpv_callback(self, callback): -+ * try: # <<<<<<<<<<<<<< -+ * callback() -+ * except Exception as e: - */ -- __pyx_v_self->inited = 0; -+ __Pyx_XGIVEREF(__pyx_t_1); -+ __Pyx_XGIVEREF(__pyx_t_2); -+ __Pyx_XGIVEREF(__pyx_t_3); -+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -+ goto __pyx_L1_error; -+ __pyx_L4_exception_handled:; -+ __Pyx_XGIVEREF(__pyx_t_1); -+ __Pyx_XGIVEREF(__pyx_t_2); -+ __Pyx_XGIVEREF(__pyx_t_3); -+ __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -+ __pyx_L8_try_end:; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":1105 -- * mpv_render_context_report_swap(self._ctx) -+ /* "vidcutter/libs/pympv/mpv.pyx":1157 -+ * self.mpv_callback(self.callback) if self.callback else None - * -- * def free(self): # <<<<<<<<<<<<<< -- * if not self.inited: -- * return -+ * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -+ * try: -+ * callback() - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_XDECREF(__pyx_t_9); -+ __Pyx_XDECREF(__pyx_t_10); -+ __Pyx_XDECREF(__pyx_t_11); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = NULL; - __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_e); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1112 -- * self.inited = False -+/* "vidcutter/libs/pympv/mpv.pyx":1163 -+ * sys.stderr.write("pympv error during callback: %s\n" % e) - * -- * def close(self): # <<<<<<<<<<<<<< -- * if not self.inited: -- * return -+ * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< -+ * cdef uint64_t name = d -+ * callback = _callbacks.get(name) - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("close (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -+static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { -+ uint64_t __pyx_v_name; -+ PyObject *__pyx_v_callback = NULL; - __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- __Pyx_RefNannySetupContext("close", 0); -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ #ifdef WITH_THREAD -+ PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); -+ #endif -+ __Pyx_RefNannySetupContext("_c_callback", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1113 -+ /* "vidcutter/libs/pympv/mpv.pyx":1164 - * -- * def close(self): -- * if not self.inited: # <<<<<<<<<<<<<< -- * return -- * with nogil: -+ * cdef void _c_callback(void* d) with gil: -+ * cdef uint64_t name = d # <<<<<<<<<<<<<< -+ * callback = _callbacks.get(name) -+ * callback.call() - */ -- __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); -- if (__pyx_t_1) { -+ __pyx_v_name = ((uint64_t)__pyx_v_d); - -- /* "vidcutter/libs/pympv/mpv.pyx":1114 -- * def close(self): -- * if not self.inited: -- * return # <<<<<<<<<<<<<< -- * with nogil: -- * mpv_render_context_free(self._ctx) -+ /* "vidcutter/libs/pympv/mpv.pyx":1165 -+ * cdef void _c_callback(void* d) with gil: -+ * cdef uint64_t name = d -+ * callback = _callbacks.get(name) # <<<<<<<<<<<<<< -+ * callback.call() - */ -- __Pyx_XDECREF(__pyx_r); -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1165, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1165, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v_callback = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1113 -- * -- * def close(self): -- * if not self.inited: # <<<<<<<<<<<<<< -- * return -- * with nogil: -+ /* "vidcutter/libs/pympv/mpv.pyx":1166 -+ * cdef uint64_t name = d -+ * callback = _callbacks.get(name) -+ * callback.call() # <<<<<<<<<<<<<< - */ -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_callback, __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1166, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_3 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_3)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } - } -+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1115 -- * if not self.inited: -- * return -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_render_context_free(self._ctx) -- * self.inited = False -- */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -- -- /* "vidcutter/libs/pympv/mpv.pyx":1116 -- * return -- * with nogil: -- * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< -- * self.inited = False -- * -- */ -- mpv_render_context_free(__pyx_v_self->_ctx); -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1115 -- * if not self.inited: -- * return -- * with nogil: # <<<<<<<<<<<<<< -- * mpv_render_context_free(self._ctx) -- * self.inited = False -- */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L6; -- } -- __pyx_L6:; -- } -- } -- -- /* "vidcutter/libs/pympv/mpv.pyx":1117 -- * with nogil: -- * mpv_render_context_free(self._ctx) -- * self.inited = False # <<<<<<<<<<<<<< -- * -- * def __dealloc__(self): -- */ -- __pyx_v_self->inited = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":1112 -- * self.inited = False -- * -- * def close(self): # <<<<<<<<<<<<<< -- * if not self.inited: -- * return -- */ -- -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":1119 -- * self.inited = False -- * -- * def __dealloc__(self): # <<<<<<<<<<<<<< -- * self.close() -- * -- */ -- --/* Python wrapper */ --static void __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(PyObject *__pyx_v_self); /*proto*/ --static void __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(PyObject *__pyx_v_self) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); -- __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); --} -- --static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__dealloc__", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1120 -- * -- * def __dealloc__(self): -- * self.close() # <<<<<<<<<<<<<< -- * -- * cdef class OpenGLRenderContext(RenderContext): -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1120, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1120, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":1119 -- * self.inited = False -- * -- * def __dealloc__(self): # <<<<<<<<<<<<<< -- * self.close() -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":1163 -+ * sys.stderr.write("pympv error during callback: %s\n" % e) -+ * -+ * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< -+ * cdef uint64_t name = d -+ * callback = _callbacks.get(name) - */ - - /* function exit code */ -@@ -21415,774 +20550,1244 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv.RenderContext.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v_callback); - __Pyx_RefNannyFinishContext(); -+ #ifdef WITH_THREAD -+ __Pyx_PyGILState_Release(__pyx_gilstate_save); -+ #endif - } - - /* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -+ * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached = {"__pyx_unpickle_EndOfFileReached", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v___pyx_type = 0; -+ long __pyx_v___pyx_checksum; -+ PyObject *__pyx_v___pyx_state = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_22__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -+ PyObject* values[3] = {0,0,0}; -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_EndOfFileReached") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { -+ goto __pyx_L5_argtuple_error; -+ } else { -+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ } -+ __pyx_v___pyx_type = values[0]; -+ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -+ __pyx_v___pyx_state = values[2]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_v___pyx_PickleError = 0; -+ PyObject *__pyx_v___pyx_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_1; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached", 0); - -- /* "(tree fragment)":2 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0x56be9b6: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(1, 2, __pyx_L1_error) -+ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x56be9b6) != 0); -+ if (__pyx_t_1) { - -- /* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -+ /* "(tree fragment)":5 -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0x56be9b6: -+ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -+ * __pyx_result = EndOfFileReached.__new__(__pyx_type) - */ -+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_n_s_PickleError); -+ __Pyx_GIVEREF(__pyx_n_s_PickleError); -+ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_2); -+ __pyx_v___pyx_PickleError = __pyx_t_2; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "(tree fragment)":3 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ /* "(tree fragment)":6 -+ * if __pyx_checksum != 0x56be9b6: -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) # <<<<<<<<<<<<<< -+ * __pyx_result = EndOfFileReached.__new__(__pyx_type) -+ * if __pyx_state is not None: - */ -+ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x56, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_INCREF(__pyx_v___pyx_PickleError); -+ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_Raise(__pyx_t_3, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __PYX_ERR(1, 6, __pyx_L1_error) - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0x56be9b6: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -+ */ -+ } - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -+ /* "(tree fragment)":7 -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -+ * __pyx_result = EndOfFileReached.__new__(__pyx_type) # <<<<<<<<<<<<<< -+ * if __pyx_state is not None: -+ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -+ */ -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v___pyx_result = __pyx_t_3; -+ __pyx_t_3 = 0; - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__setstate_cython__", 0); -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -+ * __pyx_result = EndOfFileReached.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ */ -+ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -+ __pyx_t_6 = (__pyx_t_1 != 0); -+ if (__pyx_t_6) { - -- /* "(tree fragment)":4 -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ /* "(tree fragment)":9 -+ * __pyx_result = EndOfFileReached.__new__(__pyx_type) -+ * if __pyx_state is not None: -+ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -+ * return __pyx_result -+ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(1, 4, __pyx_L1_error) -+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -+ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - -- /* "(tree fragment)":3 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -+ * __pyx_result = EndOfFileReached.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ */ -+ } -+ -+ /* "(tree fragment)":10 -+ * if __pyx_state is not None: -+ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result # <<<<<<<<<<<<<< -+ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): -+ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v___pyx_result); -+ __pyx_r = __pyx_v___pyx_result; -+ goto __pyx_L0; -+ -+ /* "(tree fragment)":1 -+ * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result - */ - - /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v___pyx_PickleError); -+ __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1123 -- * -- * cdef class OpenGLRenderContext(RenderContext): -- * def __init__(self, mpv, # <<<<<<<<<<<<<< -- * get_proc_address, -- * *args, **kwargs): -+/* "(tree fragment)":11 -+ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): - */ - --/* Python wrapper */ --static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_mpv = 0; -- PyObject *__pyx_v_get_proc_address = 0; -- PyObject *__pyx_v_args = 0; -- PyObject *__pyx_v_kwargs = 0; -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = NULL; -+ __Pyx_RefNannyDeclarations -+ PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_2; -+ Py_ssize_t __pyx_t_3; -+ int __pyx_t_4; -+ int __pyx_t_5; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- int __pyx_r; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -- __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1; -- __Pyx_GOTREF(__pyx_v_kwargs); -- if (PyTuple_GET_SIZE(__pyx_args) > 2) { -- __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args)); -- if (unlikely(!__pyx_v_args)) { -- __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; -- __Pyx_RefNannyFinishContext(); -- return -1; -- } -- __Pyx_GOTREF(__pyx_v_args); -- } else { -- __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached__set_state", 0); -+ -+ /* "(tree fragment)":12 -+ * return __pyx_result -+ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): -+ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] # <<<<<<<<<<<<<< -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[2]) -+ */ -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) - } -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_get_proc_address,0}; -- PyObject* values[2] = {0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- default: -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mpv)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_get_proc_address)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, 1); __PYX_ERR(0, 1123, __pyx_L3_error) -- } -- } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->error); -+ __Pyx_DECREF(__pyx_v___pyx_result->error); -+ __pyx_v___pyx_result->error = __pyx_t_1; -+ __pyx_t_1 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->reason); -+ __Pyx_DECREF(__pyx_v___pyx_result->reason); -+ __pyx_v___pyx_result->reason = __pyx_t_1; -+ __pyx_t_1 = 0; -+ -+ /* "(tree fragment)":13 -+ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): -+ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[2]) -+ */ -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -+ __PYX_ERR(1, 13, __pyx_L1_error) -+ } -+ __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -+ __pyx_t_4 = ((__pyx_t_3 > 2) != 0); -+ if (__pyx_t_4) { -+ } else { -+ __pyx_t_2 = __pyx_t_4; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -+ __pyx_t_5 = (__pyx_t_4 != 0); -+ __pyx_t_2 = __pyx_t_5; -+ __pyx_L4_bool_binop_done:; -+ if (__pyx_t_2) { -+ -+ /* "(tree fragment)":14 -+ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< -+ */ -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 14, __pyx_L1_error) -+ } -+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_8 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -+ if (likely(__pyx_t_8)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -+ __Pyx_INCREF(__pyx_t_8); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_7, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "(tree fragment)":13 -+ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): -+ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[2]) -+ */ -+ } -+ -+ /* "(tree fragment)":11 -+ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -+ */ -+ -+ /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; -+ __pyx_L0:; -+ __Pyx_XGIVEREF(__pyx_r); -+ __Pyx_RefNannyFinishContext(); -+ return __pyx_r; -+} -+ -+/* "(tree fragment)":1 -+ * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ */ -+ -+/* Python wrapper */ -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage = {"__pyx_unpickle_LogMessage", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v___pyx_type = 0; -+ long __pyx_v___pyx_checksum; -+ PyObject *__pyx_v___pyx_state = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ PyObject *__pyx_r = 0; -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -+ PyObject* values[3] = {0,0,0}; -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ } - if (unlikely(kw_args > 0)) { -- const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2; -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 1123, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_LogMessage") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) - } -- } else if (PyTuple_GET_SIZE(__pyx_args) < 2) { -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } -- __pyx_v_mpv = values[0]; -- __pyx_v_get_proc_address = values[1]; -+ __pyx_v___pyx_type = values[0]; -+ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -+ __pyx_v___pyx_state = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1123, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_L3_error:; -- __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; -- __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -- return -1; -+ return NULL; - __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_get_proc_address, __pyx_v_args, __pyx_v_kwargs); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_LogMessage(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ -- __Pyx_XDECREF(__pyx_v_args); -- __Pyx_XDECREF(__pyx_v_kwargs); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static int __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self, PyObject *__pyx_v_mpv, PyObject *__pyx_v_get_proc_address, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { -- PyObject *__pyx_v_init_params = NULL; -- int __pyx_r; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_LogMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_v___pyx_PickleError = 0; -+ PyObject *__pyx_v___pyx_result = 0; -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__init__", 0); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1127 -- * *args, **kwargs): -- * init_params = { -- * "get_proc_address": get_proc_address # <<<<<<<<<<<<<< -- * } -- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0x8774fae: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) - */ -- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1127, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_get_proc_address, __pyx_v_get_proc_address) < 0) __PYX_ERR(0, 1127, __pyx_L1_error) -- __pyx_v_init_params = ((PyObject*)__pyx_t_1); -- __pyx_t_1 = 0; -+ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x8774fae) != 0); -+ if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1129 -- * "get_proc_address": get_proc_address -- * } -- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< -- * init_params, *args, **kwargs) -- * -+ /* "(tree fragment)":5 -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0x8774fae: -+ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -+ * __pyx_result = LogMessage.__new__(__pyx_type) - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_n_s_PickleError); -+ __Pyx_GIVEREF(__pyx_n_s_PickleError); -+ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_2); -+ __pyx_v___pyx_PickleError = __pyx_t_2; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1130 -- * } -- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, -- * init_params, *args, **kwargs) # <<<<<<<<<<<<<< -- * -- * class CallbackThread(Thread): -+ /* "(tree fragment)":6 -+ * if __pyx_checksum != 0x8774fae: -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) # <<<<<<<<<<<<<< -+ * __pyx_result = LogMessage.__new__(__pyx_type) -+ * if __pyx_state is not None: - */ -- __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1129, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_INCREF(((PyObject *)__pyx_v_self)); -- __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); -- PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self)); -- __Pyx_INCREF(__pyx_v_mpv); -- __Pyx_GIVEREF(__pyx_v_mpv); -- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_mpv); -- __Pyx_GIVEREF(__pyx_t_2); -- PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); -- __Pyx_INCREF(__pyx_v_init_params); -- __Pyx_GIVEREF(__pyx_v_init_params); -- PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_init_params); -- __pyx_t_2 = 0; -+ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x87, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_INCREF(__pyx_v___pyx_PickleError); -+ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_Raise(__pyx_t_3, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __PYX_ERR(1, 6, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1129 -- * "get_proc_address": get_proc_address -- * } -- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< -- * init_params, *args, **kwargs) -- * -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0x8774fae: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) - */ -- __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":1130 -- * } -- * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, -- * init_params, *args, **kwargs) # <<<<<<<<<<<<<< -- * -- * class CallbackThread(Thread): -+ /* "(tree fragment)":7 -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -+ * __pyx_result = LogMessage.__new__(__pyx_type) # <<<<<<<<<<<<<< -+ * if __pyx_state is not None: -+ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) - */ -- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __pyx_v___pyx_result = __pyx_t_3; -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1123 -- * -- * cdef class OpenGLRenderContext(RenderContext): -- * def __init__(self, mpv, # <<<<<<<<<<<<<< -- * get_proc_address, -- * *args, **kwargs): -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -+ * __pyx_result = LogMessage.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result - */ -+ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -+ __pyx_t_6 = (__pyx_t_1 != 0); -+ if (__pyx_t_6) { - -- /* function exit code */ -- __pyx_r = 0; -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = -1; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_init_params); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -+ /* "(tree fragment)":9 -+ * __pyx_result = LogMessage.__new__(__pyx_type) -+ * if __pyx_state is not None: -+ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -+ * return __pyx_result -+ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): - */ -+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -+ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_2__reduce_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__reduce_cython__", 0); -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -+ * __pyx_result = LogMessage.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ */ -+ } - -- /* "(tree fragment)":2 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ /* "(tree fragment)":10 -+ * if __pyx_state is not None: -+ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result # <<<<<<<<<<<<<< -+ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): -+ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(1, 2, __pyx_L1_error) -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v___pyx_result); -+ __pyx_r = __pyx_v___pyx_result; -+ goto __pyx_L0; - - /* "(tree fragment)":1 -- * def __reduce_cython__(self): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -+ * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result - */ - - /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; -+ __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v___pyx_PickleError); -+ __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "(tree fragment)":3 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+/* "(tree fragment)":11 -+ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstate_cython__(((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_2; -+ Py_ssize_t __pyx_t_3; -+ int __pyx_t_4; -+ int __pyx_t_5; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__setstate_cython__", 0); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage__set_state", 0); - -- /* "(tree fragment)":4 -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ /* "(tree fragment)":12 -+ * return __pyx_result -+ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): -+ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] # <<<<<<<<<<<<<< -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[4]) - */ -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_Raise(__pyx_t_1, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(1, 4, __pyx_L1_error) -- -- /* "(tree fragment)":3 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- */ -- -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_AddTraceback("vidcutter.libs.mpv.OpenGLRenderContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->level); -+ __Pyx_DECREF(__pyx_v___pyx_result->level); -+ __pyx_v___pyx_result->level = __pyx_t_1; -+ __pyx_t_1 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->log_level); -+ __Pyx_DECREF(__pyx_v___pyx_result->log_level); -+ __pyx_v___pyx_result->log_level = __pyx_t_1; -+ __pyx_t_1 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->prefix); -+ __Pyx_DECREF(__pyx_v___pyx_result->prefix); -+ __pyx_v___pyx_result->prefix = __pyx_t_1; -+ __pyx_t_1 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->text); -+ __Pyx_DECREF(__pyx_v___pyx_result->text); -+ __pyx_v___pyx_result->text = __pyx_t_1; -+ __pyx_t_1 = 0; -+ -+ /* "(tree fragment)":13 -+ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): -+ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[4]) -+ */ -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -+ __PYX_ERR(1, 13, __pyx_L1_error) -+ } -+ __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -+ __pyx_t_4 = ((__pyx_t_3 > 4) != 0); -+ if (__pyx_t_4) { -+ } else { -+ __pyx_t_2 = __pyx_t_4; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -+ __pyx_t_5 = (__pyx_t_4 != 0); -+ __pyx_t_2 = __pyx_t_5; -+ __pyx_L4_bool_binop_done:; -+ if (__pyx_t_2) { -+ -+ /* "(tree fragment)":14 -+ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< -+ */ -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 14, __pyx_L1_error) -+ } -+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_8 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -+ if (likely(__pyx_t_8)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -+ __Pyx_INCREF(__pyx_t_8); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_7, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "(tree fragment)":13 -+ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): -+ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[4]) -+ */ -+ } -+ -+ /* "(tree fragment)":11 -+ * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -+ */ -+ -+ /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; -+ __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1133 -- * -- * class CallbackThread(Thread): -- * def __init__(self): # <<<<<<<<<<<<<< -- * Thread.__init__(self) -- * self.daemon = True -+/* "(tree fragment)":1 -+ * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, METH_O, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self) { -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property = {"__pyx_unpickle_Property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v___pyx_type = 0; -+ long __pyx_v___pyx_checksum; -+ PyObject *__pyx_v___pyx_state = 0; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(__pyx_self, ((PyObject *)__pyx_v_self)); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_Property (wrapper)", 0); -+ { -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -+ PyObject* values[3] = {0,0,0}; -+ if (unlikely(__pyx_kwds)) { -+ Py_ssize_t kw_args; -+ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -+ switch (pos_args) { -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; -+ case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ CYTHON_FALLTHROUGH; -+ case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ CYTHON_FALLTHROUGH; -+ case 0: break; -+ default: goto __pyx_L5_argtuple_error; -+ } -+ kw_args = PyDict_Size(__pyx_kwds); -+ switch (pos_args) { -+ case 0: -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; -+ else goto __pyx_L5_argtuple_error; -+ CYTHON_FALLTHROUGH; -+ case 1: -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ } -+ if (unlikely(kw_args > 0)) { -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Property") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { -+ goto __pyx_L5_argtuple_error; -+ } else { -+ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -+ values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ } -+ __pyx_v___pyx_type = values[0]; -+ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -+ __pyx_v___pyx_state = values[2]; -+ } -+ goto __pyx_L4_argument_unpacking_done; -+ __pyx_L5_argtuple_error:; -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) -+ __pyx_L3_error:; -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_RefNannyFinishContext(); -+ return NULL; -+ __pyx_L4_argument_unpacking_done:; -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_Property(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_Property(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_v___pyx_PickleError = 0; -+ PyObject *__pyx_v___pyx_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__init__", 0); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_Property", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1134 -- * class CallbackThread(Thread): -- * def __init__(self): -- * Thread.__init__(self) # <<<<<<<<<<<<<< -- * self.daemon = True -- * self.lock = Semaphore() -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0x0572d11: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1134, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_2)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_2); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } -- } -- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_self) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self); -- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x0572d11) != 0); -+ if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1135 -- * def __init__(self): -- * Thread.__init__(self) -- * self.daemon = True # <<<<<<<<<<<<<< -- * self.lock = Semaphore() -- * self.lock.acquire(True) -- */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) -+ /* "(tree fragment)":5 -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0x0572d11: -+ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -+ * __pyx_result = Property.__new__(__pyx_type) -+ */ -+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_n_s_PickleError); -+ __Pyx_GIVEREF(__pyx_n_s_PickleError); -+ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_2); -+ __pyx_v___pyx_PickleError = __pyx_t_2; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1136 -- * Thread.__init__(self) -- * self.daemon = True -- * self.lock = Semaphore() # <<<<<<<<<<<<<< -- * self.lock.acquire(True) -- * self.callback = None -+ /* "(tree fragment)":6 -+ * if __pyx_checksum != 0x0572d11: -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) # <<<<<<<<<<<<<< -+ * __pyx_result = Property.__new__(__pyx_type) -+ * if __pyx_state is not None: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1136, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_2)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_2); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -+ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_INCREF(__pyx_v___pyx_PickleError); -+ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } - } -+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_Raise(__pyx_t_3, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __PYX_ERR(1, 6, __pyx_L1_error) -+ -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0x0572d11: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -+ */ - } -- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1136, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lock, __pyx_t_1) < 0) __PYX_ERR(0, 1136, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1137 -- * self.daemon = True -- * self.lock = Semaphore() -- * self.lock.acquire(True) # <<<<<<<<<<<<<< -- * self.callback = None -- * self.isshutdown = False -+ /* "(tree fragment)":7 -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -+ * __pyx_result = Property.__new__(__pyx_type) # <<<<<<<<<<<<<< -+ * if __pyx_state is not None: -+ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) - */ -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_3 = NULL; -+ __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -+ __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_2, Py_True); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1137, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v___pyx_result = __pyx_t_3; -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1138 -- * self.lock = Semaphore() -- * self.lock.acquire(True) -- * self.callback = None # <<<<<<<<<<<<<< -- * self.isshutdown = False -- * -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -+ * __pyx_result = Property.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1138, __pyx_L1_error) -+ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -+ __pyx_t_6 = (__pyx_t_1 != 0); -+ if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1139 -- * self.lock.acquire(True) -- * self.callback = None -- * self.isshutdown = False # <<<<<<<<<<<<<< -- * -- * def shutdown(self): -+ /* "(tree fragment)":9 -+ * __pyx_result = Property.__new__(__pyx_type) -+ * if __pyx_state is not None: -+ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -+ * return __pyx_result -+ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_False) < 0) __PYX_ERR(0, 1139, __pyx_L1_error) -+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -+ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1133 -- * -- * class CallbackThread(Thread): -- * def __init__(self): # <<<<<<<<<<<<<< -- * Thread.__init__(self) -- * self.daemon = True -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -+ * __pyx_result = Property.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result - */ -+ } - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ /* "(tree fragment)":10 -+ * if __pyx_state is not None: -+ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result # <<<<<<<<<<<<<< -+ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v___pyx_result); -+ __pyx_r = __pyx_v___pyx_result; - goto __pyx_L0; -+ -+ /* "(tree fragment)":1 -+ * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); -- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v___pyx_PickleError); -+ __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1141 -- * self.isshutdown = False -- * -- * def shutdown(self): # <<<<<<<<<<<<<< -- * self.isshutdown = True -- * self.callback = None -+/* "(tree fragment)":11 -+ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown = {"shutdown", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, METH_O, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown(PyObject *__pyx_self, PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("shutdown (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(__pyx_self, ((PyObject *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -+ int __pyx_t_2; -+ Py_ssize_t __pyx_t_3; -+ int __pyx_t_4; -+ int __pyx_t_5; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("shutdown", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1142 -- * -- * def shutdown(self): -- * self.isshutdown = True # <<<<<<<<<<<<<< -- * self.callback = None -- * self.lock.release() -- */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_True) < 0) __PYX_ERR(0, 1142, __pyx_L1_error) -+ __Pyx_RefNannySetupContext("__pyx_unpickle_Property__set_state", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1143 -- * def shutdown(self): -- * self.isshutdown = True -- * self.callback = None # <<<<<<<<<<<<<< -- * self.lock.release() -- * -+ /* "(tree fragment)":12 -+ * return __pyx_result -+ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] # <<<<<<<<<<<<<< -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[2]) - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1143, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":1144 -- * self.isshutdown = True -- * self.callback = None -- * self.lock.release() # <<<<<<<<<<<<<< -- * -- * def call(self): -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1144, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1144, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_2)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_2); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) - } -- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1144, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->data); -+ __Pyx_DECREF(__pyx_v___pyx_result->data); -+ __pyx_v___pyx_result->data = __pyx_t_1; -+ __pyx_t_1 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->name); -+ __Pyx_DECREF(__pyx_v___pyx_result->name); -+ __pyx_v___pyx_result->name = __pyx_t_1; -+ __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1141 -- * self.isshutdown = False -- * -- * def shutdown(self): # <<<<<<<<<<<<<< -- * self.isshutdown = True -- * self.callback = None -+ /* "(tree fragment)":13 -+ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[2]) - */ -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -+ __PYX_ERR(1, 13, __pyx_L1_error) -+ } -+ __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -+ __pyx_t_4 = ((__pyx_t_3 > 2) != 0); -+ if (__pyx_t_4) { -+ } else { -+ __pyx_t_2 = __pyx_t_4; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -+ __pyx_t_5 = (__pyx_t_4 != 0); -+ __pyx_t_2 = __pyx_t_5; -+ __pyx_L4_bool_binop_done:; -+ if (__pyx_t_2) { - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "vidcutter/libs/pympv/mpv.pyx":1146 -- * self.lock.release() -- * -- * def call(self): # <<<<<<<<<<<<<< -- * self.lock.release() -- * -+ /* "(tree fragment)":14 -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< - */ -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 14, __pyx_L1_error) -+ } -+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_8 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -+ if (likely(__pyx_t_8)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -+ __Pyx_INCREF(__pyx_t_8); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_7, function); -+ } -+ } -+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call = {"call", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call, METH_O, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_5call(PyObject *__pyx_self, PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("call (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(__pyx_self, ((PyObject *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("call", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1147 -- * -- * def call(self): -- * self.lock.release() # <<<<<<<<<<<<<< -- * -- * def set(self, callback): -+ /* "(tree fragment)":13 -+ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[2]) - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1147, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); -- if (likely(__pyx_t_2)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); -- __Pyx_INCREF(__pyx_t_2); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_3, function); -- } - } -- __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1146 -- * self.lock.release() -- * -- * def call(self): # <<<<<<<<<<<<<< -- * self.lock.release() -- * -+ /* "(tree fragment)":11 -+ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): - */ - - /* function exit code */ -@@ -22190,43 +21795,45 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UN - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.call", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1149 -- * self.lock.release() -- * -- * def set(self, callback): # <<<<<<<<<<<<<< -- * self.callback = callback -- * -+/* "(tree fragment)":1 -+ * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set = {"set", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v_self = 0; -- PyObject *__pyx_v_callback = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event = {"__pyx_unpickle_Event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v___pyx_type = 0; -+ long __pyx_v___pyx_checksum; -+ PyObject *__pyx_v___pyx_state = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("set (wrapper)", 0); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_Event (wrapper)", 0); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_callback,0}; -- PyObject* values[2] = {0,0}; -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -+ PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -@@ -22237,207 +21844,378 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject * - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1149, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1149, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Event") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) - } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } -- __pyx_v_self = values[0]; -- __pyx_v_callback = values[1]; -+ __pyx_v___pyx_type = values[0]; -+ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -+ __pyx_v___pyx_state = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1149, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(__pyx_self, __pyx_v_self, __pyx_v_callback); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Event(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Event(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_v___pyx_PickleError = 0; -+ PyObject *__pyx_v___pyx_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -+ int __pyx_t_1; -+ PyObject *__pyx_t_2 = NULL; -+ PyObject *__pyx_t_3 = NULL; -+ PyObject *__pyx_t_4 = NULL; -+ PyObject *__pyx_t_5 = NULL; -+ int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("set", 0); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_Event", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1150 -- * -- * def set(self, callback): -- * self.callback = callback # <<<<<<<<<<<<<< -- * -- * def run(self): -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0xda38c25: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 1150, __pyx_L1_error) -+ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xda38c25) != 0); -+ if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1149 -- * self.lock.release() -- * -- * def set(self, callback): # <<<<<<<<<<<<<< -- * self.callback = callback -- * -+ /* "(tree fragment)":5 -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0xda38c25: -+ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -+ * __pyx_result = Event.__new__(__pyx_type) - */ -+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_n_s_PickleError); -+ __Pyx_GIVEREF(__pyx_n_s_PickleError); -+ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_2); -+ __pyx_v___pyx_PickleError = __pyx_t_2; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -+ /* "(tree fragment)":6 -+ * if __pyx_checksum != 0xda38c25: -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) # <<<<<<<<<<<<<< -+ * __pyx_result = Event.__new__(__pyx_type) -+ * if __pyx_state is not None: -+ */ -+ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xda, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_INCREF(__pyx_v___pyx_PickleError); -+ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_Raise(__pyx_t_3, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __PYX_ERR(1, 6, __pyx_L1_error) -+ -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0xda38c25: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -+ */ -+ } -+ -+ /* "(tree fragment)":7 -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -+ * __pyx_result = Event.__new__(__pyx_type) # <<<<<<<<<<<<<< -+ * if __pyx_state is not None: -+ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -+ */ -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } -+ } -+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v___pyx_result = __pyx_t_3; -+ __pyx_t_3 = 0; -+ -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -+ * __pyx_result = Event.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ */ -+ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -+ __pyx_t_6 = (__pyx_t_1 != 0); -+ if (__pyx_t_6) { -+ -+ /* "(tree fragment)":9 -+ * __pyx_result = Event.__new__(__pyx_type) -+ * if __pyx_state is not None: -+ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -+ * return __pyx_result -+ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -+ */ -+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -+ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -+ * __pyx_result = Event.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ */ -+ } -+ -+ /* "(tree fragment)":10 -+ * if __pyx_state is not None: -+ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result # <<<<<<<<<<<<<< -+ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v___pyx_result); -+ __pyx_r = __pyx_v___pyx_result; - goto __pyx_L0; -+ -+ /* "(tree fragment)":1 -+ * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ */ -+ -+ /* function exit code */ - __pyx_L1_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -+ __Pyx_XDECREF(__pyx_v___pyx_PickleError); -+ __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1152 -- * self.callback = callback -- * -- * def run(self): # <<<<<<<<<<<<<< -- * while not self.isshutdown: -- * self.lock.acquire(True) -+/* "(tree fragment)":11 -+ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): - */ - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run = {"run", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run, METH_O, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_9run(PyObject *__pyx_self, PyObject *__pyx_v_self) { -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("run (wrapper)", 0); -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(__pyx_self, ((PyObject *)__pyx_v_self)); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -+ enum mpv_event_id __pyx_t_3; -+ int __pyx_t_4; -+ Py_ssize_t __pyx_t_5; -+ int __pyx_t_6; -+ int __pyx_t_7; -+ PyObject *__pyx_t_8 = NULL; -+ PyObject *__pyx_t_9 = NULL; -+ PyObject *__pyx_t_10 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("run", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1153 -- * -- * def run(self): -- * while not self.isshutdown: # <<<<<<<<<<<<<< -- * self.lock.acquire(True) -- * self.mpv_callback(self.callback) if self.callback else None -- */ -- while (1) { -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1153, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_3 = ((!__pyx_t_2) != 0); -- if (!__pyx_t_3) break; -+ __Pyx_RefNannySetupContext("__pyx_unpickle_Event__set_state", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1154 -- * def run(self): -- * while not self.isshutdown: -- * self.lock.acquire(True) # <<<<<<<<<<<<<< -- * self.mpv_callback(self.callback) if self.callback else None -- * -+ /* "(tree fragment)":12 -+ * return __pyx_result -+ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] # <<<<<<<<<<<<<< -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[4]) - */ -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_acquire); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1154, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -- __Pyx_INCREF(__pyx_t_4); -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->data); -+ __Pyx_DECREF(__pyx_v___pyx_result->data); -+ __pyx_v___pyx_result->data = __pyx_t_1; -+ __pyx_t_1 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v___pyx_result->error = __pyx_t_2; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_v___pyx_result->id = __pyx_t_3; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_1); -+ __Pyx_GOTREF(__pyx_v___pyx_result->reply_userdata); -+ __Pyx_DECREF(__pyx_v___pyx_result->reply_userdata); -+ __pyx_v___pyx_result->reply_userdata = __pyx_t_1; -+ __pyx_t_1 = 0; -+ -+ /* "(tree fragment)":13 -+ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[4]) -+ */ -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -+ __PYX_ERR(1, 13, __pyx_L1_error) -+ } -+ __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -+ __pyx_t_6 = ((__pyx_t_5 > 4) != 0); -+ if (__pyx_t_6) { -+ } else { -+ __pyx_t_4 = __pyx_t_6; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -+ __pyx_t_7 = (__pyx_t_6 != 0); -+ __pyx_t_4 = __pyx_t_7; -+ __pyx_L4_bool_binop_done:; -+ if (__pyx_t_4) { -+ -+ /* "(tree fragment)":14 -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< -+ */ -+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_8); -+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_9); -+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 14, __pyx_L1_error) -+ } -+ __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_8); -+ __pyx_t_10 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { -+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); -+ if (likely(__pyx_t_10)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); -+ __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_5, function); -+ __Pyx_DECREF_SET(__pyx_t_9, function); - } - } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_5, Py_True); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error) -+ __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); -+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; -+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1155 -- * while not self.isshutdown: -- * self.lock.acquire(True) -- * self.mpv_callback(self.callback) if self.callback else None # <<<<<<<<<<<<<< -- * -- * def mpv_callback(self, callback): -+ /* "(tree fragment)":13 -+ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[4]) - */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1155, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (__pyx_t_3) { -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mpv_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1155, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1155, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { -- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); -- if (likely(__pyx_t_7)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); -- __Pyx_INCREF(__pyx_t_7); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_4, function); -- } -- } -- __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_1 = __pyx_t_5; -- __pyx_t_5 = 0; -- } else { -- __Pyx_INCREF(Py_None); -- __pyx_t_1 = Py_None; -- } -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1152 -- * self.callback = callback -- * -- * def run(self): # <<<<<<<<<<<<<< -- * while not self.isshutdown: -- * self.lock.acquire(True) -+ /* "(tree fragment)":11 -+ * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -+ * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): - */ - - /* function exit code */ -@@ -22445,45 +22223,45 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.run", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_XDECREF(__pyx_t_9); -+ __Pyx_XDECREF(__pyx_t_10); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1157 -- * self.mpv_callback(self.callback) if self.callback else None -- * -- * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -- * try: -- * callback() -+/* "(tree fragment)":1 -+ * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result - */ - - /* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback = {"mpv_callback", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- CYTHON_UNUSED PyObject *__pyx_v_self = 0; -- PyObject *__pyx_v_callback = 0; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -+static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo = {"__pyx_unpickle_RenderFrameInfo", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo, METH_VARARGS|METH_KEYWORDS, 0}; -+static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -+ PyObject *__pyx_v___pyx_type = 0; -+ long __pyx_v___pyx_checksum; -+ PyObject *__pyx_v___pyx_state = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("mpv_callback (wrapper)", 0); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo (wrapper)", 0); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_callback,0}; -- PyObject* values[2] = {0,0}; -+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -+ PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { -+ case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -+ CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -@@ -22494,6068 +22272,2370 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback( - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; -+ if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; -+ if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, 1); __PYX_ERR(0, 1157, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -+ else { -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mpv_callback") < 0)) __PYX_ERR(0, 1157, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_RenderFrameInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) - } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { -+ } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -+ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } -- __pyx_v_self = values[0]; -- __pyx_v_callback = values[1]; -+ __pyx_v___pyx_type = values[0]; -+ __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -+ __pyx_v___pyx_state = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1157, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(__pyx_self, __pyx_v_self, __pyx_v_callback); -+ __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_RenderFrameInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { -- PyObject *__pyx_v_e = NULL; -+static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_RenderFrameInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_v___pyx_PickleError = 0; -+ PyObject *__pyx_v___pyx_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -+ int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; -- PyObject *__pyx_t_6 = NULL; -- int __pyx_t_7; -- PyObject *__pyx_t_8 = NULL; -- PyObject *__pyx_t_9 = NULL; -- PyObject *__pyx_t_10 = NULL; -- PyObject *__pyx_t_11 = NULL; -+ int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("mpv_callback", 0); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1158 -- * -- * def mpv_callback(self, callback): -- * try: # <<<<<<<<<<<<<< -- * callback() -- * except Exception as e: -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) - */ -- { -- __Pyx_PyThreadState_declare -- __Pyx_PyThreadState_assign -- __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); -- __Pyx_XGOTREF(__pyx_t_1); -- __Pyx_XGOTREF(__pyx_t_2); -- __Pyx_XGOTREF(__pyx_t_3); -- /*try:*/ { -+ __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd41d8cd) != 0); -+ if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1159 -- * def mpv_callback(self, callback): -- * try: -- * callback() # <<<<<<<<<<<<<< -- * except Exception as e: -- * sys.stderr.write("pympv error during callback: %s\n" % e) -+ /* "(tree fragment)":5 -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0xd41d8cd: -+ * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -+ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) - */ -- __Pyx_INCREF(__pyx_v_callback); -- __pyx_t_5 = __pyx_v_callback; __pyx_t_6 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { -- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); -- if (likely(__pyx_t_6)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); -- __Pyx_INCREF(__pyx_t_6); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_5, function); -- } -- } -- __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1159, __pyx_L3_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_n_s_PickleError); -+ __Pyx_GIVEREF(__pyx_n_s_PickleError); -+ PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -+ __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_2); -+ __pyx_v___pyx_PickleError = __pyx_t_2; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1158 -- * -- * def mpv_callback(self, callback): -- * try: # <<<<<<<<<<<<<< -- * callback() -- * except Exception as e: -+ /* "(tree fragment)":6 -+ * if __pyx_checksum != 0xd41d8cd: -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) # <<<<<<<<<<<<<< -+ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) -+ * if __pyx_state is not None: - */ -+ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_INCREF(__pyx_v___pyx_PickleError); -+ __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_5)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_5); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); -+ } - } -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- goto __pyx_L8_try_end; -- __pyx_L3_error:; -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_Raise(__pyx_t_3, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ __PYX_ERR(1, 6, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1160 -- * try: -- * callback() -- * except Exception as e: # <<<<<<<<<<<<<< -- * sys.stderr.write("pympv error during callback: %s\n" % e) -- * -+ /* "(tree fragment)":4 -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) - */ -- __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -- if (__pyx_t_7) { -- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 1160, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_5); -- __pyx_v_e = __pyx_t_5; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":1161 -- * callback() -- * except Exception as e: -- * sys.stderr.write("pympv error during callback: %s\n" % e) # <<<<<<<<<<<<<< -- * -- * cdef void _c_callback(void* d) with gil: -+ /* "(tree fragment)":7 -+ * from pickle import PickleError as __pyx_PickleError -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -+ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) # <<<<<<<<<<<<<< -+ * if __pyx_state is not None: -+ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_9); -- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_stderr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_10); -- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_write); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_9); -- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -- __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_pympv_error_during_callback_s, __pyx_v_e); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_10); -- __pyx_t_11 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { -- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); -- if (likely(__pyx_t_11)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); -- __Pyx_INCREF(__pyx_t_11); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_9, function); -- } -- } -- __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); -- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -- __Pyx_GOTREF(__pyx_t_8); -- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- goto __pyx_L4_exception_handled; -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __pyx_t_4 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -+ if (likely(__pyx_t_4)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -+ __Pyx_INCREF(__pyx_t_4); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_2, function); - } -- goto __pyx_L5_except_error; -- __pyx_L5_except_error:; -+ } -+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_v___pyx_result = __pyx_t_3; -+ __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1158 -- * -- * def mpv_callback(self, callback): -- * try: # <<<<<<<<<<<<<< -- * callback() -- * except Exception as e: -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -+ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ */ -+ __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -+ __pyx_t_6 = (__pyx_t_1 != 0); -+ if (__pyx_t_6) { -+ -+ /* "(tree fragment)":9 -+ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) -+ * if __pyx_state is not None: -+ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -+ * return __pyx_result -+ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -+ */ -+ if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -+ __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_3); -+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+ -+ /* "(tree fragment)":8 -+ * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -+ * __pyx_result = RenderFrameInfo.__new__(__pyx_type) -+ * if __pyx_state is not None: # <<<<<<<<<<<<<< -+ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result - */ -- __Pyx_XGIVEREF(__pyx_t_1); -- __Pyx_XGIVEREF(__pyx_t_2); -- __Pyx_XGIVEREF(__pyx_t_3); -- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -- goto __pyx_L1_error; -- __pyx_L4_exception_handled:; -- __Pyx_XGIVEREF(__pyx_t_1); -- __Pyx_XGIVEREF(__pyx_t_2); -- __Pyx_XGIVEREF(__pyx_t_3); -- __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); -- __pyx_L8_try_end:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1157 -- * self.mpv_callback(self.callback) if self.callback else None -- * -- * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -- * try: -- * callback() -+ /* "(tree fragment)":10 -+ * if __pyx_state is not None: -+ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result # <<<<<<<<<<<<<< -+ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -+ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): -+ */ -+ __Pyx_XDECREF(__pyx_r); -+ __Pyx_INCREF(__pyx_v___pyx_result); -+ __pyx_r = __pyx_v___pyx_result; -+ goto __pyx_L0; -+ -+ /* "(tree fragment)":1 -+ * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result - */ - - /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; - __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_XDECREF(__pyx_t_9); -- __Pyx_XDECREF(__pyx_t_10); -- __Pyx_XDECREF(__pyx_t_11); -- __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_e); -+ __Pyx_XDECREF(__pyx_v___pyx_PickleError); -+ __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1163 -- * sys.stderr.write("pympv error during callback: %s\n" % e) -- * -- * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< -- * cdef uint64_t name = d -- * callback = _callbacks.get(name) -+/* "(tree fragment)":11 -+ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[0]) - */ - --static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { -- uint64_t __pyx_v_name; -- PyObject *__pyx_v_callback = NULL; -+static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { -+ PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -+ int __pyx_t_1; -+ Py_ssize_t __pyx_t_2; -+ int __pyx_t_3; -+ int __pyx_t_4; -+ PyObject *__pyx_t_5 = NULL; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; -- #ifdef WITH_THREAD -- PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); -- #endif -- __Pyx_RefNannySetupContext("_c_callback", 0); -+ __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo__set_state", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1164 -- * -- * cdef void _c_callback(void* d) with gil: -- * cdef uint64_t name = d # <<<<<<<<<<<<<< -- * callback = _callbacks.get(name) -- * callback.call() -+ /* "(tree fragment)":12 -+ * return __pyx_result -+ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -+ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[0]) - */ -- __pyx_v_name = ((uint64_t)__pyx_v_d); -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -+ __PYX_ERR(1, 12, __pyx_L1_error) -+ } -+ __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 12, __pyx_L1_error) -+ __pyx_t_3 = ((__pyx_t_2 > 0) != 0); -+ if (__pyx_t_3) { -+ } else { -+ __pyx_t_1 = __pyx_t_3; -+ goto __pyx_L4_bool_binop_done; -+ } -+ __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 12, __pyx_L1_error) -+ __pyx_t_4 = (__pyx_t_3 != 0); -+ __pyx_t_1 = __pyx_t_4; -+ __pyx_L4_bool_binop_done:; -+ if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1165 -- * cdef void _c_callback(void* d) with gil: -- * cdef uint64_t name = d -- * callback = _callbacks.get(name) # <<<<<<<<<<<<<< -- * callback.call() -+ /* "(tree fragment)":13 -+ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -+ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[0]) # <<<<<<<<<<<<<< - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1165, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1165, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 13, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(__pyx_v___pyx_state == Py_None)) { -+ PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -+ __PYX_ERR(1, 13, __pyx_L1_error) - } -- } -- __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v_callback = __pyx_t_1; -- __pyx_t_1 = 0; -+ __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_8 = NULL; -+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -+ if (likely(__pyx_t_8)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -+ __Pyx_INCREF(__pyx_t_8); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_7, function); -+ } -+ } -+ __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_5); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1166 -- * cdef uint64_t name = d -- * callback = _callbacks.get(name) -- * callback.call() # <<<<<<<<<<<<<< -+ /* "(tree fragment)":12 -+ * return __pyx_result -+ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -+ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -+ * __pyx_result.__dict__.update(__pyx_state[0]) - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_callback, __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1166, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_3)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_3); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } - } -- __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1163 -- * sys.stderr.write("pympv error during callback: %s\n" % e) -- * -- * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< -- * cdef uint64_t name = d -- * callback = _callbacks.get(name) -+ /* "(tree fragment)":11 -+ * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): -+ * __pyx_result.__dict__.update(__pyx_state[0]) - */ - - /* function exit code */ -+ __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_WriteUnraisable("vidcutter.libs.mpv._c_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); -+ __Pyx_XDECREF(__pyx_t_5); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ __Pyx_XDECREF(__pyx_t_8); -+ __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ __pyx_r = 0; - __pyx_L0:; -- __Pyx_XDECREF(__pyx_v_callback); -+ __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); -- #ifdef WITH_THREAD -- __Pyx_PyGILState_Release(__pyx_gilstate_save); -+ return __pyx_r; -+} -+static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; -+ -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p; -+ PyObject *o; -+ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -+ o = (*t->tp_alloc)(t, 0); -+ } else { -+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -+ } -+ if (unlikely(!o)) return 0; -+ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o); -+ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached; -+ p->reason = Py_None; Py_INCREF(Py_None); -+ p->error = Py_None; Py_INCREF(Py_None); -+ return o; -+} -+ -+static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; -+ #if CYTHON_USE_TP_FINALIZE -+ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -+ if (PyObject_CallFinalizerFromDealloc(o)) return; -+ } - #endif -+ PyObject_GC_UnTrack(o); -+ Py_CLEAR(p->reason); -+ Py_CLEAR(p->error); -+ (*Py_TYPE(o)->tp_free)(o); - } - --/* "(tree fragment)":1 -- * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -+static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o, visitproc v, void *a) { -+ int e; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; -+ if (p->reason) { -+ e = (*v)(p->reason, a); if (e) return e; -+ } -+ if (p->error) { -+ e = (*v)(p->error, a); if (e) return e; -+ } -+ return 0; -+} - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached = {"__pyx_unpickle_EndOfFileReached", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v___pyx_type = 0; -- long __pyx_v___pyx_checksum; -- PyObject *__pyx_v___pyx_state = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -- PyObject* values[3] = {0,0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_EndOfFileReached") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- } -- __pyx_v___pyx_type = values[0]; -- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_v___pyx_state = values[2]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_EndOfFileReached", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static int __pyx_tp_clear_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o) { -+ PyObject* tmp; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; -+ tmp = ((PyObject*)p->reason); -+ p->reason = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->error); -+ p->error = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ return 0; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_6__pyx_unpickle_EndOfFileReached(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_v___pyx_PickleError = 0; -- PyObject *__pyx_v___pyx_result = 0; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached", 0); -- -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0x56be9b6: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -- */ -- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x56be9b6) != 0); -- if (__pyx_t_1) { -- -- /* "(tree fragment)":5 -- * cdef object __pyx_result -- * if __pyx_checksum != 0x56be9b6: -- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -- * __pyx_result = EndOfFileReached.__new__(__pyx_type) -- */ -- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_n_s_PickleError); -- __Pyx_GIVEREF(__pyx_n_s_PickleError); -- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_2); -- __pyx_v___pyx_PickleError = __pyx_t_2; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- -- /* "(tree fragment)":6 -- * if __pyx_checksum != 0x56be9b6: -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) # <<<<<<<<<<<<<< -- * __pyx_result = EndOfFileReached.__new__(__pyx_type) -- * if __pyx_state is not None: -- */ -- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x56, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_INCREF(__pyx_v___pyx_PickleError); -- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_Raise(__pyx_t_3, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(1, 6, __pyx_L1_error) -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_1__get__(o); -+} - -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0x56be9b6: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -- */ -+static int __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_3__set__(o, v); - } -- -- /* "(tree fragment)":7 -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -- * __pyx_result = EndOfFileReached.__new__(__pyx_type) # <<<<<<<<<<<<<< -- * if __pyx_state is not None: -- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_5__del__(o); - } -- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v___pyx_result = __pyx_t_3; -- __pyx_t_3 = 0; -- -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -- * __pyx_result = EndOfFileReached.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -- __pyx_t_6 = (__pyx_t_1 != 0); -- if (__pyx_t_6) { -+} - -- /* "(tree fragment)":9 -- * __pyx_result = EndOfFileReached.__new__(__pyx_type) -- * if __pyx_state is not None: -- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -- * return __pyx_result -- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): -- */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_1__get__(o); -+} - -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x56be9b6 = (error, reason))" % __pyx_checksum) -- * __pyx_result = EndOfFileReached.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -+static int __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_3__set__(o, v); -+ } -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_5__del__(o); - } -- -- /* "(tree fragment)":10 -- * if __pyx_state is not None: -- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -- * return __pyx_result # <<<<<<<<<<<<<< -- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): -- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v___pyx_result); -- __pyx_r = __pyx_v___pyx_result; -- goto __pyx_L0; -- -- /* "(tree fragment)":1 -- * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -- -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v___pyx_PickleError); -- __Pyx_XDECREF(__pyx_v___pyx_result); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; - } - --/* "(tree fragment)":11 -- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- */ -+static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_EndOfFileReached[] = { -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_1__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_3__setstate_cython__, METH_O, 0}, -+ {0, 0, 0, 0} -+}; - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_EndOfFileReached__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- Py_ssize_t __pyx_t_3; -- int __pyx_t_4; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_EndOfFileReached__set_state", 0); -+static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_EndOfFileReached[] = { -+ {(char *)"reason", __pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason, __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason, (char *)0, 0}, -+ {(char *)"error", __pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error, __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error, (char *)0, 0}, -+ {0, 0, 0, 0, 0} -+}; - -- /* "(tree fragment)":12 -- * return __pyx_result -- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): -- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] # <<<<<<<<<<<<<< -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[2]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -- } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->error); -- __Pyx_DECREF(__pyx_v___pyx_result->error); -- __pyx_v___pyx_result->error = __pyx_t_1; -- __pyx_t_1 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -- } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->reason); -- __Pyx_DECREF(__pyx_v___pyx_result->reason); -- __pyx_v___pyx_result->reason = __pyx_t_1; -- __pyx_t_1 = 0; -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv.EndOfFileReached", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -+ "Data field for MPV_EVENT_END_FILE events\n\n Wraps: mpv_event_end_file\n ", /*tp_doc*/ -+ __pyx_tp_traverse_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_traverse*/ -+ __pyx_tp_clear_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ __pyx_methods_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_methods*/ -+ 0, /*tp_members*/ -+ __pyx_getsets_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ 0, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; -+static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): -- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[2]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -- __PYX_ERR(1, 13, __pyx_L1_error) -- } -- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_4 = ((__pyx_t_3 > 2) != 0); -- if (__pyx_t_4) { -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p; -+ PyObject *o; -+ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -+ o = (*t->tp_alloc)(t, 0); - } else { -- __pyx_t_2 = __pyx_t_4; -- goto __pyx_L4_bool_binop_done; -+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } -- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_5 = (__pyx_t_4 != 0); -- __pyx_t_2 = __pyx_t_5; -- __pyx_L4_bool_binop_done:; -- if (__pyx_t_2) { -+ if (unlikely(!o)) return 0; -+ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o); -+ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage; -+ p->prefix = Py_None; Py_INCREF(Py_None); -+ p->level = Py_None; Py_INCREF(Py_None); -+ p->text = Py_None; Py_INCREF(Py_None); -+ p->log_level = Py_None; Py_INCREF(Py_None); -+ return o; -+} - -- /* "(tree fragment)":14 -- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< -- */ -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 14, __pyx_L1_error) -- } -- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_7, function); -- } -- } -- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_LogMessage(PyObject *o) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; -+ #if CYTHON_USE_TP_FINALIZE -+ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -+ if (PyObject_CallFinalizerFromDealloc(o)) return; -+ } -+ #endif -+ PyObject_GC_UnTrack(o); -+ Py_CLEAR(p->prefix); -+ Py_CLEAR(p->level); -+ Py_CLEAR(p->text); -+ Py_CLEAR(p->log_level); -+ (*Py_TYPE(o)->tp_free)(o); -+} - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): -- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[2]) -- */ -+static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_LogMessage(PyObject *o, visitproc v, void *a) { -+ int e; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; -+ if (p->prefix) { -+ e = (*v)(p->prefix, a); if (e) return e; -+ } -+ if (p->level) { -+ e = (*v)(p->level, a); if (e) return e; -+ } -+ if (p->text) { -+ e = (*v)(p->text, a); if (e) return e; -+ } -+ if (p->log_level) { -+ e = (*v)(p->log_level, a); if (e) return e; - } -+ return 0; -+} - -- /* "(tree fragment)":11 -- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- */ -+static int __pyx_tp_clear_9vidcutter_4libs_3mpv_LogMessage(PyObject *o) { -+ PyObject* tmp; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; -+ tmp = ((PyObject*)p->prefix); -+ p->prefix = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->level); -+ p->level = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->text); -+ p->text = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->log_level); -+ p->log_level = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ return 0; -+} - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_EndOfFileReached__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_prefix(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(o); - } - --/* "(tree fragment)":1 -- * def __pyx_unpickle_InputDispatch(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -- --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch = {"__pyx_unpickle_InputDispatch", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v___pyx_type = 0; -- long __pyx_v___pyx_checksum; -- PyObject *__pyx_v___pyx_state = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__pyx_unpickle_InputDispatch (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -- PyObject* values[3] = {0,0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InputDispatch", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InputDispatch", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_InputDispatch") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- } -- __pyx_v___pyx_type = values[0]; -- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_v___pyx_state = values[2]; -+static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_prefix(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(o, v); -+ } -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(o); - } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InputDispatch", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_InputDispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_InputDispatch(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8__pyx_unpickle_InputDispatch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_v___pyx_PickleError = 0; -- PyObject *__pyx_v___pyx_result = 0; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_InputDispatch", 0); -- -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0xbf641a9: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) -- */ -- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xbf641a9) != 0); -- if (__pyx_t_1) { -- -- /* "(tree fragment)":5 -- * cdef object __pyx_result -- * if __pyx_checksum != 0xbf641a9: -- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) -- * __pyx_result = InputDispatch.__new__(__pyx_type) -- */ -- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_n_s_PickleError); -- __Pyx_GIVEREF(__pyx_n_s_PickleError); -- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_2); -- __pyx_v___pyx_PickleError = __pyx_t_2; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- -- /* "(tree fragment)":6 -- * if __pyx_checksum != 0xbf641a9: -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) # <<<<<<<<<<<<<< -- * __pyx_result = InputDispatch.__new__(__pyx_type) -- * if __pyx_state is not None: -- */ -- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xbf, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_INCREF(__pyx_v___pyx_PickleError); -- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_Raise(__pyx_t_3, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(1, 6, __pyx_L1_error) -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_level(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(o); -+} - -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0xbf641a9: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) -- */ -+static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_level(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(o, v); - } -- -- /* "(tree fragment)":7 -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) -- * __pyx_result = InputDispatch.__new__(__pyx_type) # <<<<<<<<<<<<<< -- * if __pyx_state is not None: -- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_InputDispatch), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(o); - } -- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v___pyx_result = __pyx_t_3; -- __pyx_t_3 = 0; -- -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) -- * __pyx_result = InputDispatch.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -- __pyx_t_6 = (__pyx_t_1 != 0); -- if (__pyx_t_6) { -+} - -- /* "(tree fragment)":9 -- * __pyx_result = InputDispatch.__new__(__pyx_type) -- * if __pyx_state is not None: -- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -- * return __pyx_result -- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): -- */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_InputDispatch__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_text(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(o); -+} - -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xbf641a9 = (arg0, type))" % __pyx_checksum) -- * __pyx_result = InputDispatch.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -+static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_text(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(o, v); - } -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(o); -+ } -+} - -- /* "(tree fragment)":10 -- * if __pyx_state is not None: -- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) -- * return __pyx_result # <<<<<<<<<<<<<< -- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): -- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v___pyx_result); -- __pyx_r = __pyx_v___pyx_result; -- goto __pyx_L0; -- -- /* "(tree fragment)":1 -- * def __pyx_unpickle_InputDispatch(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_log_level(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(o); -+} - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_InputDispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v___pyx_PickleError); -- __Pyx_XDECREF(__pyx_v___pyx_result); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_log_level(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(o, v); -+ } -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(o); -+ } - } - --/* "(tree fragment)":11 -- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- */ -+static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_LogMessage[] = { -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__, METH_O, 0}, -+ {0, 0, 0, 0} -+}; - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_InputDispatch__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- Py_ssize_t __pyx_t_3; -- int __pyx_t_4; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_InputDispatch__set_state", 0); -+static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_LogMessage[] = { -+ {(char *)"prefix", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_prefix, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_prefix, (char *)0, 0}, -+ {(char *)"level", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_level, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_level, (char *)0, 0}, -+ {(char *)"text", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_text, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_text, (char *)0, 0}, -+ {(char *)"log_level", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_log_level, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_log_level, (char *)0, 0}, -+ {0, 0, 0, 0, 0} -+}; - -- /* "(tree fragment)":12 -- * return __pyx_result -- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): -- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] # <<<<<<<<<<<<<< -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[2]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_LogMessage = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv.LogMessage", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_LogMessage, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -+ "Data field for MPV_EVENT_LOG_MESSAGE events.\n\n Wraps: mpv_event_log_message\n ", /*tp_doc*/ -+ __pyx_tp_traverse_9vidcutter_4libs_3mpv_LogMessage, /*tp_traverse*/ -+ __pyx_tp_clear_9vidcutter_4libs_3mpv_LogMessage, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ __pyx_methods_9vidcutter_4libs_3mpv_LogMessage, /*tp_methods*/ -+ 0, /*tp_members*/ -+ __pyx_getsets_9vidcutter_4libs_3mpv_LogMessage, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ 0, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; -+static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property __pyx_vtable_9vidcutter_4libs_3mpv_Property; -+ -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Property(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p; -+ PyObject *o; -+ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -+ o = (*t->tp_alloc)(t, 0); -+ } else { -+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->arg0); -- __Pyx_DECREF(__pyx_v___pyx_result->arg0); -- __pyx_v___pyx_result->arg0 = __pyx_t_1; -- __pyx_t_1 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -+ if (unlikely(!o)) return 0; -+ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o); -+ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Property; -+ p->name = Py_None; Py_INCREF(Py_None); -+ p->data = Py_None; Py_INCREF(Py_None); -+ return o; -+} -+ -+static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Property(PyObject *o) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; -+ #if CYTHON_USE_TP_FINALIZE -+ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -+ if (PyObject_CallFinalizerFromDealloc(o)) return; - } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->type); -- __Pyx_DECREF(__pyx_v___pyx_result->type); -- __pyx_v___pyx_result->type = __pyx_t_1; -- __pyx_t_1 = 0; -+ #endif -+ PyObject_GC_UnTrack(o); -+ Py_CLEAR(p->name); -+ Py_CLEAR(p->data); -+ (*Py_TYPE(o)->tp_free)(o); -+} - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): -- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[2]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -- __PYX_ERR(1, 13, __pyx_L1_error) -+static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Property(PyObject *o, visitproc v, void *a) { -+ int e; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; -+ if (p->name) { -+ e = (*v)(p->name, a); if (e) return e; - } -- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_4 = ((__pyx_t_3 > 2) != 0); -- if (__pyx_t_4) { -- } else { -- __pyx_t_2 = __pyx_t_4; -- goto __pyx_L4_bool_binop_done; -+ if (p->data) { -+ e = (*v)(p->data, a); if (e) return e; - } -- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_5 = (__pyx_t_4 != 0); -- __pyx_t_2 = __pyx_t_5; -- __pyx_L4_bool_binop_done:; -- if (__pyx_t_2) { -+ return 0; -+} - -- /* "(tree fragment)":14 -- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< -- */ -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 14, __pyx_L1_error) -- } -- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_7, function); -- } -- } -- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Property(PyObject *o) { -+ PyObject* tmp; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; -+ tmp = ((PyObject*)p->name); -+ p->name = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->data); -+ p->data = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ return 0; -+} - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): -- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[2]) -- */ -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_8Property_name(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(o); -+} -+ -+static int __pyx_setprop_9vidcutter_4libs_3mpv_8Property_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(o, v); -+ } -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(o); - } -+} - -- /* "(tree fragment)":11 -- * __pyx_unpickle_InputDispatch__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_InputDispatch__set_state(InputDispatch __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.arg0 = __pyx_state[0]; __pyx_result.type = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- */ -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_8Property_data(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(o); -+} - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_InputDispatch__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static int __pyx_setprop_9vidcutter_4libs_3mpv_8Property_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(o, v); -+ } -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(o); -+ } - } - --/* "(tree fragment)":1 -- * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -+static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Property[] = { -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__, METH_O, 0}, -+ {0, 0, 0, 0} -+}; - --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage = {"__pyx_unpickle_LogMessage", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v___pyx_type = 0; -- long __pyx_v___pyx_checksum; -- PyObject *__pyx_v___pyx_state = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -- PyObject* values[3] = {0,0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_LogMessage") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- } -- __pyx_v___pyx_type = values[0]; -- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_v___pyx_state = values[2]; -+static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Property[] = { -+ {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_8Property_name, __pyx_setprop_9vidcutter_4libs_3mpv_8Property_name, (char *)0, 0}, -+ {(char *)"data", __pyx_getprop_9vidcutter_4libs_3mpv_8Property_data, __pyx_setprop_9vidcutter_4libs_3mpv_8Property_data, (char *)0, 0}, -+ {0, 0, 0, 0, 0} -+}; -+ -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Property = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv.Property", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Property), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Property, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -+ "Data field for MPV_EVENT_PROPERTY_CHANGE and MPV_EVENT_GET_PROPERTY_REPLY.\n\n Wraps: mpv_event_property\n ", /*tp_doc*/ -+ __pyx_tp_traverse_9vidcutter_4libs_3mpv_Property, /*tp_traverse*/ -+ __pyx_tp_clear_9vidcutter_4libs_3mpv_Property, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ __pyx_methods_9vidcutter_4libs_3mpv_Property, /*tp_methods*/ -+ 0, /*tp_members*/ -+ __pyx_getsets_9vidcutter_4libs_3mpv_Property, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ 0, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv_Property, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; -+static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event __pyx_vtable_9vidcutter_4libs_3mpv_Event; -+ -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Event(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p; -+ PyObject *o; -+ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -+ o = (*t->tp_alloc)(t, 0); -+ } else { -+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_LogMessage", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_LogMessage(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); -+ if (unlikely(!o)) return 0; -+ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o); -+ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Event; -+ p->data = Py_None; Py_INCREF(Py_None); -+ p->reply_userdata = Py_None; Py_INCREF(Py_None); -+ return o; -+} - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Event(PyObject *o) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; -+ #if CYTHON_USE_TP_FINALIZE -+ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -+ if (PyObject_CallFinalizerFromDealloc(o)) return; -+ } -+ #endif -+ PyObject_GC_UnTrack(o); -+ Py_CLEAR(p->data); -+ Py_CLEAR(p->reply_userdata); -+ (*Py_TYPE(o)->tp_free)(o); - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10__pyx_unpickle_LogMessage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_v___pyx_PickleError = 0; -- PyObject *__pyx_v___pyx_result = 0; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage", 0); -+static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Event(PyObject *o, visitproc v, void *a) { -+ int e; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; -+ if (p->data) { -+ e = (*v)(p->data, a); if (e) return e; -+ } -+ if (p->reply_userdata) { -+ e = (*v)(p->reply_userdata, a); if (e) return e; -+ } -+ return 0; -+} - -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0x8774fae: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -- */ -- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x8774fae) != 0); -- if (__pyx_t_1) { -+static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Event(PyObject *o) { -+ PyObject* tmp; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; -+ tmp = ((PyObject*)p->data); -+ p->data = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->reply_userdata); -+ p->reply_userdata = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ return 0; -+} - -- /* "(tree fragment)":5 -- * cdef object __pyx_result -- * if __pyx_checksum != 0x8774fae: -- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -- * __pyx_result = LogMessage.__new__(__pyx_type) -- */ -- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_n_s_PickleError); -- __Pyx_GIVEREF(__pyx_n_s_PickleError); -- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_2); -- __pyx_v___pyx_PickleError = __pyx_t_2; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_error_str(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(o); -+} - -- /* "(tree fragment)":6 -- * if __pyx_checksum != 0x8774fae: -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) # <<<<<<<<<<<<<< -- * __pyx_result = LogMessage.__new__(__pyx_type) -- * if __pyx_state is not None: -- */ -- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x87, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_INCREF(__pyx_v___pyx_PickleError); -- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_Raise(__pyx_t_3, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(1, 6, __pyx_L1_error) -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_name(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(o); -+} - -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0x8774fae: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -- */ -- } -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_id(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(o); -+} - -- /* "(tree fragment)":7 -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -- * __pyx_result = LogMessage.__new__(__pyx_type) # <<<<<<<<<<<<<< -- * if __pyx_state is not None: -- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -+static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(o, v); - } -- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v___pyx_result = __pyx_t_3; -- __pyx_t_3 = 0; -- -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -- * __pyx_result = LogMessage.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -- __pyx_t_6 = (__pyx_t_1 != 0); -- if (__pyx_t_6) { -- -- /* "(tree fragment)":9 -- * __pyx_result = LogMessage.__new__(__pyx_type) -- * if __pyx_state is not None: -- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -- * return __pyx_result -- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): -- */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x8774fae = (level, log_level, prefix, text))" % __pyx_checksum) -- * __pyx_result = LogMessage.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -+ else { -+ PyErr_SetString(PyExc_NotImplementedError, "__del__"); -+ return -1; - } -- -- /* "(tree fragment)":10 -- * if __pyx_state is not None: -- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -- * return __pyx_result # <<<<<<<<<<<<<< -- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): -- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v___pyx_result); -- __pyx_r = __pyx_v___pyx_result; -- goto __pyx_L0; -- -- /* "(tree fragment)":1 -- * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -- -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v___pyx_PickleError); -- __Pyx_XDECREF(__pyx_v___pyx_result); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; - } - --/* "(tree fragment)":11 -- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -- */ -- --static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_LogMessage__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- Py_ssize_t __pyx_t_3; -- int __pyx_t_4; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_LogMessage__set_state", 0); -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_error(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(o); -+} - -- /* "(tree fragment)":12 -- * return __pyx_result -- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): -- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] # <<<<<<<<<<<<<< -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[4]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -+static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_error(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(o, v); - } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->level); -- __Pyx_DECREF(__pyx_v___pyx_result->level); -- __pyx_v___pyx_result->level = __pyx_t_1; -- __pyx_t_1 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -+ else { -+ PyErr_SetString(PyExc_NotImplementedError, "__del__"); -+ return -1; - } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->log_level); -- __Pyx_DECREF(__pyx_v___pyx_result->log_level); -- __pyx_v___pyx_result->log_level = __pyx_t_1; -- __pyx_t_1 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -+} -+ -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_data(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(o); -+} -+ -+static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(o, v); - } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->prefix); -- __Pyx_DECREF(__pyx_v___pyx_result->prefix); -- __pyx_v___pyx_result->prefix = __pyx_t_1; -- __pyx_t_1 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(o); - } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->text); -- __Pyx_DECREF(__pyx_v___pyx_result->text); -- __pyx_v___pyx_result->text = __pyx_t_1; -- __pyx_t_1 = 0; -+} - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): -- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[4]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -- __PYX_ERR(1, 13, __pyx_L1_error) -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_reply_userdata(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(o); -+} -+ -+static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_reply_userdata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -+ if (v) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(o, v); - } -- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_4 = ((__pyx_t_3 > 4) != 0); -- if (__pyx_t_4) { -- } else { -- __pyx_t_2 = __pyx_t_4; -- goto __pyx_L4_bool_binop_done; -+ else { -+ return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(o); - } -- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_5 = (__pyx_t_4 != 0); -- __pyx_t_2 = __pyx_t_5; -- __pyx_L4_bool_binop_done:; -- if (__pyx_t_2) { -+} - -- /* "(tree fragment)":14 -- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< -- */ -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 14, __pyx_L1_error) -- } -- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_7, function); -- } -- } -- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Event[] = { -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__, METH_O, 0}, -+ {0, 0, 0, 0} -+}; - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): -- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[4]) -- */ -- } -+static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Event[] = { -+ {(char *)"error_str", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_error_str, 0, (char *)"mpv_error_string of the error proeprty", 0}, -+ {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_name, 0, (char *)"mpv_event_name of the event id", 0}, -+ {(char *)"id", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_id, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_id, (char *)0, 0}, -+ {(char *)"error", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_error, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_error, (char *)0, 0}, -+ {(char *)"data", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_data, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_data, (char *)0, 0}, -+ {(char *)"reply_userdata", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_reply_userdata, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_reply_userdata, (char *)0, 0}, -+ {0, 0, 0, 0, 0} -+}; - -- /* "(tree fragment)":11 -- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -- */ -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Event = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv.Event", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Event), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Event, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -+ "Wraps: mpv_event", /*tp_doc*/ -+ __pyx_tp_traverse_9vidcutter_4libs_3mpv_Event, /*tp_traverse*/ -+ __pyx_tp_clear_9vidcutter_4libs_3mpv_Event, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ __pyx_methods_9vidcutter_4libs_3mpv_Event, /*tp_methods*/ -+ 0, /*tp_members*/ -+ __pyx_getsets_9vidcutter_4libs_3mpv_Event, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ 0, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv_Event, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; -+static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context __pyx_vtable_9vidcutter_4libs_3mpv_Context; - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_LogMessage__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Context(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p; -+ PyObject *o; -+ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -+ o = (*t->tp_alloc)(t, 0); -+ } else { -+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -+ } -+ if (unlikely(!o)) return 0; -+ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o); -+ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Context; -+ p->callback = Py_None; Py_INCREF(Py_None); -+ p->callbackthread = Py_None; Py_INCREF(Py_None); -+ p->reply_userdata = Py_None; Py_INCREF(Py_None); -+ if (unlikely(__pyx_pw_9vidcutter_4libs_3mpv_7Context_33__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; -+ return o; -+ bad: -+ Py_DECREF(o); o = 0; -+ return NULL; - } - --/* "(tree fragment)":1 -- * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -- --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property = {"__pyx_unpickle_Property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v___pyx_type = 0; -- long __pyx_v___pyx_checksum; -- PyObject *__pyx_v___pyx_state = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__pyx_unpickle_Property (wrapper)", 0); -+static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Context(PyObject *o) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; -+ #if CYTHON_USE_TP_FINALIZE -+ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -+ if (PyObject_CallFinalizerFromDealloc(o)) return; -+ } -+ #endif -+ PyObject_GC_UnTrack(o); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -- PyObject* values[3] = {0,0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Property") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- } -- __pyx_v___pyx_type = values[0]; -- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_v___pyx_state = values[2]; -+ PyObject *etype, *eval, *etb; -+ PyErr_Fetch(&etype, &eval, &etb); -+ __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); -+ __pyx_pw_9vidcutter_4libs_3mpv_7Context_41__dealloc__(o); -+ __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); -+ PyErr_Restore(etype, eval, etb); - } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Property", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Property(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); -+ Py_CLEAR(p->callback); -+ Py_CLEAR(p->callbackthread); -+ Py_CLEAR(p->reply_userdata); -+ (*Py_TYPE(o)->tp_free)(o); -+} - -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Context(PyObject *o, visitproc v, void *a) { -+ int e; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; -+ if (p->callback) { -+ e = (*v)(p->callback, a); if (e) return e; -+ } -+ if (p->callbackthread) { -+ e = (*v)(p->callbackthread, a); if (e) return e; -+ } -+ if (p->reply_userdata) { -+ e = (*v)(p->reply_userdata, a); if (e) return e; -+ } -+ return 0; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_12__pyx_unpickle_Property(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_v___pyx_PickleError = 0; -- PyObject *__pyx_v___pyx_result = 0; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_Property", 0); -- -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0x0572d11: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -- */ -- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x0572d11) != 0); -- if (__pyx_t_1) { -+static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Context(PyObject *o) { -+ PyObject* tmp; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; -+ tmp = ((PyObject*)p->callback); -+ p->callback = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->callbackthread); -+ p->callbackthread = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->reply_userdata); -+ p->reply_userdata = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ return 0; -+} - -- /* "(tree fragment)":5 -- * cdef object __pyx_result -- * if __pyx_checksum != 0x0572d11: -- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -- * __pyx_result = Property.__new__(__pyx_type) -- */ -- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_n_s_PickleError); -- __Pyx_GIVEREF(__pyx_n_s_PickleError); -- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_2); -- __pyx_v___pyx_PickleError = __pyx_t_2; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_api_version(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(o); -+} - -- /* "(tree fragment)":6 -- * if __pyx_checksum != 0x0572d11: -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) # <<<<<<<<<<<<<< -- * __pyx_result = Property.__new__(__pyx_type) -- * if __pyx_state is not None: -- */ -- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_INCREF(__pyx_v___pyx_PickleError); -- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_Raise(__pyx_t_3, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(1, 6, __pyx_L1_error) -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_name(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(o); -+} - -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0x0572d11: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -- */ -- } -+static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_time(PyObject *o, CYTHON_UNUSED void *x) { -+ return __pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(o); -+} - -- /* "(tree fragment)":7 -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -- * __pyx_result = Property.__new__(__pyx_type) # <<<<<<<<<<<<<< -- * if __pyx_state is not None: -- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v___pyx_result = __pyx_t_3; -- __pyx_t_3 = 0; -+static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Context[] = { -+ {"request_event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_request_event}, -+ {"set_log_level", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_3set_log_level, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_2set_log_level}, -+ {"load_config", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_5load_config, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_4load_config}, -+ {"_format_for", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_7_format_for, METH_O, 0}, -+ {"command", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_8command}, -+ {"get_property_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_10get_property_async}, -+ {"try_get_property_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_async, METH_VARARGS|METH_KEYWORDS, 0}, -+ {"try_get_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property, METH_VARARGS|METH_KEYWORDS, 0}, -+ {"get_property", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_17get_property, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_16get_property}, -+ {"set_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_18set_property}, -+ {"set_option", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_20set_option}, -+ {"initialize", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_23initialize, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_22initialize}, -+ {"wait_event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_24wait_event}, -+ {"wakeup", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_27wakeup, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_26wakeup}, -+ {"set_wakeup_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_29set_wakeup_callback, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback}, -+ {"get_wakeup_pipe", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_31get_wakeup_pipe, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe}, -+ {"observe_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_34observe_property}, -+ {"unobserve_property", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_37unobserve_property, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_36unobserve_property}, -+ {"shutdown", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_39shutdown, METH_NOARGS, 0}, -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_43__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_45__setstate_cython__, METH_O, 0}, -+ {0, 0, 0, 0} -+}; - -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -- * __pyx_result = Property.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -- __pyx_t_6 = (__pyx_t_1 != 0); -- if (__pyx_t_6) { -+static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Context[] = { -+ {(char *)"api_version", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_api_version, 0, (char *)0, 0}, -+ {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_name, 0, (char *)"Unique name for every context created.\n\n Wraps: mpv_client_name\n ", 0}, -+ {(char *)"time", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_time, 0, (char *)"Internal mpv client time.\n\n Has an arbitrary start offset, but will never wrap or go backwards.\n\n Wraps: mpv_get_time_us\n ", 0}, -+ {0, 0, 0, 0, 0} -+}; - -- /* "(tree fragment)":9 -- * __pyx_result = Property.__new__(__pyx_type) -- * if __pyx_state is not None: -- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -- * return __pyx_result -- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): -- */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Context = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv.Context", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Context), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Context, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -+ "Base class wrapping a context to interact with mpv.\n\n Assume all calls can raise MPVError.\n\n Wraps: mpv_create, mpv_destroy and all mpv_handle related calls\n ", /*tp_doc*/ -+ __pyx_tp_traverse_9vidcutter_4libs_3mpv_Context, /*tp_traverse*/ -+ __pyx_tp_clear_9vidcutter_4libs_3mpv_Context, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ __pyx_methods_9vidcutter_4libs_3mpv_Context, /*tp_methods*/ -+ 0, /*tp_members*/ -+ __pyx_getsets_9vidcutter_4libs_3mpv_Context, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ 0, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv_Context, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; -+static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; - -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0x0572d11 = (data, name))" % __pyx_checksum) -- * __pyx_result = Property.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p; -+ PyObject *o; -+ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -+ o = (*t->tp_alloc)(t, 0); -+ } else { -+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } -+ if (unlikely(!o)) return 0; -+ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o); -+ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams; -+ p->owned = Py_None; Py_INCREF(Py_None); -+ return o; -+} - -- /* "(tree fragment)":10 -- * if __pyx_state is not None: -- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -- * return __pyx_result # <<<<<<<<<<<<<< -- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): -- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v___pyx_result); -- __pyx_r = __pyx_v___pyx_result; -- goto __pyx_L0; -+static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv__RenderParams(PyObject *o) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; -+ #if CYTHON_USE_TP_FINALIZE -+ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -+ if (PyObject_CallFinalizerFromDealloc(o)) return; -+ } -+ #endif -+ PyObject_GC_UnTrack(o); -+ { -+ PyObject *etype, *eval, *etb; -+ PyErr_Fetch(&etype, &eval, &etb); -+ __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); -+ __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(o); -+ __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); -+ PyErr_Restore(etype, eval, etb); -+ } -+ Py_CLEAR(p->owned); -+ (*Py_TYPE(o)->tp_free)(o); -+} - -- /* "(tree fragment)":1 -- * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -+static int __pyx_tp_traverse_9vidcutter_4libs_3mpv__RenderParams(PyObject *o, visitproc v, void *a) { -+ int e; -+ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; -+ if (p->owned) { -+ e = (*v)(p->owned, a); if (e) return e; -+ } -+ return 0; -+} - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v___pyx_PickleError); -- __Pyx_XDECREF(__pyx_v___pyx_result); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static int __pyx_tp_clear_9vidcutter_4libs_3mpv__RenderParams(PyObject *o) { -+ PyObject* tmp; -+ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; -+ tmp = ((PyObject*)p->owned); -+ p->owned = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ return 0; - } - --/* "(tree fragment)":11 -- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- */ -+static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv__RenderParams[] = { -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__, METH_O, 0}, -+ {0, 0, 0, 0} -+}; - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Property__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- Py_ssize_t __pyx_t_3; -- int __pyx_t_4; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_Property__set_state", 0); -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv__RenderParams = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv._RenderParams", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv__RenderParams, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -+ 0, /*tp_doc*/ -+ __pyx_tp_traverse_9vidcutter_4libs_3mpv__RenderParams, /*tp_traverse*/ -+ __pyx_tp_clear_9vidcutter_4libs_3mpv__RenderParams, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ __pyx_methods_9vidcutter_4libs_3mpv__RenderParams, /*tp_methods*/ -+ 0, /*tp_members*/ -+ 0, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; -+static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; - -- /* "(tree fragment)":12 -- * return __pyx_result -- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): -- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] # <<<<<<<<<<<<<< -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[2]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -- } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->data); -- __Pyx_DECREF(__pyx_v___pyx_result->data); -- __pyx_v___pyx_result->data = __pyx_t_1; -- __pyx_t_1 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *p; -+ PyObject *o; -+ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -+ o = (*t->tp_alloc)(t, 0); -+ } else { -+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->name); -- __Pyx_DECREF(__pyx_v___pyx_result->name); -- __pyx_v___pyx_result->name = __pyx_t_1; -- __pyx_t_1 = 0; -+ if (unlikely(!o)) return 0; -+ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)o); -+ p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo; -+ return o; -+} - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): -- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[2]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -- __PYX_ERR(1, 13, __pyx_L1_error) -- } -- __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_4 = ((__pyx_t_3 > 2) != 0); -- if (__pyx_t_4) { -- } else { -- __pyx_t_2 = __pyx_t_4; -- goto __pyx_L4_bool_binop_done; -+static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderFrameInfo(PyObject *o) { -+ #if CYTHON_USE_TP_FINALIZE -+ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { -+ if (PyObject_CallFinalizerFromDealloc(o)) return; - } -- __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_5 = (__pyx_t_4 != 0); -- __pyx_t_2 = __pyx_t_5; -- __pyx_L4_bool_binop_done:; -- if (__pyx_t_2) { -+ #endif -+ (*Py_TYPE(o)->tp_free)(o); -+} - -- /* "(tree fragment)":14 -- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< -- */ -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 14, __pyx_L1_error) -- } -- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_7, function); -- } -- } -- __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_RenderFrameInfo[] = { -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__, METH_O, 0}, -+ {0, 0, 0, 0} -+}; - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): -- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[2]) -- */ -- } -- -- /* "(tree fragment)":11 -- * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -- */ -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv.RenderFrameInfo", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ -+ 0, /*tp_doc*/ -+ 0, /*tp_traverse*/ -+ 0, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ __pyx_methods_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_methods*/ -+ 0, /*tp_members*/ -+ 0, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ 0, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; - -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Property__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p; -+ PyObject *o; -+ if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -+ o = (*t->tp_alloc)(t, 0); -+ } else { -+ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -+ } -+ if (unlikely(!o)) return 0; -+ p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o); -+ p->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)Py_None); Py_INCREF(Py_None); -+ p->update_cb = Py_None; Py_INCREF(Py_None); -+ p->_x11_display = Py_None; Py_INCREF(Py_None); -+ p->_wl_display = Py_None; Py_INCREF(Py_None); -+ p->_get_proc_address = Py_None; Py_INCREF(Py_None); -+ return o; - } - --/* "(tree fragment)":1 -- * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -- --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event = {"__pyx_unpickle_Event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v___pyx_type = 0; -- long __pyx_v___pyx_checksum; -- PyObject *__pyx_v___pyx_state = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__pyx_unpickle_Event (wrapper)", 0); -+static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext(PyObject *o) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; -+ #if CYTHON_USE_TP_FINALIZE -+ if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -+ if (PyObject_CallFinalizerFromDealloc(o)) return; -+ } -+ #endif -+ PyObject_GC_UnTrack(o); - { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -- PyObject* values[3] = {0,0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Event") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- } -- __pyx_v___pyx_type = values[0]; -- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_v___pyx_state = values[2]; -+ PyObject *etype, *eval, *etb; -+ PyErr_Fetch(&etype, &eval, &etb); -+ __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); -+ __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(o); -+ __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); -+ PyErr_Restore(etype, eval, etb); - } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Event", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_Event(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+ Py_CLEAR(p->_mpv); -+ Py_CLEAR(p->update_cb); -+ Py_CLEAR(p->_x11_display); -+ Py_CLEAR(p->_wl_display); -+ Py_CLEAR(p->_get_proc_address); -+ (*Py_TYPE(o)->tp_free)(o); - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14__pyx_unpickle_Event(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_v___pyx_PickleError = 0; -- PyObject *__pyx_v___pyx_result = 0; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_Event", 0); -- -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0xda38c25: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -- */ -- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xda38c25) != 0); -- if (__pyx_t_1) { -+static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext(PyObject *o, visitproc v, void *a) { -+ int e; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; -+ if (p->_mpv) { -+ e = (*v)(((PyObject *)p->_mpv), a); if (e) return e; -+ } -+ if (p->update_cb) { -+ e = (*v)(p->update_cb, a); if (e) return e; -+ } -+ if (p->_x11_display) { -+ e = (*v)(p->_x11_display, a); if (e) return e; -+ } -+ if (p->_wl_display) { -+ e = (*v)(p->_wl_display, a); if (e) return e; -+ } -+ if (p->_get_proc_address) { -+ e = (*v)(p->_get_proc_address, a); if (e) return e; -+ } -+ return 0; -+} - -- /* "(tree fragment)":5 -- * cdef object __pyx_result -- * if __pyx_checksum != 0xda38c25: -- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -- * __pyx_result = Event.__new__(__pyx_type) -- */ -- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_n_s_PickleError); -- __Pyx_GIVEREF(__pyx_n_s_PickleError); -- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_2); -- __pyx_v___pyx_PickleError = __pyx_t_2; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- -- /* "(tree fragment)":6 -- * if __pyx_checksum != 0xda38c25: -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) # <<<<<<<<<<<<<< -- * __pyx_result = Event.__new__(__pyx_type) -- * if __pyx_state is not None: -- */ -- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xda, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_INCREF(__pyx_v___pyx_PickleError); -- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_Raise(__pyx_t_3, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(1, 6, __pyx_L1_error) -- -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0xda38c25: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -- */ -- } -- -- /* "(tree fragment)":7 -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -- * __pyx_result = Event.__new__(__pyx_type) # <<<<<<<<<<<<<< -- * if __pyx_state is not None: -- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v___pyx_result = __pyx_t_3; -- __pyx_t_3 = 0; -- -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -- * __pyx_result = Event.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -- __pyx_t_6 = (__pyx_t_1 != 0); -- if (__pyx_t_6) { -- -- /* "(tree fragment)":9 -- * __pyx_result = Event.__new__(__pyx_type) -- * if __pyx_state is not None: -- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -- * return __pyx_result -- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -- */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xda38c25 = (data, error, id, reply_userdata))" % __pyx_checksum) -- * __pyx_result = Event.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -- } -+static int __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext(PyObject *o) { -+ PyObject* tmp; -+ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; -+ tmp = ((PyObject*)p->_mpv); -+ p->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)Py_None); Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->update_cb); -+ p->update_cb = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->_x11_display); -+ p->_x11_display = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->_wl_display); -+ p->_wl_display = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ tmp = ((PyObject*)p->_get_proc_address); -+ p->_get_proc_address = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ return 0; -+} - -- /* "(tree fragment)":10 -- * if __pyx_state is not None: -- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -- * return __pyx_result # <<<<<<<<<<<<<< -- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v___pyx_result); -- __pyx_r = __pyx_v___pyx_result; -- goto __pyx_L0; -+static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_RenderContext[] = { -+ {"set_icc_profile", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile, METH_O, 0}, -+ {"set_ambient_light", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light, METH_O, 0}, -+ {"get_next_frame_info", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info, METH_NOARGS, 0}, -+ {"set_update_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback, METH_O, 0}, -+ {"update", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update, METH_NOARGS, 0}, -+ {"render", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render, METH_VARARGS|METH_KEYWORDS, 0}, -+ {"report_swap", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap, METH_NOARGS, 0}, -+ {"free", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free, METH_NOARGS, 0}, -+ {"close", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close, METH_NOARGS, 0}, -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__, METH_O, 0}, -+ {0, 0, 0, 0} -+}; - -- /* "(tree fragment)":1 -- * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_RenderContext = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv.RenderContext", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -+ 0, /*tp_doc*/ -+ __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext, /*tp_traverse*/ -+ __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ __pyx_methods_9vidcutter_4libs_3mpv_RenderContext, /*tp_methods*/ -+ 0, /*tp_members*/ -+ 0, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; - -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v___pyx_PickleError); -- __Pyx_XDECREF(__pyx_v___pyx_result); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext(PyTypeObject *t, PyObject *a, PyObject *k) { -+ PyObject *o = __pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(t, a, k); -+ if (unlikely(!o)) return 0; -+ return o; - } - --/* "(tree fragment)":11 -- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -- */ -+static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_OpenGLRenderContext[] = { -+ {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__, METH_NOARGS, 0}, -+ {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__, METH_O, 0}, -+ {0, 0, 0, 0} -+}; - --static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_Event__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- PyObject *__pyx_t_1 = NULL; -- int __pyx_t_2; -- enum mpv_event_id __pyx_t_3; -- int __pyx_t_4; -- Py_ssize_t __pyx_t_5; -- int __pyx_t_6; -- int __pyx_t_7; -- PyObject *__pyx_t_8 = NULL; -- PyObject *__pyx_t_9 = NULL; -- PyObject *__pyx_t_10 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_Event__set_state", 0); -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv.OpenGLRenderContext", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -+ 0, /*tp_doc*/ -+ __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext, /*tp_traverse*/ -+ __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ __pyx_methods_9vidcutter_4libs_3mpv_OpenGLRenderContext, /*tp_methods*/ -+ 0, /*tp_members*/ -+ 0, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; - -- /* "(tree fragment)":12 -- * return __pyx_result -- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] # <<<<<<<<<<<<<< -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[4]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -- } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->data); -- __Pyx_DECREF(__pyx_v___pyx_result->data); -- __pyx_v___pyx_result->data = __pyx_t_1; -- __pyx_t_1 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -- } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v___pyx_result->error = __pyx_t_2; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -- } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_v___pyx_result->id = __pyx_t_3; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 12, __pyx_L1_error) -- } -- __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_1); -- __Pyx_GOTREF(__pyx_v___pyx_result->reply_userdata); -- __Pyx_DECREF(__pyx_v___pyx_result->reply_userdata); -- __pyx_v___pyx_result->reply_userdata = __pyx_t_1; -- __pyx_t_1 = 0; -+static struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[8]; -+static int __pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = 0; - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[4]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -- __PYX_ERR(1, 13, __pyx_L1_error) -- } -- __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_6 = ((__pyx_t_5 > 4) != 0); -- if (__pyx_t_6) { -+static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -+ PyObject *o; -+ if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)))) { -+ o = (PyObject*)__pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[--__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors]; -+ memset(o, 0, sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)); -+ (void) PyObject_INIT(o, t); -+ PyObject_GC_Track(o); - } else { -- __pyx_t_4 = __pyx_t_6; -- goto __pyx_L4_bool_binop_done; -+ o = (*t->tp_alloc)(t, 0); -+ if (unlikely(!o)) return 0; - } -- __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) -- __pyx_t_7 = (__pyx_t_6 != 0); -- __pyx_t_4 = __pyx_t_7; -- __pyx_L4_bool_binop_done:; -- if (__pyx_t_4) { -- -- /* "(tree fragment)":14 -- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[4]) # <<<<<<<<<<<<<< -- */ -- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_8); -- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_9); -- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 14, __pyx_L1_error) -- } -- __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_8); -- __pyx_t_10 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { -- __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); -- if (likely(__pyx_t_10)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); -- __Pyx_INCREF(__pyx_t_10); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_9, function); -- } -- } -- __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); -- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; -- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ return o; -+} - -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): -- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[4]) -- */ -+static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o) { -+ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; -+ PyObject_GC_UnTrack(o); -+ Py_CLEAR(p->__pyx_v_fn); -+ if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)))) { -+ __pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors++] = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o); -+ } else { -+ (*Py_TYPE(o)->tp_free)(o); - } -+} - -- /* "(tree fragment)":11 -- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -- */ -- -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_XDECREF(__pyx_t_9); -- __Pyx_XDECREF(__pyx_t_10); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_Event__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static int __pyx_tp_traverse_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o, visitproc v, void *a) { -+ int e; -+ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; -+ if (p->__pyx_v_fn) { -+ e = (*v)(p->__pyx_v_fn, a); if (e) return e; -+ } -+ return 0; - } - --/* "(tree fragment)":1 -- * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -- --/* Python wrapper */ --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ --static PyMethodDef __pyx_mdef_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo = {"__pyx_unpickle_RenderFrameInfo", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo, METH_VARARGS|METH_KEYWORDS, 0}; --static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { -- PyObject *__pyx_v___pyx_type = 0; -- long __pyx_v___pyx_checksum; -- PyObject *__pyx_v___pyx_state = 0; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- PyObject *__pyx_r = 0; -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo (wrapper)", 0); -- { -- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; -- PyObject* values[3] = {0,0,0}; -- if (unlikely(__pyx_kwds)) { -- Py_ssize_t kw_args; -- const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); -- switch (pos_args) { -- case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- CYTHON_FALLTHROUGH; -- case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- CYTHON_FALLTHROUGH; -- case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- CYTHON_FALLTHROUGH; -- case 0: break; -- default: goto __pyx_L5_argtuple_error; -- } -- kw_args = PyDict_Size(__pyx_kwds); -- switch (pos_args) { -- case 0: -- if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; -- else goto __pyx_L5_argtuple_error; -- CYTHON_FALLTHROUGH; -- case 1: -- if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; -- else { -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } -- if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_RenderFrameInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) -- } -- } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { -- goto __pyx_L5_argtuple_error; -- } else { -- values[0] = PyTuple_GET_ITEM(__pyx_args, 0); -- values[1] = PyTuple_GET_ITEM(__pyx_args, 1); -- values[2] = PyTuple_GET_ITEM(__pyx_args, 2); -- } -- __pyx_v___pyx_type = values[0]; -- __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_v___pyx_state = values[2]; -- } -- goto __pyx_L4_argument_unpacking_done; -- __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RenderFrameInfo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) -- __pyx_L3_error:; -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __Pyx_RefNannyFinishContext(); -- return NULL; -- __pyx_L4_argument_unpacking_done:; -- __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_16__pyx_unpickle_RenderFrameInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); -- -- /* function exit code */ -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; -+static int __pyx_tp_clear_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o) { -+ PyObject* tmp; -+ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; -+ tmp = ((PyObject*)p->__pyx_v_fn); -+ p->__pyx_v_fn = Py_None; Py_INCREF(Py_None); -+ Py_XDECREF(tmp); -+ return 0; - } - --static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16__pyx_unpickle_RenderFrameInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_v___pyx_PickleError = 0; -- PyObject *__pyx_v___pyx_result = 0; -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- PyObject *__pyx_t_2 = NULL; -- PyObject *__pyx_t_3 = NULL; -- PyObject *__pyx_t_4 = NULL; -- PyObject *__pyx_t_5 = NULL; -- int __pyx_t_6; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo", 0); -- -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -- */ -- __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd41d8cd) != 0); -- if (__pyx_t_1) { -- -- /* "(tree fragment)":5 -- * cdef object __pyx_result -- * if __pyx_checksum != 0xd41d8cd: -- * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) -- */ -- __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_n_s_PickleError); -- __Pyx_GIVEREF(__pyx_n_s_PickleError); -- PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); -- __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_2); -- __pyx_v___pyx_PickleError = __pyx_t_2; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -+static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "vidcutter.libs.mpv.__pyx_scope_struct___errors", /*tp_name*/ -+ sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ -+ __pyx_tp_dealloc_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_dealloc*/ -+ #if PY_VERSION_HEX < 0x030800b4 -+ 0, /*tp_print*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 -+ 0, /*tp_vectorcall_offset*/ -+ #endif -+ 0, /*tp_getattr*/ -+ 0, /*tp_setattr*/ -+ #if PY_MAJOR_VERSION < 3 -+ 0, /*tp_compare*/ -+ #endif -+ #if PY_MAJOR_VERSION >= 3 -+ 0, /*tp_as_async*/ -+ #endif -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ 0, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ -+ 0, /*tp_call*/ -+ 0, /*tp_str*/ -+ 0, /*tp_getattro*/ -+ 0, /*tp_setattro*/ -+ 0, /*tp_as_buffer*/ -+ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -+ 0, /*tp_doc*/ -+ __pyx_tp_traverse_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_traverse*/ -+ __pyx_tp_clear_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_clear*/ -+ 0, /*tp_richcompare*/ -+ 0, /*tp_weaklistoffset*/ -+ 0, /*tp_iter*/ -+ 0, /*tp_iternext*/ -+ 0, /*tp_methods*/ -+ 0, /*tp_members*/ -+ 0, /*tp_getset*/ -+ 0, /*tp_base*/ -+ 0, /*tp_dict*/ -+ 0, /*tp_descr_get*/ -+ 0, /*tp_descr_set*/ -+ 0, /*tp_dictoffset*/ -+ 0, /*tp_init*/ -+ 0, /*tp_alloc*/ -+ __pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_new*/ -+ 0, /*tp_free*/ -+ 0, /*tp_is_gc*/ -+ 0, /*tp_bases*/ -+ 0, /*tp_mro*/ -+ 0, /*tp_cache*/ -+ 0, /*tp_subclasses*/ -+ 0, /*tp_weaklist*/ -+ 0, /*tp_del*/ -+ 0, /*tp_version_tag*/ -+ #if PY_VERSION_HEX >= 0x030400a1 -+ 0, /*tp_finalize*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, /*tp_vectorcall*/ -+ #endif -+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, /*tp_print*/ -+ #endif -+ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, /*tp_pypy_flags*/ -+ #endif -+}; - -- /* "(tree fragment)":6 -- * if __pyx_checksum != 0xd41d8cd: -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) # <<<<<<<<<<<<<< -- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) -- * if __pyx_state is not None: -- */ -- __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_INCREF(__pyx_v___pyx_PickleError); -- __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_5)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_5); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_Raise(__pyx_t_3, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(1, 6, __pyx_L1_error) -+static PyMethodDef __pyx_methods[] = { -+ {0, 0, 0, 0} -+}; - -- /* "(tree fragment)":4 -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -- */ -- } -+#if PY_MAJOR_VERSION >= 3 -+#if CYTHON_PEP489_MULTI_PHASE_INIT -+static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -+static int __pyx_pymod_exec_mpv(PyObject* module); /*proto*/ -+static PyModuleDef_Slot __pyx_moduledef_slots[] = { -+ {Py_mod_create, (void*)__pyx_pymod_create}, -+ {Py_mod_exec, (void*)__pyx_pymod_exec_mpv}, -+ {0, NULL} -+}; -+#endif - -- /* "(tree fragment)":7 -- * from pickle import PickleError as __pyx_PickleError -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) # <<<<<<<<<<<<<< -- * if __pyx_state is not None: -- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -- */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); -- if (likely(__pyx_t_4)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); -- __Pyx_INCREF(__pyx_t_4); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_2, function); -- } -- } -- __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); -- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_v___pyx_result = __pyx_t_3; -- __pyx_t_3 = 0; -- -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -- __pyx_t_1 = (__pyx_v___pyx_state != Py_None); -- __pyx_t_6 = (__pyx_t_1 != 0); -- if (__pyx_t_6) { -- -- /* "(tree fragment)":9 -- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) -- * if __pyx_state is not None: -- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< -- * return __pyx_result -- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -- */ -- if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) -- __pyx_t_3 = __pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_3); -- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- -- /* "(tree fragment)":8 -- * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) -- * __pyx_result = RenderFrameInfo.__new__(__pyx_type) -- * if __pyx_state is not None: # <<<<<<<<<<<<<< -- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- */ -- } -- -- /* "(tree fragment)":10 -- * if __pyx_state is not None: -- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -- * return __pyx_result # <<<<<<<<<<<<<< -- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): -- */ -- __Pyx_XDECREF(__pyx_r); -- __Pyx_INCREF(__pyx_v___pyx_result); -- __pyx_r = __pyx_v___pyx_result; -- goto __pyx_L0; -- -- /* "(tree fragment)":1 -- * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -- -- /* function exit code */ -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_3); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = NULL; -- __pyx_L0:; -- __Pyx_XDECREF(__pyx_v___pyx_PickleError); -- __Pyx_XDECREF(__pyx_v___pyx_result); -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} -- --/* "(tree fragment)":11 -- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[0]) -- */ -- --static PyObject *__pyx_f_9vidcutter_4libs_3mpv___pyx_unpickle_RenderFrameInfo__set_state(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { -- PyObject *__pyx_r = NULL; -- __Pyx_RefNannyDeclarations -- int __pyx_t_1; -- Py_ssize_t __pyx_t_2; -- int __pyx_t_3; -- int __pyx_t_4; -- PyObject *__pyx_t_5 = NULL; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- PyObject *__pyx_t_8 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__pyx_unpickle_RenderFrameInfo__set_state", 0); -- -- /* "(tree fragment)":12 -- * return __pyx_result -- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[0]) -- */ -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); -- __PYX_ERR(1, 12, __pyx_L1_error) -- } -- __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 12, __pyx_L1_error) -- __pyx_t_3 = ((__pyx_t_2 > 0) != 0); -- if (__pyx_t_3) { -- } else { -- __pyx_t_1 = __pyx_t_3; -- goto __pyx_L4_bool_binop_done; -- } -- __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 12, __pyx_L1_error) -- __pyx_t_4 = (__pyx_t_3 != 0); -- __pyx_t_1 = __pyx_t_4; -- __pyx_L4_bool_binop_done:; -- if (__pyx_t_1) { -- -- /* "(tree fragment)":13 -- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[0]) # <<<<<<<<<<<<<< -- */ -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(__pyx_v___pyx_state == Py_None)) { -- PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); -- __PYX_ERR(1, 13, __pyx_L1_error) -- } -- __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_8 = NULL; -- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); -- if (likely(__pyx_t_8)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); -- __Pyx_INCREF(__pyx_t_8); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_7, function); -- } -- } -- __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); -- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_5); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -- -- /* "(tree fragment)":12 -- * return __pyx_result -- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): -- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< -- * __pyx_result.__dict__.update(__pyx_state[0]) -- */ -- } -- -- /* "(tree fragment)":11 -- * __pyx_unpickle_RenderFrameInfo__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_RenderFrameInfo__set_state(RenderFrameInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): -- * __pyx_result.__dict__.update(__pyx_state[0]) -- */ -- -- /* function exit code */ -- __pyx_r = Py_None; __Pyx_INCREF(Py_None); -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_5); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- __Pyx_XDECREF(__pyx_t_8); -- __Pyx_AddTraceback("vidcutter.libs.mpv.__pyx_unpickle_RenderFrameInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); -- __pyx_r = 0; -- __pyx_L0:; -- __Pyx_XGIVEREF(__pyx_r); -- __Pyx_RefNannyFinishContext(); -- return __pyx_r; --} --static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o); -- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached; -- p->reason = Py_None; Py_INCREF(Py_None); -- p->error = Py_None; Py_INCREF(Py_None); -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -+static struct PyModuleDef __pyx_moduledef = { -+ PyModuleDef_HEAD_INIT, -+ "mpv", -+ __pyx_k_pympv_Python_wrapper_for_libmpv, /* m_doc */ -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ 0, /* m_size */ -+ #else -+ -1, /* m_size */ - #endif -- PyObject_GC_UnTrack(o); -- Py_CLEAR(p->reason); -- Py_CLEAR(p->error); -- (*Py_TYPE(o)->tp_free)(o); --} -+ __pyx_methods /* m_methods */, -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ __pyx_moduledef_slots, /* m_slots */ -+ #else -+ NULL, /* m_reload */ -+ #endif -+ NULL, /* m_traverse */ -+ NULL, /* m_clear */ -+ NULL /* m_free */ -+}; -+#endif -+#ifndef CYTHON_SMALL_CODE -+#if defined(__clang__) -+ #define CYTHON_SMALL_CODE -+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) -+ #define CYTHON_SMALL_CODE __attribute__((cold)) -+#else -+ #define CYTHON_SMALL_CODE -+#endif -+#endif - --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; -- if (p->reason) { -- e = (*v)(p->reason, a); if (e) return e; -- } -- if (p->error) { -- e = (*v)(p->error, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv_EndOfFileReached(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)o; -- tmp = ((PyObject*)p->reason); -- p->reason = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->error); -- p->error = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_6reason_5__del__(o); -- } --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_5error_5__del__(o); -- } --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_EndOfFileReached[] = { -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_1__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_16EndOfFileReached_3__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_EndOfFileReached[] = { -- {(char *)"reason", __pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason, __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_reason, (char *)0, 0}, -- {(char *)"error", __pyx_getprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error, __pyx_setprop_9vidcutter_4libs_3mpv_16EndOfFileReached_error, (char *)0, 0}, -- {0, 0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.EndOfFileReached", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- "Data field for MPV_EVENT_END_FILE events\n\n Wraps: mpv_event_end_file\n ", /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_methods*/ -- 0, /*tp_members*/ -- __pyx_getsets_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- 0, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_EndOfFileReached, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; --static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_InputDispatch __pyx_vtable_9vidcutter_4libs_3mpv_InputDispatch; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_InputDispatch(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)o); -- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_InputDispatch; -- p->arg0 = Py_None; Py_INCREF(Py_None); -- p->type = Py_None; Py_INCREF(Py_None); -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_InputDispatch(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)o; -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -- #endif -- PyObject_GC_UnTrack(o); -- Py_CLEAR(p->arg0); -- Py_CLEAR(p->type); -- (*Py_TYPE(o)->tp_free)(o); --} -- --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_InputDispatch(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)o; -- if (p->arg0) { -- e = (*v)(p->arg0, a); if (e) return e; -- } -- if (p->type) { -- e = (*v)(p->type, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv_InputDispatch(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *)o; -- tmp = ((PyObject*)p->arg0); -- p->arg0 = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->type); -- p->type = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_13InputDispatch_arg0(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_13InputDispatch_arg0(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4arg0_5__del__(o); -- } --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_13InputDispatch_type(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_13InputDispatch_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_4type_5__del__(o); -- } --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_InputDispatch[] = { -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_1__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13InputDispatch_3__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_InputDispatch[] = { -- {(char *)"arg0", __pyx_getprop_9vidcutter_4libs_3mpv_13InputDispatch_arg0, __pyx_setprop_9vidcutter_4libs_3mpv_13InputDispatch_arg0, (char *)0, 0}, -- {(char *)"type", __pyx_getprop_9vidcutter_4libs_3mpv_13InputDispatch_type, __pyx_setprop_9vidcutter_4libs_3mpv_13InputDispatch_type, (char *)0, 0}, -- {0, 0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_InputDispatch = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.InputDispatch", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_InputDispatch, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- "Data field for MPV_EVENT_SCRIPT_INPUT_DISPATCH events.\n\n Wraps: mpv_event_script_input_dispatch\n ", /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv_InputDispatch, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv_InputDispatch, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_InputDispatch, /*tp_methods*/ -- 0, /*tp_members*/ -- __pyx_getsets_9vidcutter_4libs_3mpv_InputDispatch, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- 0, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_InputDispatch, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; --static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o); -- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage; -- p->prefix = Py_None; Py_INCREF(Py_None); -- p->level = Py_None; Py_INCREF(Py_None); -- p->text = Py_None; Py_INCREF(Py_None); -- p->log_level = Py_None; Py_INCREF(Py_None); -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_LogMessage(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -- #endif -- PyObject_GC_UnTrack(o); -- Py_CLEAR(p->prefix); -- Py_CLEAR(p->level); -- Py_CLEAR(p->text); -- Py_CLEAR(p->log_level); -- (*Py_TYPE(o)->tp_free)(o); --} -- --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_LogMessage(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; -- if (p->prefix) { -- e = (*v)(p->prefix, a); if (e) return e; -- } -- if (p->level) { -- e = (*v)(p->level, a); if (e) return e; -- } -- if (p->text) { -- e = (*v)(p->text, a); if (e) return e; -- } -- if (p->log_level) { -- e = (*v)(p->log_level, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv_LogMessage(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)o; -- tmp = ((PyObject*)p->prefix); -- p->prefix = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->level); -- p->level = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->text); -- p->text = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->log_level); -- p->log_level = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_prefix(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_prefix(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_6prefix_5__del__(o); -- } --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_level(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_level(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_5level_5__del__(o); -- } --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_text(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_text(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_4text_5__del__(o); -- } --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_log_level(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_log_level(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_9log_level_5__del__(o); -- } --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_LogMessage[] = { -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_1__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_10LogMessage_3__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_LogMessage[] = { -- {(char *)"prefix", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_prefix, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_prefix, (char *)0, 0}, -- {(char *)"level", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_level, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_level, (char *)0, 0}, -- {(char *)"text", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_text, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_text, (char *)0, 0}, -- {(char *)"log_level", __pyx_getprop_9vidcutter_4libs_3mpv_10LogMessage_log_level, __pyx_setprop_9vidcutter_4libs_3mpv_10LogMessage_log_level, (char *)0, 0}, -- {0, 0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_LogMessage = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.LogMessage", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_LogMessage, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- "Data field for MPV_EVENT_LOG_MESSAGE events.\n\n Wraps: mpv_event_log_message\n ", /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv_LogMessage, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv_LogMessage, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_LogMessage, /*tp_methods*/ -- 0, /*tp_members*/ -- __pyx_getsets_9vidcutter_4libs_3mpv_LogMessage, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- 0, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_LogMessage, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; --static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property __pyx_vtable_9vidcutter_4libs_3mpv_Property; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Property(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o); -- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Property; -- p->name = Py_None; Py_INCREF(Py_None); -- p->data = Py_None; Py_INCREF(Py_None); -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Property(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -- #endif -- PyObject_GC_UnTrack(o); -- Py_CLEAR(p->name); -- Py_CLEAR(p->data); -- (*Py_TYPE(o)->tp_free)(o); --} -- --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Property(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; -- if (p->name) { -- e = (*v)(p->name, a); if (e) return e; -- } -- if (p->data) { -- e = (*v)(p->data, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Property(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv_Property *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)o; -- tmp = ((PyObject*)p->name); -- p->name = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->data); -- p->data = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_8Property_name(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_8Property_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4name_5__del__(o); -- } --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_8Property_data(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_8Property_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_8Property_4data_5__del__(o); -- } --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Property[] = { -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_8Property_1__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_8Property_3__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Property[] = { -- {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_8Property_name, __pyx_setprop_9vidcutter_4libs_3mpv_8Property_name, (char *)0, 0}, -- {(char *)"data", __pyx_getprop_9vidcutter_4libs_3mpv_8Property_data, __pyx_setprop_9vidcutter_4libs_3mpv_8Property_data, (char *)0, 0}, -- {0, 0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Property = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.Property", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Property), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Property, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- "Data field for MPV_EVENT_PROPERTY_CHANGE and MPV_EVENT_GET_PROPERTY_REPLY.\n\n Wraps: mpv_event_property\n ", /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv_Property, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv_Property, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_Property, /*tp_methods*/ -- 0, /*tp_members*/ -- __pyx_getsets_9vidcutter_4libs_3mpv_Property, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- 0, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_Property, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; --static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event __pyx_vtable_9vidcutter_4libs_3mpv_Event; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Event(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o); -- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Event; -- p->data = Py_None; Py_INCREF(Py_None); -- p->reply_userdata = Py_None; Py_INCREF(Py_None); -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Event(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -- #endif -- PyObject_GC_UnTrack(o); -- Py_CLEAR(p->data); -- Py_CLEAR(p->reply_userdata); -- (*Py_TYPE(o)->tp_free)(o); --} -- --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Event(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; -- if (p->data) { -- e = (*v)(p->data, a); if (e) return e; -- } -- if (p->reply_userdata) { -- e = (*v)(p->reply_userdata, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Event(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv_Event *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)o; -- tmp = ((PyObject*)p->data); -- p->data = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->reply_userdata); -- p->reply_userdata = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_error_str(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_9error_str_1__get__(o); --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_name(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4name_1__get__(o); --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_id(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_2id_3__set__(o, v); -- } -- else { -- PyErr_SetString(PyExc_NotImplementedError, "__del__"); -- return -1; -- } --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_error(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_error(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_5error_3__set__(o, v); -- } -- else { -- PyErr_SetString(PyExc_NotImplementedError, "__del__"); -- return -1; -- } --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_data(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_4data_5__del__(o); -- } --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_5Event_reply_userdata(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_1__get__(o); --} -- --static int __pyx_setprop_9vidcutter_4libs_3mpv_5Event_reply_userdata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { -- if (v) { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_3__set__(o, v); -- } -- else { -- return __pyx_pw_9vidcutter_4libs_3mpv_5Event_14reply_userdata_5__del__(o); -- } --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Event[] = { -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5Event_1__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_5Event_3__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Event[] = { -- {(char *)"error_str", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_error_str, 0, (char *)"mpv_error_string of the error proeprty", 0}, -- {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_name, 0, (char *)"mpv_event_name of the event id", 0}, -- {(char *)"id", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_id, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_id, (char *)0, 0}, -- {(char *)"error", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_error, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_error, (char *)0, 0}, -- {(char *)"data", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_data, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_data, (char *)0, 0}, -- {(char *)"reply_userdata", __pyx_getprop_9vidcutter_4libs_3mpv_5Event_reply_userdata, __pyx_setprop_9vidcutter_4libs_3mpv_5Event_reply_userdata, (char *)0, 0}, -- {0, 0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Event = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.Event", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Event), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Event, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- "Wraps: mpv_event", /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv_Event, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv_Event, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_Event, /*tp_methods*/ -- 0, /*tp_members*/ -- __pyx_getsets_9vidcutter_4libs_3mpv_Event, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- 0, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_Event, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; --static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context __pyx_vtable_9vidcutter_4libs_3mpv_Context; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_Context(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o); -- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_Context; -- p->callback = Py_None; Py_INCREF(Py_None); -- p->callbackthread = Py_None; Py_INCREF(Py_None); -- p->reply_userdata = Py_None; Py_INCREF(Py_None); -- if (unlikely(__pyx_pw_9vidcutter_4libs_3mpv_7Context_37__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; -- return o; -- bad: -- Py_DECREF(o); o = 0; -- return NULL; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Context(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -- #endif -- PyObject_GC_UnTrack(o); -- { -- PyObject *etype, *eval, *etb; -- PyErr_Fetch(&etype, &eval, &etb); -- __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); -- __pyx_pw_9vidcutter_4libs_3mpv_7Context_47__dealloc__(o); -- __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); -- PyErr_Restore(etype, eval, etb); -- } -- Py_CLEAR(p->callback); -- Py_CLEAR(p->callbackthread); -- Py_CLEAR(p->reply_userdata); -- (*Py_TYPE(o)->tp_free)(o); --} -- --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_Context(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; -- if (p->callback) { -- e = (*v)(p->callback, a); if (e) return e; -- } -- if (p->callbackthread) { -- e = (*v)(p->callbackthread, a); if (e) return e; -- } -- if (p->reply_userdata) { -- e = (*v)(p->reply_userdata, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv_Context(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv_Context *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)o; -- tmp = ((PyObject*)p->callback); -- p->callback = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->callbackthread); -- p->callbackthread = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->reply_userdata); -- p->reply_userdata = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_api_version(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_7Context_11api_version_1__get__(o); --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_name(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_7Context_4name_1__get__(o); --} -- --static PyObject *__pyx_getprop_9vidcutter_4libs_3mpv_7Context_time(PyObject *o, CYTHON_UNUSED void *x) { -- return __pyx_pw_9vidcutter_4libs_3mpv_7Context_4time_1__get__(o); --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_Context[] = { -- {"suspend", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_1suspend, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_suspend}, -- {"resume", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_3resume, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_2resume}, -- {"request_event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_5request_event, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_4request_event}, -- {"set_log_level", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_7set_log_level, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_6set_log_level}, -- {"load_config", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_9load_config, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_8load_config}, -- {"_format_for", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_11_format_for, METH_O, 0}, -- {"command", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_13command, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_12command}, -- {"get_property_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_15get_property_async, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_14get_property_async}, -- {"try_get_property_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_17try_get_property_async, METH_VARARGS|METH_KEYWORDS, 0}, -- {"try_get_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_19try_get_property, METH_VARARGS|METH_KEYWORDS, 0}, -- {"get_property", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_21get_property, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_20get_property}, -- {"set_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_23set_property, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_22set_property}, -- {"set_option", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_25set_option, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_24set_option}, -- {"initialize", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_27initialize, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_26initialize}, -- {"wait_event", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_29wait_event, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_28wait_event}, -- {"wakeup", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_31wakeup, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_30wakeup}, -- {"set_wakeup_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_33set_wakeup_callback, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_32set_wakeup_callback}, -- {"get_wakeup_pipe", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_35get_wakeup_pipe, METH_NOARGS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_34get_wakeup_pipe}, -- {"observe_property", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_7Context_39observe_property, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9vidcutter_4libs_3mpv_7Context_38observe_property}, -- {"unobserve_property", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_41unobserve_property, METH_O, __pyx_doc_9vidcutter_4libs_3mpv_7Context_40unobserve_property}, -- {"shutdown", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_43shutdown, METH_NOARGS, 0}, -- {"opengl_cb_api", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_45opengl_cb_api, METH_NOARGS, 0}, -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_49__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_7Context_51__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static struct PyGetSetDef __pyx_getsets_9vidcutter_4libs_3mpv_Context[] = { -- {(char *)"api_version", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_api_version, 0, (char *)0, 0}, -- {(char *)"name", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_name, 0, (char *)"Unique name for every context created.\n\n Wraps: mpv_client_name\n ", 0}, -- {(char *)"time", __pyx_getprop_9vidcutter_4libs_3mpv_7Context_time, 0, (char *)"Internal mpv client time.\n\n Has an arbitrary start offset, but will never wrap or go backwards.\n\n Wraps: mpv_get_time_us\n ", 0}, -- {0, 0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_Context = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.Context", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_Context), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_Context, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- "Base class wrapping a context to interact with mpv.\n\n Assume all calls can raise MPVError.\n\n Wraps: mpv_create, mpv_destroy and all mpv_handle related calls\n ", /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv_Context, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv_Context, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_Context, /*tp_methods*/ -- 0, /*tp_members*/ -- __pyx_getsets_9vidcutter_4libs_3mpv_Context, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- 0, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_Context, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)o); -- p->update_cb = Py_None; Py_INCREF(Py_None); -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_OpenGLContext(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)o; -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -- #endif -- PyObject_GC_UnTrack(o); -- { -- PyObject *etype, *eval, *etb; -- PyErr_Fetch(&etype, &eval, &etb); -- __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); -- __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_13__dealloc__(o); -- __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); -- PyErr_Restore(etype, eval, etb); -- } -- Py_CLEAR(p->update_cb); -- (*Py_TYPE(o)->tp_free)(o); --} -- --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_OpenGLContext(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)o; -- if (p->update_cb) { -- e = (*v)(p->update_cb, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv_OpenGLContext(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext *)o; -- tmp = ((PyObject*)p->update_cb); -- p->update_cb = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_OpenGLContext[] = { -- {"init_gl", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_3init_gl, METH_VARARGS|METH_KEYWORDS, 0}, -- {"set_update_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_5set_update_callback, METH_O, 0}, -- {"draw", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_7draw, METH_VARARGS|METH_KEYWORDS, 0}, -- {"report_flip", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_9report_flip, METH_O, 0}, -- {"uninit_gl", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_11uninit_gl, METH_NOARGS, 0}, -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_15__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_17__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_OpenGLContext = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.OpenGLContext", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLContext), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- 0, /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_methods*/ -- 0, /*tp_members*/ -- 0, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- __pyx_pw_9vidcutter_4libs_3mpv_13OpenGLContext_1__init__, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLContext, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; --static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o); -- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams; -- p->owned = Py_None; Py_INCREF(Py_None); -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv__RenderParams(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -- #endif -- PyObject_GC_UnTrack(o); -- { -- PyObject *etype, *eval, *etb; -- PyErr_Fetch(&etype, &eval, &etb); -- __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); -- __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_3__dealloc__(o); -- __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); -- PyErr_Restore(etype, eval, etb); -- } -- Py_CLEAR(p->owned); -- (*Py_TYPE(o)->tp_free)(o); --} -- --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv__RenderParams(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; -- if (p->owned) { -- e = (*v)(p->owned, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv__RenderParams(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *p = (struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)o; -- tmp = ((PyObject*)p->owned); -- p->owned = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv__RenderParams[] = { -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_5__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_7__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv__RenderParams = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv._RenderParams", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv__RenderParams, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- 0, /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv__RenderParams, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv__RenderParams, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv__RenderParams, /*tp_methods*/ -- 0, /*tp_members*/ -- 0, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- __pyx_pw_9vidcutter_4libs_3mpv_13_RenderParams_1__init__, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv__RenderParams, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; --static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)o); -- p->__pyx_vtab = __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo; -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderFrameInfo(PyObject *o) { -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -- #endif -- (*Py_TYPE(o)->tp_free)(o); --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_RenderFrameInfo[] = { -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_1__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_15RenderFrameInfo_3__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.RenderFrameInfo", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ -- 0, /*tp_doc*/ -- 0, /*tp_traverse*/ -- 0, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_methods*/ -- 0, /*tp_members*/ -- 0, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- 0, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_RenderFrameInfo, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p; -- PyObject *o; -- if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { -- o = (*t->tp_alloc)(t, 0); -- } else { -- o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); -- } -- if (unlikely(!o)) return 0; -- p = ((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o); -- p->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)Py_None); Py_INCREF(Py_None); -- p->update_cb = Py_None; Py_INCREF(Py_None); -- p->_x11_display = Py_None; Py_INCREF(Py_None); -- p->_wl_display = Py_None; Py_INCREF(Py_None); -- p->_get_proc_address = Py_None; Py_INCREF(Py_None); -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; -- #if CYTHON_USE_TP_FINALIZE -- if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { -- if (PyObject_CallFinalizerFromDealloc(o)) return; -- } -- #endif -- PyObject_GC_UnTrack(o); -- { -- PyObject *etype, *eval, *etb; -- PyErr_Fetch(&etype, &eval, &etb); -- __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); -- __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_21__dealloc__(o); -- __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); -- PyErr_Restore(etype, eval, etb); -- } -- Py_CLEAR(p->_mpv); -- Py_CLEAR(p->update_cb); -- Py_CLEAR(p->_x11_display); -- Py_CLEAR(p->_wl_display); -- Py_CLEAR(p->_get_proc_address); -- (*Py_TYPE(o)->tp_free)(o); --} -- --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; -- if (p->_mpv) { -- e = (*v)(((PyObject *)p->_mpv), a); if (e) return e; -- } -- if (p->update_cb) { -- e = (*v)(p->update_cb, a); if (e) return e; -- } -- if (p->_x11_display) { -- e = (*v)(p->_x11_display, a); if (e) return e; -- } -- if (p->_wl_display) { -- e = (*v)(p->_wl_display, a); if (e) return e; -- } -- if (p->_get_proc_address) { -- e = (*v)(p->_get_proc_address, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *p = (struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)o; -- tmp = ((PyObject*)p->_mpv); -- p->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)Py_None); Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->update_cb); -- p->update_cb = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->_x11_display); -- p->_x11_display = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->_wl_display); -- p->_wl_display = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- tmp = ((PyObject*)p->_get_proc_address); -- p->_get_proc_address = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_RenderContext[] = { -- {"set_icc_profile", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_3set_icc_profile, METH_O, 0}, -- {"set_ambient_light", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_5set_ambient_light, METH_O, 0}, -- {"get_next_frame_info", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_7get_next_frame_info, METH_NOARGS, 0}, -- {"set_update_callback", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_9set_update_callback, METH_O, 0}, -- {"update", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_11update, METH_NOARGS, 0}, -- {"render", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render, METH_VARARGS|METH_KEYWORDS, 0}, -- {"report_swap", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_15report_swap, METH_NOARGS, 0}, -- {"free", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_17free, METH_NOARGS, 0}, -- {"close", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_19close, METH_NOARGS, 0}, -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_23__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_25__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_RenderContext = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.RenderContext", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- 0, /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_RenderContext, /*tp_methods*/ -- 0, /*tp_members*/ -- 0, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext(PyTypeObject *t, PyObject *a, PyObject *k) { -- PyObject *o = __pyx_tp_new_9vidcutter_4libs_3mpv_RenderContext(t, a, k); -- if (unlikely(!o)) return 0; -- return o; --} -- --static PyMethodDef __pyx_methods_9vidcutter_4libs_3mpv_OpenGLRenderContext[] = { -- {"__reduce_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_3__reduce_cython__, METH_NOARGS, 0}, -- {"__setstate_cython__", (PyCFunction)__pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_5__setstate_cython__, METH_O, 0}, -- {0, 0, 0, 0} --}; -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.OpenGLRenderContext", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv_RenderContext, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- 0, /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv_RenderContext, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv_RenderContext, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- __pyx_methods_9vidcutter_4libs_3mpv_OpenGLRenderContext, /*tp_methods*/ -- 0, /*tp_members*/ -- 0, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; -- --static struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *__pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[8]; --static int __pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = 0; -- --static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { -- PyObject *o; -- if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)))) { -- o = (PyObject*)__pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[--__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors]; -- memset(o, 0, sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)); -- (void) PyObject_INIT(o, t); -- PyObject_GC_Track(o); -- } else { -- o = (*t->tp_alloc)(t, 0); -- if (unlikely(!o)) return 0; -- } -- return o; --} -- --static void __pyx_tp_dealloc_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o) { -- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; -- PyObject_GC_UnTrack(o); -- Py_CLEAR(p->__pyx_v_fn); -- if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors)))) { -- __pyx_freelist_9vidcutter_4libs_3mpv___pyx_scope_struct___errors[__pyx_freecount_9vidcutter_4libs_3mpv___pyx_scope_struct___errors++] = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o); -- } else { -- (*Py_TYPE(o)->tp_free)(o); -- } --} -- --static int __pyx_tp_traverse_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o, visitproc v, void *a) { -- int e; -- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; -- if (p->__pyx_v_fn) { -- e = (*v)(p->__pyx_v_fn, a); if (e) return e; -- } -- return 0; --} -- --static int __pyx_tp_clear_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyObject *o) { -- PyObject* tmp; -- struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *p = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)o; -- tmp = ((PyObject*)p->__pyx_v_fn); -- p->__pyx_v_fn = Py_None; Py_INCREF(Py_None); -- Py_XDECREF(tmp); -- return 0; --} -- --static PyTypeObject __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = { -- PyVarObject_HEAD_INIT(0, 0) -- "vidcutter.libs.mpv.__pyx_scope_struct___errors", /*tp_name*/ -- sizeof(struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -- __pyx_tp_dealloc_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_dealloc*/ -- #if PY_VERSION_HEX < 0x030800b4 -- 0, /*tp_print*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 -- 0, /*tp_vectorcall_offset*/ -- #endif -- 0, /*tp_getattr*/ -- 0, /*tp_setattr*/ -- #if PY_MAJOR_VERSION < 3 -- 0, /*tp_compare*/ -- #endif -- #if PY_MAJOR_VERSION >= 3 -- 0, /*tp_as_async*/ -- #endif -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -- 0, /*tp_call*/ -- 0, /*tp_str*/ -- 0, /*tp_getattro*/ -- 0, /*tp_setattro*/ -- 0, /*tp_as_buffer*/ -- Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -- 0, /*tp_doc*/ -- __pyx_tp_traverse_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_traverse*/ -- __pyx_tp_clear_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_clear*/ -- 0, /*tp_richcompare*/ -- 0, /*tp_weaklistoffset*/ -- 0, /*tp_iter*/ -- 0, /*tp_iternext*/ -- 0, /*tp_methods*/ -- 0, /*tp_members*/ -- 0, /*tp_getset*/ -- 0, /*tp_base*/ -- 0, /*tp_dict*/ -- 0, /*tp_descr_get*/ -- 0, /*tp_descr_set*/ -- 0, /*tp_dictoffset*/ -- 0, /*tp_init*/ -- 0, /*tp_alloc*/ -- __pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors, /*tp_new*/ -- 0, /*tp_free*/ -- 0, /*tp_is_gc*/ -- 0, /*tp_bases*/ -- 0, /*tp_mro*/ -- 0, /*tp_cache*/ -- 0, /*tp_subclasses*/ -- 0, /*tp_weaklist*/ -- 0, /*tp_del*/ -- 0, /*tp_version_tag*/ -- #if PY_VERSION_HEX >= 0x030400a1 -- 0, /*tp_finalize*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b1 -- 0, /*tp_vectorcall*/ -- #endif -- #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, /*tp_print*/ -- #endif --}; -- --static PyMethodDef __pyx_methods[] = { -- {0, 0, 0, 0} --}; -- --#if PY_MAJOR_VERSION >= 3 --#if CYTHON_PEP489_MULTI_PHASE_INIT --static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ --static int __pyx_pymod_exec_mpv(PyObject* module); /*proto*/ --static PyModuleDef_Slot __pyx_moduledef_slots[] = { -- {Py_mod_create, (void*)__pyx_pymod_create}, -- {Py_mod_exec, (void*)__pyx_pymod_exec_mpv}, -- {0, NULL} --}; --#endif -- --static struct PyModuleDef __pyx_moduledef = { -- PyModuleDef_HEAD_INIT, -- "mpv", -- __pyx_k_pympv_Python_wrapper_for_libmpv, /* m_doc */ -- #if CYTHON_PEP489_MULTI_PHASE_INIT -- 0, /* m_size */ -- #else -- -1, /* m_size */ -- #endif -- __pyx_methods /* m_methods */, -- #if CYTHON_PEP489_MULTI_PHASE_INIT -- __pyx_moduledef_slots, /* m_slots */ -- #else -- NULL, /* m_reload */ -- #endif -- NULL, /* m_traverse */ -- NULL, /* m_clear */ -- NULL /* m_free */ --}; --#endif --#ifndef CYTHON_SMALL_CODE --#if defined(__clang__) -- #define CYTHON_SMALL_CODE --#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) -- #define CYTHON_SMALL_CODE __attribute__((cold)) --#else -- #define CYTHON_SMALL_CODE --#endif --#endif -- --static __Pyx_StringTabEntry __pyx_string_tab[] = { -- {&__pyx_kp_s_0_3_0, __pyx_k_0_3_0, sizeof(__pyx_k_0_3_0), 0, 0, 1, 0}, -- {&__pyx_n_s_API_OPENGL, __pyx_k_API_OPENGL, sizeof(__pyx_k_API_OPENGL), 0, 0, 1, 1}, -- {&__pyx_kp_s_Andre_D, __pyx_k_Andre_D, sizeof(__pyx_k_Andre_D), 0, 0, 1, 0}, -- {&__pyx_n_s_CAPI_MAJOR, __pyx_k_CAPI_MAJOR, sizeof(__pyx_k_CAPI_MAJOR), 0, 0, 1, 1}, -- {&__pyx_n_s_CAPI_MINOR, __pyx_k_CAPI_MINOR, sizeof(__pyx_k_CAPI_MINOR), 0, 0, 1, 1}, -- {&__pyx_n_s_CallbackThread, __pyx_k_CallbackThread, sizeof(__pyx_k_CallbackThread), 0, 0, 1, 1}, -- {&__pyx_n_s_CallbackThread___init, __pyx_k_CallbackThread___init, sizeof(__pyx_k_CallbackThread___init), 0, 0, 1, 1}, -- {&__pyx_n_s_CallbackThread_call, __pyx_k_CallbackThread_call, sizeof(__pyx_k_CallbackThread_call), 0, 0, 1, 1}, -- {&__pyx_n_s_CallbackThread_mpv_callback, __pyx_k_CallbackThread_mpv_callback, sizeof(__pyx_k_CallbackThread_mpv_callback), 0, 0, 1, 1}, -- {&__pyx_n_s_CallbackThread_run, __pyx_k_CallbackThread_run, sizeof(__pyx_k_CallbackThread_run), 0, 0, 1, 1}, -- {&__pyx_n_s_CallbackThread_set, __pyx_k_CallbackThread_set, sizeof(__pyx_k_CallbackThread_set), 0, 0, 1, 1}, -- {&__pyx_n_s_CallbackThread_shutdown, __pyx_k_CallbackThread_shutdown, sizeof(__pyx_k_CallbackThread_shutdown), 0, 0, 1, 1}, -- {&__pyx_n_s_Context, __pyx_k_Context, sizeof(__pyx_k_Context), 0, 0, 1, 1}, -- {&__pyx_kp_s_Context_creation_error, __pyx_k_Context_creation_error, sizeof(__pyx_k_Context_creation_error), 0, 0, 1, 0}, -- {&__pyx_n_s_DeprecationWarning, __pyx_k_DeprecationWarning, sizeof(__pyx_k_DeprecationWarning), 0, 0, 1, 1}, -- {&__pyx_n_s_EOFReasons, __pyx_k_EOFReasons, sizeof(__pyx_k_EOFReasons), 0, 0, 1, 1}, -- {&__pyx_n_s_EndOfFileReached, __pyx_k_EndOfFileReached, sizeof(__pyx_k_EndOfFileReached), 0, 0, 1, 1}, -- {&__pyx_n_s_Errors, __pyx_k_Errors, sizeof(__pyx_k_Errors), 0, 0, 1, 1}, -- {&__pyx_n_s_Event, __pyx_k_Event, sizeof(__pyx_k_Event), 0, 0, 1, 1}, -- {&__pyx_n_s_Events, __pyx_k_Events, sizeof(__pyx_k_Events), 0, 0, 1, 1}, -- {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, -- {&__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_k_Incompatible_checksums_s_vs_0x05, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x05), 0, 0, 1, 0}, -- {&__pyx_kp_s_Incompatible_checksums_s_vs_0x56, __pyx_k_Incompatible_checksums_s_vs_0x56, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x56), 0, 0, 1, 0}, -- {&__pyx_kp_s_Incompatible_checksums_s_vs_0x87, __pyx_k_Incompatible_checksums_s_vs_0x87, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x87), 0, 0, 1, 0}, -- {&__pyx_kp_s_Incompatible_checksums_s_vs_0xbf, __pyx_k_Incompatible_checksums_s_vs_0xbf, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xbf), 0, 0, 1, 0}, -- {&__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_k_Incompatible_checksums_s_vs_0xd4, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xd4), 0, 0, 1, 0}, -- {&__pyx_kp_s_Incompatible_checksums_s_vs_0xda, __pyx_k_Incompatible_checksums_s_vs_0xda, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xda), 0, 0, 1, 0}, -- {&__pyx_n_s_InputDispatch, __pyx_k_InputDispatch, sizeof(__pyx_k_InputDispatch), 0, 0, 1, 1}, -- {&__pyx_kp_s_Known_possible_values_for_EndOfF, __pyx_k_Known_possible_values_for_EndOfF, sizeof(__pyx_k_Known_possible_values_for_EndOfF), 0, 0, 1, 0}, -- {&__pyx_n_s_LogLevels, __pyx_k_LogLevels, sizeof(__pyx_k_LogLevels), 0, 0, 1, 1}, -- {&__pyx_n_s_LogMessage, __pyx_k_LogMessage, sizeof(__pyx_k_LogMessage), 0, 0, 1, 1}, -- {&__pyx_n_s_MIN_CAPI_MINOR, __pyx_k_MIN_CAPI_MINOR, sizeof(__pyx_k_MIN_CAPI_MINOR), 0, 0, 1, 1}, -- {&__pyx_n_s_MPVError, __pyx_k_MPVError, sizeof(__pyx_k_MPVError), 0, 0, 1, 1}, -- {&__pyx_n_s_MPVError___init, __pyx_k_MPVError___init, sizeof(__pyx_k_MPVError___init), 0, 0, 1, 1}, -- {&__pyx_n_s_OpenGLContext, __pyx_k_OpenGLContext, sizeof(__pyx_k_OpenGLContext), 0, 0, 1, 1}, -- {&__pyx_kp_s_OpenGLContext_is_deprecated_plea, __pyx_k_OpenGLContext_is_deprecated_plea, sizeof(__pyx_k_OpenGLContext_is_deprecated_plea), 0, 0, 1, 0}, -- {&__pyx_n_s_OpenGLRenderContext, __pyx_k_OpenGLRenderContext, sizeof(__pyx_k_OpenGLRenderContext), 0, 0, 1, 1}, -- {&__pyx_kp_s_OpenGL_API_not_available, __pyx_k_OpenGL_API_not_available, sizeof(__pyx_k_OpenGL_API_not_available), 0, 0, 1, 0}, -- {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, -- {&__pyx_n_s_Property, __pyx_k_Property, sizeof(__pyx_k_Property), 0, 0, 1, 1}, -- {&__pyx_n_s_PyMPVError, __pyx_k_PyMPVError, sizeof(__pyx_k_PyMPVError), 0, 0, 1, 1}, -- {&__pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_k_REQUIRED_CAPI_MAJOR, sizeof(__pyx_k_REQUIRED_CAPI_MAJOR), 0, 0, 1, 1}, -- {&__pyx_n_s_RenderContext, __pyx_k_RenderContext, sizeof(__pyx_k_RenderContext), 0, 0, 1, 1}, -- {&__pyx_n_s_RenderParams, __pyx_k_RenderParams, sizeof(__pyx_k_RenderParams), 0, 0, 1, 1}, -- {&__pyx_kp_s_RenderParams_overflow, __pyx_k_RenderParams_overflow, sizeof(__pyx_k_RenderParams_overflow), 0, 0, 1, 0}, -- {&__pyx_n_s_ReplyUserData, __pyx_k_ReplyUserData, sizeof(__pyx_k_ReplyUserData), 0, 0, 1, 1}, -- {&__pyx_n_s_ReplyUserData___init, __pyx_k_ReplyUserData___init, sizeof(__pyx_k_ReplyUserData___init), 0, 0, 1, 1}, -- {&__pyx_n_s_ReplyUserData_add, __pyx_k_ReplyUserData_add, sizeof(__pyx_k_ReplyUserData_add), 0, 0, 1, 1}, -- {&__pyx_n_s_ReplyUserData_remove, __pyx_k_ReplyUserData_remove, sizeof(__pyx_k_ReplyUserData_remove), 0, 0, 1, 1}, -- {&__pyx_n_s_Semaphore, __pyx_k_Semaphore, sizeof(__pyx_k_Semaphore), 0, 0, 1, 1}, -- {&__pyx_kp_s_Set_of_known_error_codes_from_Mp, __pyx_k_Set_of_known_error_codes_from_Mp, sizeof(__pyx_k_Set_of_known_error_codes_from_Mp), 0, 0, 1, 0}, -- {&__pyx_kp_s_Set_of_known_values_for_Event_id, __pyx_k_Set_of_known_values_for_Event_id, sizeof(__pyx_k_Set_of_known_values_for_Event_id), 0, 0, 1, 0}, -- {&__pyx_n_s_Thread, __pyx_k_Thread, sizeof(__pyx_k_Thread), 0, 0, 1, 1}, -- {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, -- {&__pyx_n_s_UPDATE_FRAME, __pyx_k_UPDATE_FRAME, sizeof(__pyx_k_UPDATE_FRAME), 0, 0, 1, 1}, -- {&__pyx_n_s_UnicodeDecodeError, __pyx_k_UnicodeDecodeError, sizeof(__pyx_k_UnicodeDecodeError), 0, 0, 1, 1}, -- {&__pyx_n_s_UnicodeEncodeError, __pyx_k_UnicodeEncodeError, sizeof(__pyx_k_UnicodeEncodeError), 0, 0, 1, 1}, -- {&__pyx_kp_s_Unknown_api_type_r, __pyx_k_Unknown_api_type_r, sizeof(__pyx_k_Unknown_api_type_r), 0, 0, 1, 0}, -- {&__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_k_Unknown_or_invalid_pointer_objec, sizeof(__pyx_k_Unknown_or_invalid_pointer_objec), 0, 0, 1, 0}, -- {&__pyx_n_s_aborted, __pyx_k_aborted, sizeof(__pyx_k_aborted), 0, 0, 1, 1}, -- {&__pyx_n_s_acquire, __pyx_k_acquire, sizeof(__pyx_k_acquire), 0, 0, 1, 1}, -- {&__pyx_n_s_add, __pyx_k_add, sizeof(__pyx_k_add), 0, 0, 1, 1}, -- {&__pyx_n_s_advanced_control, __pyx_k_advanced_control, sizeof(__pyx_k_advanced_control), 0, 0, 1, 1}, -- {&__pyx_n_s_ao_init_failed, __pyx_k_ao_init_failed, sizeof(__pyx_k_ao_init_failed), 0, 0, 1, 1}, -- {&__pyx_n_s_api_type, __pyx_k_api_type, sizeof(__pyx_k_api_type), 0, 0, 1, 1}, -- {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, -- {&__pyx_n_s_asynchronous, __pyx_k_asynchronous, sizeof(__pyx_k_asynchronous), 0, 0, 1, 1}, -- {&__pyx_n_s_atomic_request_ptr, __pyx_k_atomic_request_ptr, sizeof(__pyx_k_atomic_request_ptr), 0, 0, 1, 1}, -- {&__pyx_n_s_audio_reconfig, __pyx_k_audio_reconfig, sizeof(__pyx_k_audio_reconfig), 0, 0, 1, 1}, -- {&__pyx_n_s_author, __pyx_k_author, sizeof(__pyx_k_author), 0, 0, 1, 1}, -- {&__pyx_n_s_block_for_target_time, __pyx_k_block_for_target_time, sizeof(__pyx_k_block_for_target_time), 0, 0, 1, 1}, -- {&__pyx_n_s_block_vsync, __pyx_k_block_vsync, sizeof(__pyx_k_block_vsync), 0, 0, 1, 1}, -- {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1}, -- {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, -- {&__pyx_n_s_chapter_change, __pyx_k_chapter_change, sizeof(__pyx_k_chapter_change), 0, 0, 1, 1}, -- {&__pyx_n_s_client_message, __pyx_k_client_message, sizeof(__pyx_k_client_message), 0, 0, 1, 1}, -- {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, -- {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, -- {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1}, -- {&__pyx_n_s_command_error, __pyx_k_command_error, sizeof(__pyx_k_command_error), 0, 0, 1, 1}, -- {&__pyx_n_s_command_reply, __pyx_k_command_reply, sizeof(__pyx_k_command_reply), 0, 0, 1, 1}, -- {&__pyx_n_s_connector_id, __pyx_k_connector_id, sizeof(__pyx_k_connector_id), 0, 0, 1, 1}, -- {&__pyx_n_s_counter, __pyx_k_counter, sizeof(__pyx_k_counter), 0, 0, 1, 1}, -- {&__pyx_n_s_crtc_id, __pyx_k_crtc_id, sizeof(__pyx_k_crtc_id), 0, 0, 1, 1}, -- {&__pyx_n_s_daemon, __pyx_k_daemon, sizeof(__pyx_k_daemon), 0, 0, 1, 1}, -- {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, -- {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, -- {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, -- {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1}, -- {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1}, -- {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, -- {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, -- {&__pyx_kp_s_drmModeAtomicReq, __pyx_k_drmModeAtomicReq, sizeof(__pyx_k_drmModeAtomicReq), 0, 0, 1, 0}, -- {&__pyx_n_s_drm_display, __pyx_k_drm_display, sizeof(__pyx_k_drm_display), 0, 0, 1, 1}, -- {&__pyx_n_s_drm_osd_size, __pyx_k_drm_osd_size, sizeof(__pyx_k_drm_osd_size), 0, 0, 1, 1}, -- {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, -- {&__pyx_n_s_e_i, __pyx_k_e_i, sizeof(__pyx_k_e_i), 0, 0, 1, 1}, -- {&__pyx_n_s_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 0, 1, 1}, -- {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, -- {&__pyx_n_s_end_file, __pyx_k_end_file, sizeof(__pyx_k_end_file), 0, 0, 1, 1}, -- {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, -- {&__pyx_n_s_eof, __pyx_k_eof, sizeof(__pyx_k_eof), 0, 0, 1, 1}, -- {&__pyx_n_s_err_c, __pyx_k_err_c, sizeof(__pyx_k_err_c), 0, 0, 1, 1}, -- {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, -- {&__pyx_n_s_errors, __pyx_k_errors, sizeof(__pyx_k_errors), 0, 0, 1, 1}, -- {&__pyx_n_s_errors_locals_wrapped, __pyx_k_errors_locals_wrapped, sizeof(__pyx_k_errors_locals_wrapped), 0, 0, 1, 1}, -- {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, -- {&__pyx_n_s_exts, __pyx_k_exts, sizeof(__pyx_k_exts), 0, 0, 1, 1}, -- {&__pyx_n_s_fatal, __pyx_k_fatal, sizeof(__pyx_k_fatal), 0, 0, 1, 1}, -- {&__pyx_n_s_fbo, __pyx_k_fbo, sizeof(__pyx_k_fbo), 0, 0, 1, 1}, -- {&__pyx_n_s_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 0, 0, 1, 1}, -- {&__pyx_n_s_file_loaded, __pyx_k_file_loaded, sizeof(__pyx_k_file_loaded), 0, 0, 1, 1}, -- {&__pyx_n_s_flip_y, __pyx_k_flip_y, sizeof(__pyx_k_flip_y), 0, 0, 1, 1}, -- {&__pyx_n_s_fn, __pyx_k_fn, sizeof(__pyx_k_fn), 0, 0, 1, 1}, -- {&__pyx_n_s_format_for, __pyx_k_format_for, sizeof(__pyx_k_format_for), 0, 0, 1, 1}, -- {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, -- {&__pyx_n_s_get_proc_address, __pyx_k_get_proc_address, sizeof(__pyx_k_get_proc_address), 0, 0, 1, 1}, -- {&__pyx_n_s_get_property, __pyx_k_get_property, sizeof(__pyx_k_get_property), 0, 0, 1, 1}, -- {&__pyx_n_s_get_property_async, __pyx_k_get_property_async, sizeof(__pyx_k_get_property_async), 0, 0, 1, 1}, -- {&__pyx_n_s_get_property_reply, __pyx_k_get_property_reply, sizeof(__pyx_k_get_property_reply), 0, 0, 1, 1}, -- {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, -- {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, -- {&__pyx_kp_s_icc_blob_should_be_a_bytes_insta, __pyx_k_icc_blob_should_be_a_bytes_insta, sizeof(__pyx_k_icc_blob_should_be_a_bytes_insta), 0, 0, 1, 0}, -- {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, -- {&__pyx_n_s_idle, __pyx_k_idle, sizeof(__pyx_k_idle), 0, 0, 1, 1}, -- {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, -- {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1}, -- {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, -- {&__pyx_n_s_initialize, __pyx_k_initialize, sizeof(__pyx_k_initialize), 0, 0, 1, 1}, -- {&__pyx_n_s_internal_format, __pyx_k_internal_format, sizeof(__pyx_k_internal_format), 0, 0, 1, 1}, -- {&__pyx_n_s_invalid_parameter, __pyx_k_invalid_parameter, sizeof(__pyx_k_invalid_parameter), 0, 0, 1, 1}, -- {&__pyx_n_s_is_py3, __pyx_k_is_py3, sizeof(__pyx_k_is_py3), 0, 0, 1, 1}, -- {&__pyx_n_s_isshutdown, __pyx_k_isshutdown, sizeof(__pyx_k_isshutdown), 0, 0, 1, 1}, -- {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1}, -- {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1}, -- {&__pyx_n_s_kw, __pyx_k_kw, sizeof(__pyx_k_kw), 0, 0, 1, 1}, -- {&__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_k_libmpv_version_is_incorrect_Requ, sizeof(__pyx_k_libmpv_version_is_incorrect_Requ), 0, 0, 1, 0}, -- {&__pyx_n_s_load_config, __pyx_k_load_config, sizeof(__pyx_k_load_config), 0, 0, 1, 1}, -- {&__pyx_n_s_loading_failed, __pyx_k_loading_failed, sizeof(__pyx_k_loading_failed), 0, 0, 1, 1}, -- {&__pyx_n_s_lock, __pyx_k_lock, sizeof(__pyx_k_lock), 0, 0, 1, 1}, -- {&__pyx_n_s_log_message, __pyx_k_log_message, sizeof(__pyx_k_log_message), 0, 0, 1, 1}, -- {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, -- {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, -- {&__pyx_n_s_metadata_update, __pyx_k_metadata_update, sizeof(__pyx_k_metadata_update), 0, 0, 1, 1}, -- {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, -- {&__pyx_n_s_mpv, __pyx_k_mpv, sizeof(__pyx_k_mpv), 0, 0, 1, 1}, -- {&__pyx_n_s_mpv_callback, __pyx_k_mpv_callback, sizeof(__pyx_k_mpv_callback), 0, 0, 1, 1}, -- {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, -- {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, -- {&__pyx_n_s_no, __pyx_k_no, sizeof(__pyx_k_no), 0, 0, 1, 1}, -- {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, -- {&__pyx_n_s_nomem, __pyx_k_nomem, sizeof(__pyx_k_nomem), 0, 0, 1, 1}, -- {&__pyx_n_s_none, __pyx_k_none, sizeof(__pyx_k_none), 0, 0, 1, 1}, -- {&__pyx_n_s_not_found, __pyx_k_not_found, sizeof(__pyx_k_not_found), 0, 0, 1, 1}, -- {&__pyx_n_s_not_implemented, __pyx_k_not_implemented, sizeof(__pyx_k_not_implemented), 0, 0, 1, 1}, -- {&__pyx_n_s_nothing_to_play, __pyx_k_nothing_to_play, sizeof(__pyx_k_nothing_to_play), 0, 0, 1, 1}, -- {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1}, -- {&__pyx_n_s_observe_property, __pyx_k_observe_property, sizeof(__pyx_k_observe_property), 0, 0, 1, 1}, -- {&__pyx_n_s_observed, __pyx_k_observed, sizeof(__pyx_k_observed), 0, 0, 1, 1}, -- {&__pyx_n_s_opengl, __pyx_k_opengl, sizeof(__pyx_k_opengl), 0, 0, 1, 1}, -- {&__pyx_n_s_opengl_fbo, __pyx_k_opengl_fbo, sizeof(__pyx_k_opengl_fbo), 0, 0, 1, 1}, -- {&__pyx_n_s_opengl_init_params, __pyx_k_opengl_init_params, sizeof(__pyx_k_opengl_init_params), 0, 0, 1, 1}, -- {&__pyx_n_s_option_error, __pyx_k_option_error, sizeof(__pyx_k_option_error), 0, 0, 1, 1}, -- {&__pyx_n_s_option_format, __pyx_k_option_format, sizeof(__pyx_k_option_format), 0, 0, 1, 1}, -- {&__pyx_n_s_pause, __pyx_k_pause, sizeof(__pyx_k_pause), 0, 0, 1, 1}, -- {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, -- {&__pyx_n_s_playback_restart, __pyx_k_playback_restart, sizeof(__pyx_k_playback_restart), 0, 0, 1, 1}, -- {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, -- {&__pyx_n_s_present, __pyx_k_present, sizeof(__pyx_k_present), 0, 0, 1, 1}, -- {&__pyx_n_s_prop, __pyx_k_prop, sizeof(__pyx_k_prop), 0, 0, 1, 1}, -- {&__pyx_n_s_property_change, __pyx_k_property_change, sizeof(__pyx_k_property_change), 0, 0, 1, 1}, -- {&__pyx_n_s_property_error, __pyx_k_property_error, sizeof(__pyx_k_property_error), 0, 0, 1, 1}, -- {&__pyx_n_s_property_format, __pyx_k_property_format, sizeof(__pyx_k_property_format), 0, 0, 1, 1}, -- {&__pyx_n_s_property_unavailable, __pyx_k_property_unavailable, sizeof(__pyx_k_property_unavailable), 0, 0, 1, 1}, -- {&__pyx_kp_s_pympv_error_during_callback_s, __pyx_k_pympv_error_during_callback_s, sizeof(__pyx_k_pympv_error_during_callback_s), 0, 0, 1, 0}, -- {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_unpickle_EndOfFileReached, __pyx_k_pyx_unpickle_EndOfFileReached, sizeof(__pyx_k_pyx_unpickle_EndOfFileReached), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_unpickle_Event, __pyx_k_pyx_unpickle_Event, sizeof(__pyx_k_pyx_unpickle_Event), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_unpickle_InputDispatch, __pyx_k_pyx_unpickle_InputDispatch, sizeof(__pyx_k_pyx_unpickle_InputDispatch), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_unpickle_LogMessage, __pyx_k_pyx_unpickle_LogMessage, sizeof(__pyx_k_pyx_unpickle_LogMessage), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_unpickle_Property, __pyx_k_pyx_unpickle_Property, sizeof(__pyx_k_pyx_unpickle_Property), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_unpickle_RenderFrameInfo, __pyx_k_pyx_unpickle_RenderFrameInfo, sizeof(__pyx_k_pyx_unpickle_RenderFrameInfo), 0, 0, 1, 1}, -- {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, -- {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, -- {&__pyx_n_s_queue_full, __pyx_k_queue_full, sizeof(__pyx_k_queue_full), 0, 0, 1, 1}, -- {&__pyx_n_s_quit, __pyx_k_quit, sizeof(__pyx_k_quit), 0, 0, 1, 1}, -- {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, -- {&__pyx_n_s_redraw, __pyx_k_redraw, sizeof(__pyx_k_redraw), 0, 0, 1, 1}, -- {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, -- {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, -- {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, -- {&__pyx_n_s_release, __pyx_k_release, sizeof(__pyx_k_release), 0, 0, 1, 1}, -- {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1}, -- {&__pyx_n_s_render, __pyx_k_render, sizeof(__pyx_k_render), 0, 0, 1, 1}, -- {&__pyx_n_s_render_fd, __pyx_k_render_fd, sizeof(__pyx_k_render_fd), 0, 0, 1, 1}, -- {&__pyx_n_s_repeat, __pyx_k_repeat, sizeof(__pyx_k_repeat), 0, 0, 1, 1}, -- {&__pyx_n_s_request_event, __pyx_k_request_event, sizeof(__pyx_k_request_event), 0, 0, 1, 1}, -- {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1}, -- {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1}, -- {&__pyx_n_s_script_input_dispatch, __pyx_k_script_input_dispatch, sizeof(__pyx_k_script_input_dispatch), 0, 0, 1, 1}, -- {&__pyx_n_s_seek, __pyx_k_seek, sizeof(__pyx_k_seek), 0, 0, 1, 1}, -- {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, -- {&__pyx_kp_s_self__ctx_cannot_be_converted_to, __pyx_k_self__ctx_cannot_be_converted_to, sizeof(__pyx_k_self__ctx_cannot_be_converted_to), 0, 0, 1, 0}, -- {&__pyx_kp_s_self_params_cannot_be_converted, __pyx_k_self_params_cannot_be_converted, sizeof(__pyx_k_self_params_cannot_be_converted), 0, 0, 1, 0}, -- {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1}, -- {&__pyx_n_s_set_ambient_light, __pyx_k_set_ambient_light, sizeof(__pyx_k_set_ambient_light), 0, 0, 1, 1}, -- {&__pyx_n_s_set_icc_profile, __pyx_k_set_icc_profile, sizeof(__pyx_k_set_icc_profile), 0, 0, 1, 1}, -- {&__pyx_n_s_set_log_level, __pyx_k_set_log_level, sizeof(__pyx_k_set_log_level), 0, 0, 1, 1}, -- {&__pyx_n_s_set_option, __pyx_k_set_option, sizeof(__pyx_k_set_option), 0, 0, 1, 1}, -- {&__pyx_n_s_set_property, __pyx_k_set_property, sizeof(__pyx_k_set_property), 0, 0, 1, 1}, -- {&__pyx_n_s_set_property_reply, __pyx_k_set_property_reply, sizeof(__pyx_k_set_property_reply), 0, 0, 1, 1}, -- {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, -- {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, -- {&__pyx_n_s_shutdown, __pyx_k_shutdown, sizeof(__pyx_k_shutdown), 0, 0, 1, 1}, -- {&__pyx_n_s_skip_rendering, __pyx_k_skip_rendering, sizeof(__pyx_k_skip_rendering), 0, 0, 1, 1}, -- {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, -- {&__pyx_n_s_start_file, __pyx_k_start_file, sizeof(__pyx_k_start_file), 0, 0, 1, 1}, -- {&__pyx_n_s_stderr, __pyx_k_stderr, sizeof(__pyx_k_stderr), 0, 0, 1, 1}, -- {&__pyx_n_s_strdec, __pyx_k_strdec, sizeof(__pyx_k_strdec), 0, 0, 1, 1}, -- {&__pyx_n_s_strdec_err, __pyx_k_strdec_err, sizeof(__pyx_k_strdec_err), 0, 0, 1, 1}, -- {&__pyx_n_s_strenc, __pyx_k_strenc, sizeof(__pyx_k_strenc), 0, 0, 1, 1}, -- {&__pyx_n_s_strict, __pyx_k_strict, sizeof(__pyx_k_strict), 0, 0, 1, 1}, -- {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, -- {&__pyx_n_s_success, __pyx_k_success, sizeof(__pyx_k_success), 0, 0, 1, 1}, -- {&__pyx_n_s_surrogateescape, __pyx_k_surrogateescape, sizeof(__pyx_k_surrogateescape), 0, 0, 1, 1}, -- {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, -- {&__pyx_n_s_target_time, __pyx_k_target_time, sizeof(__pyx_k_target_time), 0, 0, 1, 1}, -- {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, -- {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1}, -- {&__pyx_n_s_tick, __pyx_k_tick, sizeof(__pyx_k_tick), 0, 0, 1, 1}, -- {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, -- {&__pyx_n_s_trace, __pyx_k_trace, sizeof(__pyx_k_trace), 0, 0, 1, 1}, -- {&__pyx_n_s_tracks_changed, __pyx_k_tracks_changed, sizeof(__pyx_k_tracks_changed), 0, 0, 1, 1}, -- {&__pyx_n_s_tracks_switched, __pyx_k_tracks_switched, sizeof(__pyx_k_tracks_switched), 0, 0, 1, 1}, -- {&__pyx_n_s_uninit_gl, __pyx_k_uninit_gl, sizeof(__pyx_k_uninit_gl), 0, 0, 1, 1}, -- {&__pyx_n_s_uninitialized, __pyx_k_uninitialized, sizeof(__pyx_k_uninitialized), 0, 0, 1, 1}, -- {&__pyx_n_s_unknown_format, __pyx_k_unknown_format, sizeof(__pyx_k_unknown_format), 0, 0, 1, 1}, -- {&__pyx_n_s_unobserve_property, __pyx_k_unobserve_property, sizeof(__pyx_k_unobserve_property), 0, 0, 1, 1}, -- {&__pyx_n_s_unpause, __pyx_k_unpause, sizeof(__pyx_k_unpause), 0, 0, 1, 1}, -- {&__pyx_n_s_unsupported, __pyx_k_unsupported, sizeof(__pyx_k_unsupported), 0, 0, 1, 1}, -- {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, -- {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0}, -- {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1}, -- {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, -- {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1}, -- {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1}, -- {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1}, -- {&__pyx_n_s_vidcutter_libs_mpv, __pyx_k_vidcutter_libs_mpv, sizeof(__pyx_k_vidcutter_libs_mpv), 0, 0, 1, 1}, -- {&__pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_k_vidcutter_libs_pympv_mpv_pyx, sizeof(__pyx_k_vidcutter_libs_pympv_mpv_pyx), 0, 0, 1, 0}, -- {&__pyx_n_s_video_reconfig, __pyx_k_video_reconfig, sizeof(__pyx_k_video_reconfig), 0, 0, 1, 1}, -- {&__pyx_n_s_vo_init_failed, __pyx_k_vo_init_failed, sizeof(__pyx_k_vo_init_failed), 0, 0, 1, 1}, -- {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1}, -- {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1}, -- {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1}, -- {&__pyx_n_s_wl_display, __pyx_k_wl_display, sizeof(__pyx_k_wl_display), 0, 0, 1, 1}, -- {&__pyx_n_s_wrapped, __pyx_k_wrapped, sizeof(__pyx_k_wrapped), 0, 0, 1, 1}, -- {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1}, -- {&__pyx_n_s_x11_display, __pyx_k_x11_display, sizeof(__pyx_k_x11_display), 0, 0, 1, 1}, -- {0, 0, 0, 0, 0, 0, 0} --}; --static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { -- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 44, __pyx_L1_error) -- __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 346, __pyx_L1_error) -- __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(0, 58, __pyx_L1_error) -- __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(0, 66, __pyx_L1_error) -- __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 222, __pyx_L1_error) -- __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 303, __pyx_L1_error) -- __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 475, __pyx_L1_error) -- __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) -- __pyx_builtin_DeprecationWarning = __Pyx_GetBuiltinName(__pyx_n_s_DeprecationWarning); if (!__pyx_builtin_DeprecationWarning) __PYX_ERR(0, 830, __pyx_L1_error) -- return 0; -- __pyx_L1_error:; -- return -1; --} -- --static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); -- -- /* "vidcutter/libs/pympv/mpv.pyx":319 -- * -- * def _errors(fn): -- * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -- * v = fn(*k, **kw) -- * if v < 0: -- */ -- __pyx_tuple_ = PyTuple_Pack(3, __pyx_n_s_k, __pyx_n_s_kw, __pyx_n_s_v); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 319, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple_); -- __Pyx_GIVEREF(__pyx_tuple_); -- __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_wrapped, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 319, __pyx_L1_error) -- -- /* "(tree fragment)":2 -- * def __reduce_cython__(self): -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -- */ -- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 2, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__3); -- __Pyx_GIVEREF(__pyx_tuple__3); -- -- /* "(tree fragment)":4 -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< -- */ -- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 4, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__4); -- __Pyx_GIVEREF(__pyx_tuple__4); -- -- /* "vidcutter/libs/pympv/mpv.pyx":830 -- * def __init__(self): -- * self.inited = False -- * warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning) # <<<<<<<<<<<<<< -- * -- * def init_gl(self, exts, get_proc_address): -- */ -- __pyx_tuple__5 = PyTuple_Pack(2, __pyx_kp_s_OpenGLContext_is_deprecated_plea, __pyx_builtin_DeprecationWarning); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 830, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__5); -- __Pyx_GIVEREF(__pyx_tuple__5); -- -- /* "(tree fragment)":2 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- */ -- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 2, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__6); -- __Pyx_GIVEREF(__pyx_tuple__6); -- -- /* "(tree fragment)":4 -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- */ -- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 4, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__7); -- __Pyx_GIVEREF(__pyx_tuple__7); -- -- /* "(tree fragment)":2 -- * def __reduce_cython__(self): -- * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -- */ -- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_self_params_cannot_be_converted); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 2, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__8); -- __Pyx_GIVEREF(__pyx_tuple__8); -- -- /* "(tree fragment)":4 -- * raise TypeError("self.params cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- */ -- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_self_params_cannot_be_converted); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__9); -- __Pyx_GIVEREF(__pyx_tuple__9); -- -- /* "vidcutter/libs/pympv/mpv.pyx":992 -- * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -- * if drm_display: -- * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) -- * drm_params.connector_id = drm_display.get("connector_id", -1) -- */ -- __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 992, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__10); -- __Pyx_GIVEREF(__pyx_tuple__10); -- -- /* "vidcutter/libs/pympv/mpv.pyx":993 -- * if drm_display: -- * drm_params.fd = drm_display.get("fd", -1) -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< -- * drm_params.connector_id = drm_display.get("connector_id", -1) -- * arp = drm_display.get("atomic_request_ptr", None) -- */ -- __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_crtc_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 993, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__11); -- __Pyx_GIVEREF(__pyx_tuple__11); -- -- /* "vidcutter/libs/pympv/mpv.pyx":994 -- * drm_params.fd = drm_display.get("fd", -1) -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) -- * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< -- * arp = drm_display.get("atomic_request_ptr", None) -- * if arp is not None: -- */ -- __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_connector_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 994, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__12); -- __Pyx_GIVEREF(__pyx_tuple__12); -- -- /* "vidcutter/libs/pympv/mpv.pyx":995 -- * drm_params.crtc_id = drm_display.get("crtc_id", -1) -- * drm_params.connector_id = drm_display.get("connector_id", -1) -- * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< -- * if arp is not None: -- * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") -- */ -- __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_atomic_request_ptr, Py_None); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 995, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__13); -- __Pyx_GIVEREF(__pyx_tuple__13); -- -- /* "vidcutter/libs/pympv/mpv.pyx":998 -- * if arp is not None: -- * 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: -- */ -- __pyx_tuple__14 = PyTuple_Pack(2, __pyx_n_s_render_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 998, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__14); -- __Pyx_GIVEREF(__pyx_tuple__14); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1083 -- * if opengl_fbo: -- * memset(&fbo, 0, sizeof(fbo)) -- * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< -- * fbo.w = opengl_fbo["w"] -- * fbo.h = opengl_fbo["h"] -- */ -- __pyx_tuple__15 = PyTuple_Pack(2, __pyx_n_s_fbo, __pyx_int_0); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 1083, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__15); -- __Pyx_GIVEREF(__pyx_tuple__15); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1086 -- * fbo.w = opengl_fbo["w"] -- * fbo.h = opengl_fbo["h"] -- * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< -- * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -- * if flip_y: -- */ -- __pyx_tuple__16 = PyTuple_Pack(2, __pyx_n_s_internal_format, __pyx_int_0); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 1086, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__16); -- __Pyx_GIVEREF(__pyx_tuple__16); -- -- /* "(tree fragment)":2 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- */ -- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 2, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__17); -- __Pyx_GIVEREF(__pyx_tuple__17); -- -- /* "(tree fragment)":4 -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- */ -- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 4, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__18); -- __Pyx_GIVEREF(__pyx_tuple__18); -- -- /* "(tree fragment)":2 -- * def __reduce_cython__(self): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- */ -- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 2, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__19); -- __Pyx_GIVEREF(__pyx_tuple__19); -- -- /* "(tree fragment)":4 -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -- * def __setstate_cython__(self, __pyx_state): -- * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -- */ -- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 4, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__20); -- __Pyx_GIVEREF(__pyx_tuple__20); -- -- /* "vidcutter/libs/pympv/mpv.pyx":52 -- * void PyEval_InitThreads() -- * -- * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< -- * _strdec_err = "surrogateescape" if _is_py3 else "strict" -- * # mpv -> Python -- */ -- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 52, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__21); -- __Pyx_GIVEREF(__pyx_tuple__21); -- -- /* "vidcutter/libs/pympv/mpv.pyx":55 -- * _strdec_err = "surrogateescape" if _is_py3 else "strict" -- * # mpv -> Python -- * def _strdec(s): # <<<<<<<<<<<<<< -- * try: -- * return s.decode("utf-8", _strdec_err) -- */ -- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 55, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__22); -- __Pyx_GIVEREF(__pyx_tuple__22); -- __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strdec, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 55, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":63 -- * -- * # Python -> mpv -- * def _strenc(s): # <<<<<<<<<<<<<< -- * try: -- * return s.encode("utf-8", _strdec_err) -- */ -- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 63, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__24); -- __Pyx_GIVEREF(__pyx_tuple__24); -- __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strenc, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 63, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":318 -- * -- * -- * def _errors(fn): # <<<<<<<<<<<<<< -- * def wrapped(*k, **kw): -- * v = fn(*k, **kw) -- */ -- __pyx_tuple__26 = PyTuple_Pack(3, __pyx_n_s_fn, __pyx_n_s_wrapped, __pyx_n_s_wrapped); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 318, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__26); -- __Pyx_GIVEREF(__pyx_tuple__26); -- __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_errors, 318, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 318, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":329 -- * code = None -- * -- * def __init__(self, e): # <<<<<<<<<<<<<< -- * self.code = e -- * cdef const char* err_c -- */ -- __pyx_tuple__28 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_e, __pyx_n_s_err_c, __pyx_n_s_e_i); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 329, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__28); -- __Pyx_GIVEREF(__pyx_tuple__28); -- __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 329, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":346 -- * cdef _reply_userdatas = dict() -- * -- * class _ReplyUserData(object): # <<<<<<<<<<<<<< -- * def __init__(self, data): -- * self.counter = 0 -- */ -- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 346, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__30); -- __Pyx_GIVEREF(__pyx_tuple__30); -- -- /* "vidcutter/libs/pympv/mpv.pyx":347 -- * -- * class _ReplyUserData(object): -- * def __init__(self, data): # <<<<<<<<<<<<<< -- * self.counter = 0 -- * self.data = data -- */ -- __pyx_tuple__31 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 347, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__31); -- __Pyx_GIVEREF(__pyx_tuple__31); -- __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 347, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":352 -- * self.observed = False -- * -- * def add(self): # <<<<<<<<<<<<<< -- * self.counter += 1 -- * -- */ -- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 352, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__33); -- __Pyx_GIVEREF(__pyx_tuple__33); -- __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_add, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 352, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":355 -- * self.counter += 1 -- * -- * def remove(self): # <<<<<<<<<<<<<< -- * self.counter -= 1 -- * -- */ -- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 355, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__35); -- __Pyx_GIVEREF(__pyx_tuple__35); -- __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_remove, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 355, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":1133 -- * -- * class CallbackThread(Thread): -- * def __init__(self): # <<<<<<<<<<<<<< -- * Thread.__init__(self) -- * self.daemon = True -- */ -- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 1133, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__37); -- __Pyx_GIVEREF(__pyx_tuple__37); -- __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 1133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 1133, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":1141 -- * self.isshutdown = False -- * -- * def shutdown(self): # <<<<<<<<<<<<<< -- * self.isshutdown = True -- * self.callback = None -- */ -- __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 1141, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__39); -- __Pyx_GIVEREF(__pyx_tuple__39); -- __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_shutdown, 1141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 1141, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":1146 -- * self.lock.release() -- * -- * def call(self): # <<<<<<<<<<<<<< -- * self.lock.release() -- * -- */ -- __pyx_tuple__41 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 1146, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__41); -- __Pyx_GIVEREF(__pyx_tuple__41); -- __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_call, 1146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 1146, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":1149 -- * self.lock.release() -- * -- * def set(self, callback): # <<<<<<<<<<<<<< -- * self.callback = callback -- * -- */ -- __pyx_tuple__43 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 1149, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__43); -- __Pyx_GIVEREF(__pyx_tuple__43); -- __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_set, 1149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 1149, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":1152 -- * self.callback = callback -- * -- * def run(self): # <<<<<<<<<<<<<< -- * while not self.isshutdown: -- * self.lock.acquire(True) -- */ -- __pyx_tuple__45 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 1152, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__45); -- __Pyx_GIVEREF(__pyx_tuple__45); -- __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_run, 1152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 1152, __pyx_L1_error) -- -- /* "vidcutter/libs/pympv/mpv.pyx":1157 -- * self.mpv_callback(self.callback) if self.callback else None -- * -- * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -- * try: -- * callback() -- */ -- __pyx_tuple__47 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_callback, __pyx_n_s_e); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 1157, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__47); -- __Pyx_GIVEREF(__pyx_tuple__47); -- __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_mpv_callback, 1157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 1157, __pyx_L1_error) -- -- /* "(tree fragment)":1 -- * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -- */ -- __pyx_tuple__49 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__49); -- __Pyx_GIVEREF(__pyx_tuple__49); -- __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_EndOfFileReached, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(1, 1, __pyx_L1_error) -- __pyx_tuple__51 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__51); -- __Pyx_GIVEREF(__pyx_tuple__51); -- __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_InputDispatch, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(1, 1, __pyx_L1_error) -- __pyx_tuple__53 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__53); -- __Pyx_GIVEREF(__pyx_tuple__53); -- __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_LogMessage, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(1, 1, __pyx_L1_error) -- __pyx_tuple__55 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__55); -- __Pyx_GIVEREF(__pyx_tuple__55); -- __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Property, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(1, 1, __pyx_L1_error) -- __pyx_tuple__57 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__57); -- __Pyx_GIVEREF(__pyx_tuple__57); -- __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Event, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(1, 1, __pyx_L1_error) -- __pyx_tuple__59 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_tuple__59); -- __Pyx_GIVEREF(__pyx_tuple__59); -- __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_RenderFrameInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_RefNannyFinishContext(); -- return 0; -- __pyx_L1_error:; -- __Pyx_RefNannyFinishContext(); -- return -1; --} -- --static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { -- if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); -- __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_32 = PyInt_FromLong(32); if (unlikely(!__pyx_int_32)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_5713169 = PyInt_FromLong(5713169L); if (unlikely(!__pyx_int_5713169)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_90958262 = PyInt_FromLong(90958262L); if (unlikely(!__pyx_int_90958262)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_142036910 = PyInt_FromLong(142036910L); if (unlikely(!__pyx_int_142036910)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_200688041 = PyInt_FromLong(200688041L); if (unlikely(!__pyx_int_200688041)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_222419149 = PyInt_FromLong(222419149L); if (unlikely(!__pyx_int_222419149)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_228822053 = PyInt_FromLong(228822053L); if (unlikely(!__pyx_int_228822053)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) -- return 0; -- __pyx_L1_error:; -- return -1; --} -- --static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ --static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ --static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ --static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ --static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ --static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ --static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ -- --static int __Pyx_modinit_global_init_code(void) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); -- /*--- Global init code ---*/ -- __pyx_v_9vidcutter_4libs_3mpv__callbacks = Py_None; Py_INCREF(Py_None); -- __pyx_v_9vidcutter_4libs_3mpv__reply_userdatas = Py_None; Py_INCREF(Py_None); -- __Pyx_RefNannyFinishContext(); -- return 0; --} -- --static int __Pyx_modinit_variable_export_code(void) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); -- /*--- Variable export code ---*/ -- __Pyx_RefNannyFinishContext(); -- return 0; --} -- --static int __Pyx_modinit_function_export_code(void) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); -- /*--- Function export code ---*/ -- __Pyx_RefNannyFinishContext(); -- return 0; --} -- --static int __Pyx_modinit_type_init_code(void) { -- __Pyx_RefNannyDeclarations -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); -- /*--- Type init code ---*/ -- __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; -- __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *, struct mpv_event_end_file *))__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_EndOfFileReached, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached; -- __pyx_vtabptr_9vidcutter_4libs_3mpv_InputDispatch = &__pyx_vtable_9vidcutter_4libs_3mpv_InputDispatch; -- __pyx_vtable_9vidcutter_4libs_3mpv_InputDispatch._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_InputDispatch *, struct mpv_event_script_input_dispatch *))__pyx_f_9vidcutter_4libs_3mpv_13InputDispatch__init; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_InputDispatch) < 0) __PYX_ERR(0, 169, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_InputDispatch.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_InputDispatch) < 0) __PYX_ERR(0, 169, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_InputDispatch, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_InputDispatch) < 0) __PYX_ERR(0, 169, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_InputDispatch) < 0) __PYX_ERR(0, 169, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_InputDispatch = &__pyx_type_9vidcutter_4libs_3mpv_InputDispatch; -- __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage = &__pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; -- __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *, struct mpv_event_log_message *))__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LogMessage, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_LogMessage = &__pyx_type_9vidcutter_4libs_3mpv_LogMessage; -- __pyx_vtabptr_9vidcutter_4libs_3mpv_Property = &__pyx_vtable_9vidcutter_4libs_3mpv_Property; -- __pyx_vtable_9vidcutter_4libs_3mpv_Property._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *, struct mpv_event_property *))__pyx_f_9vidcutter_4libs_3mpv_8Property__init; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_Property.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Property, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_Property = &__pyx_type_9vidcutter_4libs_3mpv_Property; -- __pyx_vtabptr_9vidcutter_4libs_3mpv_Event = &__pyx_vtable_9vidcutter_4libs_3mpv_Event; -- __pyx_vtable_9vidcutter_4libs_3mpv_Event._data = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *))__pyx_f_9vidcutter_4libs_3mpv_5Event__data; -- __pyx_vtable_9vidcutter_4libs_3mpv_Event._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_5Event__init; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_Event.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Event, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_Event = &__pyx_type_9vidcutter_4libs_3mpv_Event; -- __pyx_vtabptr_9vidcutter_4libs_3mpv_Context = &__pyx_vtable_9vidcutter_4libs_3mpv_Context; -- __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_list = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list; -- __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_map = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map; -- __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_native_value = (struct mpv_node (*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value; -- __pyx_vtable_9vidcutter_4libs_3mpv_Context._free_native_value = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, struct mpv_node))__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_Context.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Context, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_Context = &__pyx_type_9vidcutter_4libs_3mpv_Context; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext) < 0) __PYX_ERR(0, 822, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_OpenGLContext.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_OpenGLContext.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_OpenGLContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext) < 0) __PYX_ERR(0, 822, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext) < 0) __PYX_ERR(0, 822, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_OpenGLContext = &__pyx_type_9vidcutter_4libs_3mpv_OpenGLContext; -- __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams = &__pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; -- __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_voidp = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, void *, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp; -- __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_int = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, int))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int; -- __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_string = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, char *))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderParams, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv__RenderParams = &__pyx_type_9vidcutter_4libs_3mpv__RenderParams; -- __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; -- __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo._from_struct = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *, struct mpv_render_frame_info *))__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext = &__pyx_type_9vidcutter_4libs_3mpv_RenderContext; -- __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_base = __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; -- } -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLRenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) -- __pyx_ptype_9vidcutter_4libs_3mpv_OpenGLRenderContext = &__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors) < 0) __PYX_ERR(0, 318, __pyx_L1_error) -- #if PY_VERSION_HEX < 0x030800B1 -- __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_print = 0; -- #endif -- if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_getattro == PyObject_GenericGetAttr)) { -- __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; -- } -- __pyx_ptype_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = &__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors; -- __Pyx_RefNannyFinishContext(); -- return 0; -- __pyx_L1_error:; -- __Pyx_RefNannyFinishContext(); -- return -1; --} -- --static int __Pyx_modinit_type_import_code(void) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); -- /*--- Type import code ---*/ -- __Pyx_RefNannyFinishContext(); -- return 0; --} -- --static int __Pyx_modinit_variable_import_code(void) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); -- /*--- Variable import code ---*/ -- __Pyx_RefNannyFinishContext(); -- return 0; --} -- --static int __Pyx_modinit_function_import_code(void) { -- __Pyx_RefNannyDeclarations -- __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); -- /*--- Function import code ---*/ -- __Pyx_RefNannyFinishContext(); -- return 0; --} -- -- --#ifndef CYTHON_NO_PYINIT_EXPORT --#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC --#elif PY_MAJOR_VERSION < 3 --#ifdef __cplusplus --#define __Pyx_PyMODINIT_FUNC extern "C" void --#else --#define __Pyx_PyMODINIT_FUNC void --#endif --#else --#ifdef __cplusplus --#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * --#else --#define __Pyx_PyMODINIT_FUNC PyObject * --#endif --#endif -- -- --#if PY_MAJOR_VERSION < 3 --__Pyx_PyMODINIT_FUNC initmpv(void) CYTHON_SMALL_CODE; /*proto*/ --__Pyx_PyMODINIT_FUNC initmpv(void) --#else --__Pyx_PyMODINIT_FUNC PyInit_mpv(void) CYTHON_SMALL_CODE; /*proto*/ --__Pyx_PyMODINIT_FUNC PyInit_mpv(void) --#if CYTHON_PEP489_MULTI_PHASE_INIT --{ -- return PyModuleDef_Init(&__pyx_moduledef); --} --static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { -- #if PY_VERSION_HEX >= 0x030700A1 -- static PY_INT64_T main_interpreter_id = -1; -- PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); -- if (main_interpreter_id == -1) { -- main_interpreter_id = current_id; -- return (unlikely(current_id == -1)) ? -1 : 0; -- } else if (unlikely(main_interpreter_id != current_id)) -- #else -- static PyInterpreterState *main_interpreter = NULL; -- PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; -- if (!main_interpreter) { -- main_interpreter = current_interpreter; -- } else if (unlikely(main_interpreter != current_interpreter)) -- #endif -- { -- PyErr_SetString( -- PyExc_ImportError, -- "Interpreter change detected - this module can only be loaded into one interpreter per process."); -- return -1; -- } -- return 0; --} --static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { -- PyObject *value = PyObject_GetAttrString(spec, from_name); -- int result = 0; -- if (likely(value)) { -- if (allow_none || value != Py_None) { -- result = PyDict_SetItemString(moddict, to_name, value); -- } -- Py_DECREF(value); -- } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { -- PyErr_Clear(); -- } else { -- result = -1; -- } -- return result; --} --static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { -- PyObject *module = NULL, *moddict, *modname; -- if (__Pyx_check_single_interpreter()) -- return NULL; -- if (__pyx_m) -- return __Pyx_NewRef(__pyx_m); -- modname = PyObject_GetAttrString(spec, "name"); -- if (unlikely(!modname)) goto bad; -- module = PyModule_NewObject(modname); -- Py_DECREF(modname); -- if (unlikely(!module)) goto bad; -- moddict = PyModule_GetDict(module); -- if (unlikely(!moddict)) goto bad; -- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; -- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; -- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; -- if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; -- return module; --bad: -- Py_XDECREF(module); -- return NULL; --} -- -- --static CYTHON_SMALL_CODE int __pyx_pymod_exec_mpv(PyObject *__pyx_pyinit_module) --#endif --#endif --{ -- PyObject *__pyx_t_1 = NULL; -- PyObject *__pyx_t_2 = NULL; -- int __pyx_t_3; -- PyObject *__pyx_t_4 = NULL; -- int __pyx_t_5; -- PyObject *__pyx_t_6 = NULL; -- PyObject *__pyx_t_7 = NULL; -- int __pyx_lineno = 0; -- const char *__pyx_filename = NULL; -- int __pyx_clineno = 0; -- __Pyx_RefNannyDeclarations -- #if CYTHON_PEP489_MULTI_PHASE_INIT -- if (__pyx_m) { -- if (__pyx_m == __pyx_pyinit_module) return 0; -- PyErr_SetString(PyExc_RuntimeError, "Module 'mpv' has already been imported. Re-initialisation is not supported."); -- return -1; -- } -- #elif PY_MAJOR_VERSION >= 3 -- if (__pyx_m) return __Pyx_NewRef(__pyx_m); -- #endif -- #if CYTHON_REFNANNY --__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); --if (!__Pyx_RefNanny) { -- PyErr_Clear(); -- __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); -- if (!__Pyx_RefNanny) -- Py_FatalError("failed to import 'refnanny' module"); --} --#endif -- __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_mpv(void)", 0); -- if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #ifdef __Pxy_PyFrame_Initialize_Offsets -- __Pxy_PyFrame_Initialize_Offsets(); -- #endif -- __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) -- #ifdef __Pyx_CyFunction_USED -- if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #endif -- #ifdef __Pyx_FusedFunction_USED -- if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #endif -- #ifdef __Pyx_Coroutine_USED -- if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #endif -- #ifdef __Pyx_Generator_USED -- if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #endif -- #ifdef __Pyx_AsyncGen_USED -- if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #endif -- #ifdef __Pyx_StopAsyncIteration_USED -- if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #endif -- /*--- Library function declarations ---*/ -- /*--- Threads initialization code ---*/ -- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS -- #ifdef WITH_THREAD /* Python build with threading support? */ -- PyEval_InitThreads(); -- #endif -- #endif -- /*--- Module creation code ---*/ -- #if CYTHON_PEP489_MULTI_PHASE_INIT -- __pyx_m = __pyx_pyinit_module; -- Py_INCREF(__pyx_m); -- #else -- #if PY_MAJOR_VERSION < 3 -- __pyx_m = Py_InitModule4("mpv", __pyx_methods, __pyx_k_pympv_Python_wrapper_for_libmpv, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); -- #else -- __pyx_m = PyModule_Create(&__pyx_moduledef); -- #endif -- if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) -- #endif -- __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) -- Py_INCREF(__pyx_d); -- __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) -- Py_INCREF(__pyx_b); -- __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) -- Py_INCREF(__pyx_cython_runtime); -- if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); -- /*--- Initialize various global constants etc. ---*/ -- if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) -- if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #endif -- if (__pyx_module_is_main_vidcutter__libs__mpv) { -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- } -- #if PY_MAJOR_VERSION >= 3 -- { -- PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) -- if (!PyDict_GetItemString(modules, "vidcutter.libs.mpv")) { -- if (unlikely(PyDict_SetItemString(modules, "vidcutter.libs.mpv", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) -- } -- } -- #endif -- /*--- Builtin init code ---*/ -- if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- /*--- Constants init code ---*/ -- if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- /*--- Global type/function init code ---*/ -- (void)__Pyx_modinit_global_init_code(); -- (void)__Pyx_modinit_variable_export_code(); -- (void)__Pyx_modinit_function_export_code(); -- if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) -- (void)__Pyx_modinit_type_import_code(); -- (void)__Pyx_modinit_variable_import_code(); -- (void)__Pyx_modinit_function_import_code(); -- /*--- Execution code ---*/ -- #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) -- if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- #endif -+static __Pyx_StringTabEntry __pyx_string_tab[] = { -+ {&__pyx_kp_s_0_3_0, __pyx_k_0_3_0, sizeof(__pyx_k_0_3_0), 0, 0, 1, 0}, -+ {&__pyx_n_s_API_OPENGL, __pyx_k_API_OPENGL, sizeof(__pyx_k_API_OPENGL), 0, 0, 1, 1}, -+ {&__pyx_kp_s_Andre_D, __pyx_k_Andre_D, sizeof(__pyx_k_Andre_D), 0, 0, 1, 0}, -+ {&__pyx_n_s_CAPI_MAJOR, __pyx_k_CAPI_MAJOR, sizeof(__pyx_k_CAPI_MAJOR), 0, 0, 1, 1}, -+ {&__pyx_n_s_CAPI_MINOR, __pyx_k_CAPI_MINOR, sizeof(__pyx_k_CAPI_MINOR), 0, 0, 1, 1}, -+ {&__pyx_n_s_CallbackThread, __pyx_k_CallbackThread, sizeof(__pyx_k_CallbackThread), 0, 0, 1, 1}, -+ {&__pyx_n_s_CallbackThread___init, __pyx_k_CallbackThread___init, sizeof(__pyx_k_CallbackThread___init), 0, 0, 1, 1}, -+ {&__pyx_n_s_CallbackThread_call, __pyx_k_CallbackThread_call, sizeof(__pyx_k_CallbackThread_call), 0, 0, 1, 1}, -+ {&__pyx_n_s_CallbackThread_mpv_callback, __pyx_k_CallbackThread_mpv_callback, sizeof(__pyx_k_CallbackThread_mpv_callback), 0, 0, 1, 1}, -+ {&__pyx_n_s_CallbackThread_run, __pyx_k_CallbackThread_run, sizeof(__pyx_k_CallbackThread_run), 0, 0, 1, 1}, -+ {&__pyx_n_s_CallbackThread_set, __pyx_k_CallbackThread_set, sizeof(__pyx_k_CallbackThread_set), 0, 0, 1, 1}, -+ {&__pyx_n_s_CallbackThread_shutdown, __pyx_k_CallbackThread_shutdown, sizeof(__pyx_k_CallbackThread_shutdown), 0, 0, 1, 1}, -+ {&__pyx_n_s_Context, __pyx_k_Context, sizeof(__pyx_k_Context), 0, 0, 1, 1}, -+ {&__pyx_kp_s_Context_creation_error, __pyx_k_Context_creation_error, sizeof(__pyx_k_Context_creation_error), 0, 0, 1, 0}, -+ {&__pyx_n_s_EOFReasons, __pyx_k_EOFReasons, sizeof(__pyx_k_EOFReasons), 0, 0, 1, 1}, -+ {&__pyx_n_s_EndOfFileReached, __pyx_k_EndOfFileReached, sizeof(__pyx_k_EndOfFileReached), 0, 0, 1, 1}, -+ {&__pyx_n_s_Errors, __pyx_k_Errors, sizeof(__pyx_k_Errors), 0, 0, 1, 1}, -+ {&__pyx_n_s_Event, __pyx_k_Event, sizeof(__pyx_k_Event), 0, 0, 1, 1}, -+ {&__pyx_n_s_Events, __pyx_k_Events, sizeof(__pyx_k_Events), 0, 0, 1, 1}, -+ {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, -+ {&__pyx_kp_s_Incompatible_checksums_s_vs_0x05, __pyx_k_Incompatible_checksums_s_vs_0x05, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x05), 0, 0, 1, 0}, -+ {&__pyx_kp_s_Incompatible_checksums_s_vs_0x56, __pyx_k_Incompatible_checksums_s_vs_0x56, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x56), 0, 0, 1, 0}, -+ {&__pyx_kp_s_Incompatible_checksums_s_vs_0x87, __pyx_k_Incompatible_checksums_s_vs_0x87, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x87), 0, 0, 1, 0}, -+ {&__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_k_Incompatible_checksums_s_vs_0xd4, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xd4), 0, 0, 1, 0}, -+ {&__pyx_kp_s_Incompatible_checksums_s_vs_0xda, __pyx_k_Incompatible_checksums_s_vs_0xda, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xda), 0, 0, 1, 0}, -+ {&__pyx_kp_s_Known_possible_values_for_EndOfF, __pyx_k_Known_possible_values_for_EndOfF, sizeof(__pyx_k_Known_possible_values_for_EndOfF), 0, 0, 1, 0}, -+ {&__pyx_n_s_LogLevels, __pyx_k_LogLevels, sizeof(__pyx_k_LogLevels), 0, 0, 1, 1}, -+ {&__pyx_n_s_LogMessage, __pyx_k_LogMessage, sizeof(__pyx_k_LogMessage), 0, 0, 1, 1}, -+ {&__pyx_n_s_MIN_CAPI_MINOR, __pyx_k_MIN_CAPI_MINOR, sizeof(__pyx_k_MIN_CAPI_MINOR), 0, 0, 1, 1}, -+ {&__pyx_n_s_MPVError, __pyx_k_MPVError, sizeof(__pyx_k_MPVError), 0, 0, 1, 1}, -+ {&__pyx_n_s_MPVError___init, __pyx_k_MPVError___init, sizeof(__pyx_k_MPVError___init), 0, 0, 1, 1}, -+ {&__pyx_n_s_OpenGLRenderContext, __pyx_k_OpenGLRenderContext, sizeof(__pyx_k_OpenGLRenderContext), 0, 0, 1, 1}, -+ {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, -+ {&__pyx_n_s_Property, __pyx_k_Property, sizeof(__pyx_k_Property), 0, 0, 1, 1}, -+ {&__pyx_n_s_PyMPVError, __pyx_k_PyMPVError, sizeof(__pyx_k_PyMPVError), 0, 0, 1, 1}, -+ {&__pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_k_REQUIRED_CAPI_MAJOR, sizeof(__pyx_k_REQUIRED_CAPI_MAJOR), 0, 0, 1, 1}, -+ {&__pyx_n_s_RenderContext, __pyx_k_RenderContext, sizeof(__pyx_k_RenderContext), 0, 0, 1, 1}, -+ {&__pyx_n_s_RenderParams, __pyx_k_RenderParams, sizeof(__pyx_k_RenderParams), 0, 0, 1, 1}, -+ {&__pyx_kp_s_RenderParams_overflow, __pyx_k_RenderParams_overflow, sizeof(__pyx_k_RenderParams_overflow), 0, 0, 1, 0}, -+ {&__pyx_n_s_ReplyUserData, __pyx_k_ReplyUserData, sizeof(__pyx_k_ReplyUserData), 0, 0, 1, 1}, -+ {&__pyx_n_s_ReplyUserData___init, __pyx_k_ReplyUserData___init, sizeof(__pyx_k_ReplyUserData___init), 0, 0, 1, 1}, -+ {&__pyx_n_s_ReplyUserData_add, __pyx_k_ReplyUserData_add, sizeof(__pyx_k_ReplyUserData_add), 0, 0, 1, 1}, -+ {&__pyx_n_s_ReplyUserData_remove, __pyx_k_ReplyUserData_remove, sizeof(__pyx_k_ReplyUserData_remove), 0, 0, 1, 1}, -+ {&__pyx_n_s_Semaphore, __pyx_k_Semaphore, sizeof(__pyx_k_Semaphore), 0, 0, 1, 1}, -+ {&__pyx_kp_s_Set_of_known_error_codes_from_Mp, __pyx_k_Set_of_known_error_codes_from_Mp, sizeof(__pyx_k_Set_of_known_error_codes_from_Mp), 0, 0, 1, 0}, -+ {&__pyx_kp_s_Set_of_known_values_for_Event_id, __pyx_k_Set_of_known_values_for_Event_id, sizeof(__pyx_k_Set_of_known_values_for_Event_id), 0, 0, 1, 0}, -+ {&__pyx_n_s_Thread, __pyx_k_Thread, sizeof(__pyx_k_Thread), 0, 0, 1, 1}, -+ {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, -+ {&__pyx_n_s_UPDATE_FRAME, __pyx_k_UPDATE_FRAME, sizeof(__pyx_k_UPDATE_FRAME), 0, 0, 1, 1}, -+ {&__pyx_n_s_UnicodeDecodeError, __pyx_k_UnicodeDecodeError, sizeof(__pyx_k_UnicodeDecodeError), 0, 0, 1, 1}, -+ {&__pyx_n_s_UnicodeEncodeError, __pyx_k_UnicodeEncodeError, sizeof(__pyx_k_UnicodeEncodeError), 0, 0, 1, 1}, -+ {&__pyx_kp_s_Unknown_api_type_r, __pyx_k_Unknown_api_type_r, sizeof(__pyx_k_Unknown_api_type_r), 0, 0, 1, 0}, -+ {&__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_k_Unknown_or_invalid_pointer_objec, sizeof(__pyx_k_Unknown_or_invalid_pointer_objec), 0, 0, 1, 0}, -+ {&__pyx_n_s_aborted, __pyx_k_aborted, sizeof(__pyx_k_aborted), 0, 0, 1, 1}, -+ {&__pyx_n_s_acquire, __pyx_k_acquire, sizeof(__pyx_k_acquire), 0, 0, 1, 1}, -+ {&__pyx_n_s_add, __pyx_k_add, sizeof(__pyx_k_add), 0, 0, 1, 1}, -+ {&__pyx_n_s_advanced_control, __pyx_k_advanced_control, sizeof(__pyx_k_advanced_control), 0, 0, 1, 1}, -+ {&__pyx_n_s_ao_init_failed, __pyx_k_ao_init_failed, sizeof(__pyx_k_ao_init_failed), 0, 0, 1, 1}, -+ {&__pyx_n_s_api_type, __pyx_k_api_type, sizeof(__pyx_k_api_type), 0, 0, 1, 1}, -+ {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, -+ {&__pyx_n_s_asynchronous, __pyx_k_asynchronous, sizeof(__pyx_k_asynchronous), 0, 0, 1, 1}, -+ {&__pyx_n_s_atomic_request_ptr, __pyx_k_atomic_request_ptr, sizeof(__pyx_k_atomic_request_ptr), 0, 0, 1, 1}, -+ {&__pyx_n_s_audio_reconfig, __pyx_k_audio_reconfig, sizeof(__pyx_k_audio_reconfig), 0, 0, 1, 1}, -+ {&__pyx_n_s_author, __pyx_k_author, sizeof(__pyx_k_author), 0, 0, 1, 1}, -+ {&__pyx_n_s_block_for_target_time, __pyx_k_block_for_target_time, sizeof(__pyx_k_block_for_target_time), 0, 0, 1, 1}, -+ {&__pyx_n_s_block_vsync, __pyx_k_block_vsync, sizeof(__pyx_k_block_vsync), 0, 0, 1, 1}, -+ {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1}, -+ {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, -+ {&__pyx_n_s_client_message, __pyx_k_client_message, sizeof(__pyx_k_client_message), 0, 0, 1, 1}, -+ {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, -+ {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, -+ {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1}, -+ {&__pyx_n_s_command_error, __pyx_k_command_error, sizeof(__pyx_k_command_error), 0, 0, 1, 1}, -+ {&__pyx_n_s_command_reply, __pyx_k_command_reply, sizeof(__pyx_k_command_reply), 0, 0, 1, 1}, -+ {&__pyx_n_s_connector_id, __pyx_k_connector_id, sizeof(__pyx_k_connector_id), 0, 0, 1, 1}, -+ {&__pyx_n_s_counter, __pyx_k_counter, sizeof(__pyx_k_counter), 0, 0, 1, 1}, -+ {&__pyx_n_s_crtc_id, __pyx_k_crtc_id, sizeof(__pyx_k_crtc_id), 0, 0, 1, 1}, -+ {&__pyx_n_s_daemon, __pyx_k_daemon, sizeof(__pyx_k_daemon), 0, 0, 1, 1}, -+ {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, -+ {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1}, -+ {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, -+ {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1}, -+ {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1}, -+ {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, -+ {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, -+ {&__pyx_kp_s_drmModeAtomicReq, __pyx_k_drmModeAtomicReq, sizeof(__pyx_k_drmModeAtomicReq), 0, 0, 1, 0}, -+ {&__pyx_n_s_drm_display, __pyx_k_drm_display, sizeof(__pyx_k_drm_display), 0, 0, 1, 1}, -+ {&__pyx_n_s_drm_osd_size, __pyx_k_drm_osd_size, sizeof(__pyx_k_drm_osd_size), 0, 0, 1, 1}, -+ {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, -+ {&__pyx_n_s_e_i, __pyx_k_e_i, sizeof(__pyx_k_e_i), 0, 0, 1, 1}, -+ {&__pyx_n_s_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 0, 1, 1}, -+ {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, -+ {&__pyx_n_s_end_file, __pyx_k_end_file, sizeof(__pyx_k_end_file), 0, 0, 1, 1}, -+ {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, -+ {&__pyx_n_s_eof, __pyx_k_eof, sizeof(__pyx_k_eof), 0, 0, 1, 1}, -+ {&__pyx_n_s_err_c, __pyx_k_err_c, sizeof(__pyx_k_err_c), 0, 0, 1, 1}, -+ {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, -+ {&__pyx_n_s_errors, __pyx_k_errors, sizeof(__pyx_k_errors), 0, 0, 1, 1}, -+ {&__pyx_n_s_errors_locals_wrapped, __pyx_k_errors_locals_wrapped, sizeof(__pyx_k_errors_locals_wrapped), 0, 0, 1, 1}, -+ {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, -+ {&__pyx_n_s_fatal, __pyx_k_fatal, sizeof(__pyx_k_fatal), 0, 0, 1, 1}, -+ {&__pyx_n_s_fbo, __pyx_k_fbo, sizeof(__pyx_k_fbo), 0, 0, 1, 1}, -+ {&__pyx_n_s_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 0, 0, 1, 1}, -+ {&__pyx_n_s_file_loaded, __pyx_k_file_loaded, sizeof(__pyx_k_file_loaded), 0, 0, 1, 1}, -+ {&__pyx_n_s_flip_y, __pyx_k_flip_y, sizeof(__pyx_k_flip_y), 0, 0, 1, 1}, -+ {&__pyx_n_s_fn, __pyx_k_fn, sizeof(__pyx_k_fn), 0, 0, 1, 1}, -+ {&__pyx_n_s_format_for, __pyx_k_format_for, sizeof(__pyx_k_format_for), 0, 0, 1, 1}, -+ {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, -+ {&__pyx_n_s_get_proc_address, __pyx_k_get_proc_address, sizeof(__pyx_k_get_proc_address), 0, 0, 1, 1}, -+ {&__pyx_n_s_get_property, __pyx_k_get_property, sizeof(__pyx_k_get_property), 0, 0, 1, 1}, -+ {&__pyx_n_s_get_property_async, __pyx_k_get_property_async, sizeof(__pyx_k_get_property_async), 0, 0, 1, 1}, -+ {&__pyx_n_s_get_property_reply, __pyx_k_get_property_reply, sizeof(__pyx_k_get_property_reply), 0, 0, 1, 1}, -+ {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, -+ {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, -+ {&__pyx_kp_s_icc_blob_should_be_a_bytes_insta, __pyx_k_icc_blob_should_be_a_bytes_insta, sizeof(__pyx_k_icc_blob_should_be_a_bytes_insta), 0, 0, 1, 0}, -+ {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, -+ {&__pyx_n_s_idle, __pyx_k_idle, sizeof(__pyx_k_idle), 0, 0, 1, 1}, -+ {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, -+ {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1}, -+ {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, -+ {&__pyx_n_s_initialize, __pyx_k_initialize, sizeof(__pyx_k_initialize), 0, 0, 1, 1}, -+ {&__pyx_n_s_internal_format, __pyx_k_internal_format, sizeof(__pyx_k_internal_format), 0, 0, 1, 1}, -+ {&__pyx_n_s_invalid_parameter, __pyx_k_invalid_parameter, sizeof(__pyx_k_invalid_parameter), 0, 0, 1, 1}, -+ {&__pyx_n_s_is_py3, __pyx_k_is_py3, sizeof(__pyx_k_is_py3), 0, 0, 1, 1}, -+ {&__pyx_n_s_isshutdown, __pyx_k_isshutdown, sizeof(__pyx_k_isshutdown), 0, 0, 1, 1}, -+ {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1}, -+ {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1}, -+ {&__pyx_n_s_kw, __pyx_k_kw, sizeof(__pyx_k_kw), 0, 0, 1, 1}, -+ {&__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_k_libmpv_version_is_incorrect_Requ, sizeof(__pyx_k_libmpv_version_is_incorrect_Requ), 0, 0, 1, 0}, -+ {&__pyx_n_s_load_config, __pyx_k_load_config, sizeof(__pyx_k_load_config), 0, 0, 1, 1}, -+ {&__pyx_n_s_loading_failed, __pyx_k_loading_failed, sizeof(__pyx_k_loading_failed), 0, 0, 1, 1}, -+ {&__pyx_n_s_lock, __pyx_k_lock, sizeof(__pyx_k_lock), 0, 0, 1, 1}, -+ {&__pyx_n_s_log_message, __pyx_k_log_message, sizeof(__pyx_k_log_message), 0, 0, 1, 1}, -+ {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, -+ {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, -+ {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, -+ {&__pyx_n_s_mpv, __pyx_k_mpv, sizeof(__pyx_k_mpv), 0, 0, 1, 1}, -+ {&__pyx_n_s_mpv_callback, __pyx_k_mpv_callback, sizeof(__pyx_k_mpv_callback), 0, 0, 1, 1}, -+ {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, -+ {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, -+ {&__pyx_n_s_no, __pyx_k_no, sizeof(__pyx_k_no), 0, 0, 1, 1}, -+ {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, -+ {&__pyx_n_s_nomem, __pyx_k_nomem, sizeof(__pyx_k_nomem), 0, 0, 1, 1}, -+ {&__pyx_n_s_none, __pyx_k_none, sizeof(__pyx_k_none), 0, 0, 1, 1}, -+ {&__pyx_n_s_not_found, __pyx_k_not_found, sizeof(__pyx_k_not_found), 0, 0, 1, 1}, -+ {&__pyx_n_s_not_implemented, __pyx_k_not_implemented, sizeof(__pyx_k_not_implemented), 0, 0, 1, 1}, -+ {&__pyx_n_s_nothing_to_play, __pyx_k_nothing_to_play, sizeof(__pyx_k_nothing_to_play), 0, 0, 1, 1}, -+ {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1}, -+ {&__pyx_n_s_observe_property, __pyx_k_observe_property, sizeof(__pyx_k_observe_property), 0, 0, 1, 1}, -+ {&__pyx_n_s_observed, __pyx_k_observed, sizeof(__pyx_k_observed), 0, 0, 1, 1}, -+ {&__pyx_n_s_opengl, __pyx_k_opengl, sizeof(__pyx_k_opengl), 0, 0, 1, 1}, -+ {&__pyx_n_s_opengl_fbo, __pyx_k_opengl_fbo, sizeof(__pyx_k_opengl_fbo), 0, 0, 1, 1}, -+ {&__pyx_n_s_opengl_init_params, __pyx_k_opengl_init_params, sizeof(__pyx_k_opengl_init_params), 0, 0, 1, 1}, -+ {&__pyx_n_s_option_error, __pyx_k_option_error, sizeof(__pyx_k_option_error), 0, 0, 1, 1}, -+ {&__pyx_n_s_option_format, __pyx_k_option_format, sizeof(__pyx_k_option_format), 0, 0, 1, 1}, -+ {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, -+ {&__pyx_n_s_playback_restart, __pyx_k_playback_restart, sizeof(__pyx_k_playback_restart), 0, 0, 1, 1}, -+ {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, -+ {&__pyx_n_s_present, __pyx_k_present, sizeof(__pyx_k_present), 0, 0, 1, 1}, -+ {&__pyx_n_s_prop, __pyx_k_prop, sizeof(__pyx_k_prop), 0, 0, 1, 1}, -+ {&__pyx_n_s_property_change, __pyx_k_property_change, sizeof(__pyx_k_property_change), 0, 0, 1, 1}, -+ {&__pyx_n_s_property_error, __pyx_k_property_error, sizeof(__pyx_k_property_error), 0, 0, 1, 1}, -+ {&__pyx_n_s_property_format, __pyx_k_property_format, sizeof(__pyx_k_property_format), 0, 0, 1, 1}, -+ {&__pyx_n_s_property_unavailable, __pyx_k_property_unavailable, sizeof(__pyx_k_property_unavailable), 0, 0, 1, 1}, -+ {&__pyx_kp_s_pympv_error_during_callback_s, __pyx_k_pympv_error_during_callback_s, sizeof(__pyx_k_pympv_error_during_callback_s), 0, 0, 1, 0}, -+ {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_unpickle_EndOfFileReached, __pyx_k_pyx_unpickle_EndOfFileReached, sizeof(__pyx_k_pyx_unpickle_EndOfFileReached), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_unpickle_Event, __pyx_k_pyx_unpickle_Event, sizeof(__pyx_k_pyx_unpickle_Event), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_unpickle_LogMessage, __pyx_k_pyx_unpickle_LogMessage, sizeof(__pyx_k_pyx_unpickle_LogMessage), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_unpickle_Property, __pyx_k_pyx_unpickle_Property, sizeof(__pyx_k_pyx_unpickle_Property), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_unpickle_RenderFrameInfo, __pyx_k_pyx_unpickle_RenderFrameInfo, sizeof(__pyx_k_pyx_unpickle_RenderFrameInfo), 0, 0, 1, 1}, -+ {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, -+ {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, -+ {&__pyx_n_s_queue_full, __pyx_k_queue_full, sizeof(__pyx_k_queue_full), 0, 0, 1, 1}, -+ {&__pyx_n_s_quit, __pyx_k_quit, sizeof(__pyx_k_quit), 0, 0, 1, 1}, -+ {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, -+ {&__pyx_n_s_redraw, __pyx_k_redraw, sizeof(__pyx_k_redraw), 0, 0, 1, 1}, -+ {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, -+ {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, -+ {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, -+ {&__pyx_n_s_release, __pyx_k_release, sizeof(__pyx_k_release), 0, 0, 1, 1}, -+ {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1}, -+ {&__pyx_n_s_render, __pyx_k_render, sizeof(__pyx_k_render), 0, 0, 1, 1}, -+ {&__pyx_n_s_render_fd, __pyx_k_render_fd, sizeof(__pyx_k_render_fd), 0, 0, 1, 1}, -+ {&__pyx_n_s_repeat, __pyx_k_repeat, sizeof(__pyx_k_repeat), 0, 0, 1, 1}, -+ {&__pyx_n_s_request_event, __pyx_k_request_event, sizeof(__pyx_k_request_event), 0, 0, 1, 1}, -+ {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1}, -+ {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1}, -+ {&__pyx_n_s_seek, __pyx_k_seek, sizeof(__pyx_k_seek), 0, 0, 1, 1}, -+ {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, -+ {&__pyx_kp_s_self__ctx_cannot_be_converted_to, __pyx_k_self__ctx_cannot_be_converted_to, sizeof(__pyx_k_self__ctx_cannot_be_converted_to), 0, 0, 1, 0}, -+ {&__pyx_kp_s_self_params_cannot_be_converted, __pyx_k_self_params_cannot_be_converted, sizeof(__pyx_k_self_params_cannot_be_converted), 0, 0, 1, 0}, -+ {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1}, -+ {&__pyx_n_s_set_ambient_light, __pyx_k_set_ambient_light, sizeof(__pyx_k_set_ambient_light), 0, 0, 1, 1}, -+ {&__pyx_n_s_set_icc_profile, __pyx_k_set_icc_profile, sizeof(__pyx_k_set_icc_profile), 0, 0, 1, 1}, -+ {&__pyx_n_s_set_log_level, __pyx_k_set_log_level, sizeof(__pyx_k_set_log_level), 0, 0, 1, 1}, -+ {&__pyx_n_s_set_option, __pyx_k_set_option, sizeof(__pyx_k_set_option), 0, 0, 1, 1}, -+ {&__pyx_n_s_set_property, __pyx_k_set_property, sizeof(__pyx_k_set_property), 0, 0, 1, 1}, -+ {&__pyx_n_s_set_property_reply, __pyx_k_set_property_reply, sizeof(__pyx_k_set_property_reply), 0, 0, 1, 1}, -+ {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, -+ {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, -+ {&__pyx_n_s_shutdown, __pyx_k_shutdown, sizeof(__pyx_k_shutdown), 0, 0, 1, 1}, -+ {&__pyx_n_s_skip_rendering, __pyx_k_skip_rendering, sizeof(__pyx_k_skip_rendering), 0, 0, 1, 1}, -+ {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, -+ {&__pyx_n_s_start_file, __pyx_k_start_file, sizeof(__pyx_k_start_file), 0, 0, 1, 1}, -+ {&__pyx_n_s_stderr, __pyx_k_stderr, sizeof(__pyx_k_stderr), 0, 0, 1, 1}, -+ {&__pyx_n_s_strdec, __pyx_k_strdec, sizeof(__pyx_k_strdec), 0, 0, 1, 1}, -+ {&__pyx_n_s_strdec_err, __pyx_k_strdec_err, sizeof(__pyx_k_strdec_err), 0, 0, 1, 1}, -+ {&__pyx_n_s_strenc, __pyx_k_strenc, sizeof(__pyx_k_strenc), 0, 0, 1, 1}, -+ {&__pyx_n_s_strict, __pyx_k_strict, sizeof(__pyx_k_strict), 0, 0, 1, 1}, -+ {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, -+ {&__pyx_n_s_success, __pyx_k_success, sizeof(__pyx_k_success), 0, 0, 1, 1}, -+ {&__pyx_n_s_surrogateescape, __pyx_k_surrogateescape, sizeof(__pyx_k_surrogateescape), 0, 0, 1, 1}, -+ {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, -+ {&__pyx_n_s_target_time, __pyx_k_target_time, sizeof(__pyx_k_target_time), 0, 0, 1, 1}, -+ {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, -+ {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1}, -+ {&__pyx_n_s_tick, __pyx_k_tick, sizeof(__pyx_k_tick), 0, 0, 1, 1}, -+ {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, -+ {&__pyx_n_s_trace, __pyx_k_trace, sizeof(__pyx_k_trace), 0, 0, 1, 1}, -+ {&__pyx_n_s_uninitialized, __pyx_k_uninitialized, sizeof(__pyx_k_uninitialized), 0, 0, 1, 1}, -+ {&__pyx_n_s_unknown_format, __pyx_k_unknown_format, sizeof(__pyx_k_unknown_format), 0, 0, 1, 1}, -+ {&__pyx_n_s_unobserve_property, __pyx_k_unobserve_property, sizeof(__pyx_k_unobserve_property), 0, 0, 1, 1}, -+ {&__pyx_n_s_unsupported, __pyx_k_unsupported, sizeof(__pyx_k_unsupported), 0, 0, 1, 1}, -+ {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, -+ {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0}, -+ {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1}, -+ {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, -+ {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1}, -+ {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1}, -+ {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1}, -+ {&__pyx_n_s_vidcutter_libs_mpv, __pyx_k_vidcutter_libs_mpv, sizeof(__pyx_k_vidcutter_libs_mpv), 0, 0, 1, 1}, -+ {&__pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_k_vidcutter_libs_pympv_mpv_pyx, sizeof(__pyx_k_vidcutter_libs_pympv_mpv_pyx), 0, 0, 1, 0}, -+ {&__pyx_n_s_video_reconfig, __pyx_k_video_reconfig, sizeof(__pyx_k_video_reconfig), 0, 0, 1, 1}, -+ {&__pyx_n_s_vo_init_failed, __pyx_k_vo_init_failed, sizeof(__pyx_k_vo_init_failed), 0, 0, 1, 1}, -+ {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1}, -+ {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1}, -+ {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1}, -+ {&__pyx_n_s_wl_display, __pyx_k_wl_display, sizeof(__pyx_k_wl_display), 0, 0, 1, 1}, -+ {&__pyx_n_s_wrapped, __pyx_k_wrapped, sizeof(__pyx_k_wrapped), 0, 0, 1, 1}, -+ {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1}, -+ {&__pyx_n_s_x11_display, __pyx_k_x11_display, sizeof(__pyx_k_x11_display), 0, 0, 1, 1}, -+ {0, 0, 0, 0, 0, 0, 0} -+}; -+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { -+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 44, __pyx_L1_error) -+ __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 346, __pyx_L1_error) -+ __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(0, 58, __pyx_L1_error) -+ __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(0, 66, __pyx_L1_error) -+ __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 222, __pyx_L1_error) -+ __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 303, __pyx_L1_error) -+ __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 475, __pyx_L1_error) -+ __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) -+ return 0; -+ __pyx_L1_error:; -+ return -1; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":22 -+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":319 - * -- * import cython -- * import sys, warnings # <<<<<<<<<<<<<< -- * from threading import Thread, Semaphore -- * from libc.stdlib cimport malloc, free -+ * def _errors(fn): -+ * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -+ * v = fn(*k, **kw) -+ * if v < 0: - */ -- __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 22, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_Import(__pyx_n_s_warnings, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_1) < 0) __PYX_ERR(0, 22, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_tuple_ = PyTuple_Pack(3, __pyx_n_s_k, __pyx_n_s_kw, __pyx_n_s_v); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 319, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple_); -+ __Pyx_GIVEREF(__pyx_tuple_); -+ __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_wrapped, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 319, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":23 -- * import cython -- * import sys, warnings -- * from threading import Thread, Semaphore # <<<<<<<<<<<<<< -- * from libc.stdlib cimport malloc, free -- * from libc.string cimport strcpy, strlen, memset -+ /* "(tree fragment)":2 -+ * def __reduce_cython__(self): -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") - */ -- __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_INCREF(__pyx_n_s_Thread); -- __Pyx_GIVEREF(__pyx_n_s_Thread); -- PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Thread); -- __Pyx_INCREF(__pyx_n_s_Semaphore); -- __Pyx_GIVEREF(__pyx_n_s_Semaphore); -- PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_Semaphore); -- __pyx_t_2 = __Pyx_Import(__pyx_n_s_threading, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Thread, __pyx_t_1) < 0) __PYX_ERR(0, 23, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Semaphore, __pyx_t_1) < 0) __PYX_ERR(0, 23, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 2, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__3); -+ __Pyx_GIVEREF(__pyx_tuple__3); - -- /* "vidcutter/libs/pympv/mpv.pyx":30 -- * from client cimport * -- * -- * __version__ = "0.3.0" # <<<<<<<<<<<<<< -- * __author__ = "Andre D" -- * -+ /* "(tree fragment)":4 -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< - */ -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_s_0_3_0) < 0) __PYX_ERR(0, 30, __pyx_L1_error) -+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 4, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__4); -+ __Pyx_GIVEREF(__pyx_tuple__4); - -- /* "vidcutter/libs/pympv/mpv.pyx":31 -- * -- * __version__ = "0.3.0" -- * __author__ = "Andre D" # <<<<<<<<<<<<<< -- * -- * _REQUIRED_CAPI_MAJOR = 1 -+ /* "(tree fragment)":2 -+ * def __reduce_cython__(self): -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") - */ -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Andre_D) < 0) __PYX_ERR(0, 31, __pyx_L1_error) -+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_self_params_cannot_be_converted); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 2, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__5); -+ __Pyx_GIVEREF(__pyx_tuple__5); - -- /* "vidcutter/libs/pympv/mpv.pyx":33 -- * __author__ = "Andre D" -- * -- * _REQUIRED_CAPI_MAJOR = 1 # <<<<<<<<<<<<<< -- * _MIN_CAPI_MINOR = 9 -- * -+ /* "(tree fragment)":4 -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self.params cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_int_1) < 0) __PYX_ERR(0, 33, __pyx_L1_error) -+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_self_params_cannot_be_converted); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 4, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__6); -+ __Pyx_GIVEREF(__pyx_tuple__6); - -- /* "vidcutter/libs/pympv/mpv.pyx":34 -- * -- * _REQUIRED_CAPI_MAJOR = 1 -- * _MIN_CAPI_MINOR = 9 # <<<<<<<<<<<<<< -- * -- * cdef unsigned long _CAPI_VERSION -+ /* "vidcutter/libs/pympv/mpv.pyx":992 -+ * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) -+ * if drm_display: -+ * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) -+ * drm_params.connector_id = drm_display.get("connector_id", -1) - */ -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MIN_CAPI_MINOR, __pyx_int_9) < 0) __PYX_ERR(0, 34, __pyx_L1_error) -+ __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 992, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__7); -+ __Pyx_GIVEREF(__pyx_tuple__7); - -- /* "vidcutter/libs/pympv/mpv.pyx":37 -- * -- * cdef unsigned long _CAPI_VERSION -- * with nogil: # <<<<<<<<<<<<<< -- * _CAPI_VERSION = mpv_client_api_version() -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":993 -+ * if drm_display: -+ * drm_params.fd = drm_display.get("fd", -1) -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< -+ * drm_params.connector_id = drm_display.get("connector_id", -1) -+ * arp = drm_display.get("atomic_request_ptr", None) - */ -- { -- #ifdef WITH_THREAD -- PyThreadState *_save; -- Py_UNBLOCK_THREADS -- __Pyx_FastGIL_Remember(); -- #endif -- /*try:*/ { -+ __pyx_tuple__8 = PyTuple_Pack(2, __pyx_n_s_crtc_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 993, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__8); -+ __Pyx_GIVEREF(__pyx_tuple__8); - -- /* "vidcutter/libs/pympv/mpv.pyx":38 -- * cdef unsigned long _CAPI_VERSION -- * with nogil: -- * _CAPI_VERSION = mpv_client_api_version() # <<<<<<<<<<<<<< -- * -- * _CAPI_MAJOR = _CAPI_VERSION >> 16 -+ /* "vidcutter/libs/pympv/mpv.pyx":994 -+ * drm_params.fd = drm_display.get("fd", -1) -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) -+ * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< -+ * arp = drm_display.get("atomic_request_ptr", None) -+ * if arp is not None: - */ -- __pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION = mpv_client_api_version(); -- } -+ __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_s_connector_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 994, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__9); -+ __Pyx_GIVEREF(__pyx_tuple__9); - -- /* "vidcutter/libs/pympv/mpv.pyx":37 -- * -- * cdef unsigned long _CAPI_VERSION -- * with nogil: # <<<<<<<<<<<<<< -- * _CAPI_VERSION = mpv_client_api_version() -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":995 -+ * drm_params.crtc_id = drm_display.get("crtc_id", -1) -+ * drm_params.connector_id = drm_display.get("connector_id", -1) -+ * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< -+ * if arp is not None: -+ * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") - */ -- /*finally:*/ { -- /*normal exit:*/{ -- #ifdef WITH_THREAD -- __Pyx_FastGIL_Forget(); -- Py_BLOCK_THREADS -- #endif -- goto __pyx_L4; -- } -- __pyx_L4:; -- } -- } -+ __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_atomic_request_ptr, Py_None); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 995, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__10); -+ __Pyx_GIVEREF(__pyx_tuple__10); - -- /* "vidcutter/libs/pympv/mpv.pyx":40 -- * _CAPI_VERSION = mpv_client_api_version() -- * -- * _CAPI_MAJOR = _CAPI_VERSION >> 16 # <<<<<<<<<<<<<< -- * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":998 -+ * if arp is not None: -+ * 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: - */ -- __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION >> 16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MAJOR, __pyx_t_2) < 0) __PYX_ERR(0, 40, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_render_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 998, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__11); -+ __Pyx_GIVEREF(__pyx_tuple__11); - -- /* "vidcutter/libs/pympv/mpv.pyx":41 -- * -- * _CAPI_MAJOR = _CAPI_VERSION >> 16 -- * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF # <<<<<<<<<<<<<< -- * -- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: -+ /* "vidcutter/libs/pympv/mpv.pyx":1083 -+ * if opengl_fbo: -+ * memset(&fbo, 0, sizeof(fbo)) -+ * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< -+ * fbo.w = opengl_fbo["w"] -+ * fbo.h = opengl_fbo["h"] - */ -- __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION & 0xFFFF)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MINOR, __pyx_t_2) < 0) __PYX_ERR(0, 41, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_fbo, __pyx_int_0); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1083, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__12); -+ __Pyx_GIVEREF(__pyx_tuple__12); - -- /* "vidcutter/libs/pympv/mpv.pyx":43 -- * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF -- * -- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< -- * raise ImportError( -- * "libmpv version is incorrect. Required %d.%d got %d.%d." % -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (!__pyx_t_5) { -- } else { -- __pyx_t_3 = __pyx_t_5; -- goto __pyx_L6_bool_binop_done; -- } -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_3 = __pyx_t_5; -- __pyx_L6_bool_binop_done:; -- if (unlikely(__pyx_t_3)) { -+ /* "vidcutter/libs/pympv/mpv.pyx":1086 -+ * fbo.w = opengl_fbo["w"] -+ * fbo.h = opengl_fbo["h"] -+ * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< -+ * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) -+ * if flip_y: -+ */ -+ __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_internal_format, __pyx_int_0); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 1086, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__13); -+ __Pyx_GIVEREF(__pyx_tuple__13); - -- /* "vidcutter/libs/pympv/mpv.pyx":46 -- * raise ImportError( -- * "libmpv version is incorrect. Required %d.%d got %d.%d." % -- * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) # <<<<<<<<<<<<<< -- * ) -- * -+ /* "(tree fragment)":2 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_2); -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 46, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 46, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_GIVEREF(__pyx_t_2); -- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); -- __Pyx_GIVEREF(__pyx_t_1); -- PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1); -- __Pyx_GIVEREF(__pyx_t_4); -- PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_4); -- __Pyx_GIVEREF(__pyx_t_6); -- PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6); -- __pyx_t_2 = 0; -- __pyx_t_1 = 0; -- __pyx_t_4 = 0; -- __pyx_t_6 = 0; -+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 2, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__14); -+ __Pyx_GIVEREF(__pyx_tuple__14); - -- /* "vidcutter/libs/pympv/mpv.pyx":45 -- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: -- * raise ImportError( -- * "libmpv version is incorrect. Required %d.%d got %d.%d." % # <<<<<<<<<<<<<< -- * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) -- * ) -+ /* "(tree fragment)":4 -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ -- __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 45, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 4, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__15); -+ __Pyx_GIVEREF(__pyx_tuple__15); - -- /* "vidcutter/libs/pympv/mpv.pyx":44 -- * -- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: -- * raise ImportError( # <<<<<<<<<<<<<< -- * "libmpv version is incorrect. Required %d.%d got %d.%d." % -- * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) -+ /* "(tree fragment)":2 -+ * def __reduce_cython__(self): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") - */ -- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ImportError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 44, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_Raise(__pyx_t_7, 0, 0, 0); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __PYX_ERR(0, 44, __pyx_L1_error) -+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 2, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__16); -+ __Pyx_GIVEREF(__pyx_tuple__16); - -- /* "vidcutter/libs/pympv/mpv.pyx":43 -- * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF -- * -- * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< -- * raise ImportError( -- * "libmpv version is incorrect. Required %d.%d got %d.%d." % -+ /* "(tree fragment)":4 -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") -+ * def __setstate_cython__(self, __pyx_state): -+ * raise TypeError("self._ctx cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ -- } -+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_self__ctx_cannot_be_converted_to); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 4, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__17); -+ __Pyx_GIVEREF(__pyx_tuple__17); - - /* "vidcutter/libs/pympv/mpv.pyx":52 -- * void PyEval_InitThreads() -+ * void Py_Initialize() - * - * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< - * _strdec_err = "surrogateescape" if _is_py3 else "strict" - * # mpv -> Python - */ -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_version_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 52, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_tuple__21, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_py3, __pyx_t_7) < 0) __PYX_ERR(0, 52, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":53 -- * -- * _is_py3 = sys.version_info >= (3,) -- * _strdec_err = "surrogateescape" if _is_py3 else "strict" # <<<<<<<<<<<<<< -- * # mpv -> Python -- * def _strdec(s): -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_py3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (__pyx_t_3) { -- __Pyx_INCREF(__pyx_n_s_surrogateescape); -- __pyx_t_7 = __pyx_n_s_surrogateescape; -- } else { -- __Pyx_INCREF(__pyx_n_s_strict); -- __pyx_t_7 = __pyx_n_s_strict; -- } -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec_err, __pyx_t_7) < 0) __PYX_ERR(0, 53, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 52, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__18); -+ __Pyx_GIVEREF(__pyx_tuple__18); - - /* "vidcutter/libs/pympv/mpv.pyx":55 - * _strdec_err = "surrogateescape" if _is_py3 else "strict" -@@ -28564,10 +24644,10 @@ if (!__Pyx_RefNanny) { - * try: - * return s.decode("utf-8", _strdec_err) - */ -- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_1_strdec, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 55, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec, __pyx_t_7) < 0) __PYX_ERR(0, 55, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 55, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__19); -+ __Pyx_GIVEREF(__pyx_tuple__19); -+ __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strdec, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 55, __pyx_L1_error) - - /* "vidcutter/libs/pympv/mpv.pyx":63 - * -@@ -28576,5040 +24656,5555 @@ if (!__Pyx_RefNanny) { - * try: - * return s.encode("utf-8", _strdec_err) - */ -- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_3_strenc, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strenc, __pyx_t_7) < 0) __PYX_ERR(0, 63, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 63, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__21); -+ __Pyx_GIVEREF(__pyx_tuple__21); -+ __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strenc, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 63, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":70 -- * return s -+ /* "vidcutter/libs/pympv/mpv.pyx":318 - * -- * PyEval_InitThreads() # <<<<<<<<<<<<<< - * -- * class Errors: -+ * def _errors(fn): # <<<<<<<<<<<<<< -+ * def wrapped(*k, **kw): -+ * v = fn(*k, **kw) - */ -- PyEval_InitThreads(); -+ __pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_fn, __pyx_n_s_wrapped, __pyx_n_s_wrapped); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 318, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__23); -+ __Pyx_GIVEREF(__pyx_tuple__23); -+ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_errors, 318, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 318, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":72 -- * PyEval_InitThreads() -+ /* "vidcutter/libs/pympv/mpv.pyx":329 -+ * code = None - * -- * class Errors: # <<<<<<<<<<<<<< -- * """Set of known error codes from MpvError and Event responses. -+ * def __init__(self, e): # <<<<<<<<<<<<<< -+ * self.code = e -+ * cdef const char* err_c -+ */ -+ __pyx_tuple__25 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_e, __pyx_n_s_err_c, __pyx_n_s_e_i); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 329, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__25); -+ __Pyx_GIVEREF(__pyx_tuple__25); -+ __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 329, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":346 -+ * cdef _reply_userdatas = dict() - * -+ * class _ReplyUserData(object): # <<<<<<<<<<<<<< -+ * def __init__(self, data): -+ * self.counter = 0 - */ -- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Errors, __pyx_n_s_Errors, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_error_codes_from_Mp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 72, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 346, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__27); -+ __Pyx_GIVEREF(__pyx_tuple__27); - -- /* "vidcutter/libs/pympv/mpv.pyx":79 -- * You should handle the possibility that error codes may not be any of these values. -- * """ -- * success = MPV_ERROR_SUCCESS # <<<<<<<<<<<<<< -- * queue_full = MPV_ERROR_EVENT_QUEUE_FULL -- * nomem = MPV_ERROR_NOMEM -+ /* "vidcutter/libs/pympv/mpv.pyx":347 -+ * -+ * class _ReplyUserData(object): -+ * def __init__(self, data): # <<<<<<<<<<<<<< -+ * self.counter = 0 -+ * self.data = data - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_SUCCESS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_success, __pyx_t_6) < 0) __PYX_ERR(0, 79, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 347, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__28); -+ __Pyx_GIVEREF(__pyx_tuple__28); -+ __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 347, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":80 -- * """ -- * success = MPV_ERROR_SUCCESS -- * queue_full = MPV_ERROR_EVENT_QUEUE_FULL # <<<<<<<<<<<<<< -- * nomem = MPV_ERROR_NOMEM -- * uninitialized = MPV_ERROR_UNINITIALIZED -+ /* "vidcutter/libs/pympv/mpv.pyx":352 -+ * self.observed = False -+ * -+ * def add(self): # <<<<<<<<<<<<<< -+ * self.counter += 1 -+ * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_EVENT_QUEUE_FULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_full, __pyx_t_6) < 0) __PYX_ERR(0, 80, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 352, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__30); -+ __Pyx_GIVEREF(__pyx_tuple__30); -+ __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_add, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 352, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":81 -- * success = MPV_ERROR_SUCCESS -- * queue_full = MPV_ERROR_EVENT_QUEUE_FULL -- * nomem = MPV_ERROR_NOMEM # <<<<<<<<<<<<<< -- * uninitialized = MPV_ERROR_UNINITIALIZED -- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER -+ /* "vidcutter/libs/pympv/mpv.pyx":355 -+ * self.counter += 1 -+ * -+ * def remove(self): # <<<<<<<<<<<<<< -+ * self.counter -= 1 -+ * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOMEM); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nomem, __pyx_t_6) < 0) __PYX_ERR(0, 81, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 355, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__32); -+ __Pyx_GIVEREF(__pyx_tuple__32); -+ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_remove, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 355, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":82 -- * queue_full = MPV_ERROR_EVENT_QUEUE_FULL -- * nomem = MPV_ERROR_NOMEM -- * uninitialized = MPV_ERROR_UNINITIALIZED # <<<<<<<<<<<<<< -- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER -- * not_found = MPV_ERROR_OPTION_NOT_FOUND -+ /* "vidcutter/libs/pympv/mpv.pyx":1133 -+ * -+ * class CallbackThread(Thread): -+ * def __init__(self): # <<<<<<<<<<<<<< -+ * Thread.__init__(self) -+ * self.daemon = True - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNINITIALIZED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_uninitialized, __pyx_t_6) < 0) __PYX_ERR(0, 82, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1133, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__34); -+ __Pyx_GIVEREF(__pyx_tuple__34); -+ __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 1133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1133, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":83 -- * nomem = MPV_ERROR_NOMEM -- * uninitialized = MPV_ERROR_UNINITIALIZED -- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER # <<<<<<<<<<<<<< -- * not_found = MPV_ERROR_OPTION_NOT_FOUND -- * option_format = MPV_ERROR_OPTION_FORMAT -+ /* "vidcutter/libs/pympv/mpv.pyx":1141 -+ * self.isshutdown = False -+ * -+ * def shutdown(self): # <<<<<<<<<<<<<< -+ * self.isshutdown = True -+ * self.callback = None - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_INVALID_PARAMETER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_parameter, __pyx_t_6) < 0) __PYX_ERR(0, 83, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1141, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__36); -+ __Pyx_GIVEREF(__pyx_tuple__36); -+ __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_shutdown, 1141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1141, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":84 -- * uninitialized = MPV_ERROR_UNINITIALIZED -- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER -- * not_found = MPV_ERROR_OPTION_NOT_FOUND # <<<<<<<<<<<<<< -- * option_format = MPV_ERROR_OPTION_FORMAT -- * option_error = MPV_ERROR_OPTION_ERROR -+ /* "vidcutter/libs/pympv/mpv.pyx":1146 -+ * self.lock.release() -+ * -+ * def call(self): # <<<<<<<<<<<<<< -+ * self.lock.release() -+ * -+ */ -+ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1146, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__38); -+ __Pyx_GIVEREF(__pyx_tuple__38); -+ __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_call, 1146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1146, __pyx_L1_error) -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1149 -+ * self.lock.release() -+ * -+ * def set(self, callback): # <<<<<<<<<<<<<< -+ * self.callback = callback -+ * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 84, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 1149, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__40); -+ __Pyx_GIVEREF(__pyx_tuple__40); -+ __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_set, 1149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 1149, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":85 -- * invalid_parameter = MPV_ERROR_INVALID_PARAMETER -- * not_found = MPV_ERROR_OPTION_NOT_FOUND -- * option_format = MPV_ERROR_OPTION_FORMAT # <<<<<<<<<<<<<< -- * option_error = MPV_ERROR_OPTION_ERROR -- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND -+ /* "vidcutter/libs/pympv/mpv.pyx":1152 -+ * self.callback = callback -+ * -+ * def run(self): # <<<<<<<<<<<<<< -+ * while not self.isshutdown: -+ * self.lock.acquire(True) - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_format, __pyx_t_6) < 0) __PYX_ERR(0, 85, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1152, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__42); -+ __Pyx_GIVEREF(__pyx_tuple__42); -+ __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_run, 1152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 1152, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":86 -- * not_found = MPV_ERROR_OPTION_NOT_FOUND -- * option_format = MPV_ERROR_OPTION_FORMAT -- * option_error = MPV_ERROR_OPTION_ERROR # <<<<<<<<<<<<<< -- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND -- * property_format = MPV_ERROR_PROPERTY_FORMAT -+ /* "vidcutter/libs/pympv/mpv.pyx":1157 -+ * self.mpv_callback(self.callback) if self.callback else None -+ * -+ * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -+ * try: -+ * callback() - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_error, __pyx_t_6) < 0) __PYX_ERR(0, 86, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_tuple__44 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_callback, __pyx_n_s_e); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1157, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__44); -+ __Pyx_GIVEREF(__pyx_tuple__44); -+ __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_mpv_callback, 1157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 1157, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":87 -- * option_format = MPV_ERROR_OPTION_FORMAT -- * option_error = MPV_ERROR_OPTION_ERROR -- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND # <<<<<<<<<<<<<< -- * property_format = MPV_ERROR_PROPERTY_FORMAT -- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE -+ /* "(tree fragment)":1 -+ * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 87, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_tuple__46 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__46); -+ __Pyx_GIVEREF(__pyx_tuple__46); -+ __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_EndOfFileReached, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __pyx_tuple__48 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__48); -+ __Pyx_GIVEREF(__pyx_tuple__48); -+ __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_LogMessage, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __pyx_tuple__50 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__50); -+ __Pyx_GIVEREF(__pyx_tuple__50); -+ __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Property, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __pyx_tuple__52 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__52); -+ __Pyx_GIVEREF(__pyx_tuple__52); -+ __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Event, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __pyx_tuple__54 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_tuple__54); -+ __Pyx_GIVEREF(__pyx_tuple__54); -+ __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_RenderFrameInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+ __pyx_L1_error:; -+ __Pyx_RefNannyFinishContext(); -+ return -1; -+} -+ -+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { -+ if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); -+ __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_32 = PyInt_FromLong(32); if (unlikely(!__pyx_int_32)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_5713169 = PyInt_FromLong(5713169L); if (unlikely(!__pyx_int_5713169)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_90958262 = PyInt_FromLong(90958262L); if (unlikely(!__pyx_int_90958262)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_142036910 = PyInt_FromLong(142036910L); if (unlikely(!__pyx_int_142036910)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_222419149 = PyInt_FromLong(222419149L); if (unlikely(!__pyx_int_222419149)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_228822053 = PyInt_FromLong(228822053L); if (unlikely(!__pyx_int_228822053)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) -+ return 0; -+ __pyx_L1_error:; -+ return -1; -+} -+ -+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ -+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ -+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ -+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ -+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ -+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ -+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ -+ -+static int __Pyx_modinit_global_init_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); -+ /*--- Global init code ---*/ -+ __pyx_v_9vidcutter_4libs_3mpv__callbacks = Py_None; Py_INCREF(Py_None); -+ __pyx_v_9vidcutter_4libs_3mpv__reply_userdatas = Py_None; Py_INCREF(Py_None); -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} -+ -+static int __Pyx_modinit_variable_export_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); -+ /*--- Variable export code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} -+ -+static int __Pyx_modinit_function_export_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); -+ /*--- Function export code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} -+ -+static int __Pyx_modinit_type_init_code(void) { -+ __Pyx_RefNannyDeclarations -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); -+ /*--- Type init code ---*/ -+ __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; -+ __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *, struct mpv_event_end_file *))__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro = __Pyx_PyObject_GenericGetAttr; -+ } -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_EndOfFileReached, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -+ __pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached; -+ __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage = &__pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; -+ __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *, struct mpv_event_log_message *))__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro = __Pyx_PyObject_GenericGetAttr; -+ } -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LogMessage, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -+ __pyx_ptype_9vidcutter_4libs_3mpv_LogMessage = &__pyx_type_9vidcutter_4libs_3mpv_LogMessage; -+ __pyx_vtabptr_9vidcutter_4libs_3mpv_Property = &__pyx_vtable_9vidcutter_4libs_3mpv_Property; -+ __pyx_vtable_9vidcutter_4libs_3mpv_Property._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *, struct mpv_event_property *))__pyx_f_9vidcutter_4libs_3mpv_8Property__init; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv_Property.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro = __Pyx_PyObject_GenericGetAttr; -+ } -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Property, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -+ __pyx_ptype_9vidcutter_4libs_3mpv_Property = &__pyx_type_9vidcutter_4libs_3mpv_Property; -+ __pyx_vtabptr_9vidcutter_4libs_3mpv_Event = &__pyx_vtable_9vidcutter_4libs_3mpv_Event; -+ __pyx_vtable_9vidcutter_4libs_3mpv_Event._data = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *))__pyx_f_9vidcutter_4libs_3mpv_5Event__data; -+ __pyx_vtable_9vidcutter_4libs_3mpv_Event._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_5Event__init; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv_Event.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro = __Pyx_PyObject_GenericGetAttr; -+ } -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Event, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -+ __pyx_ptype_9vidcutter_4libs_3mpv_Event = &__pyx_type_9vidcutter_4libs_3mpv_Event; -+ __pyx_vtabptr_9vidcutter_4libs_3mpv_Context = &__pyx_vtable_9vidcutter_4libs_3mpv_Context; -+ __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_list = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list; -+ __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_map = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map; -+ __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_native_value = (struct mpv_node (*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value; -+ __pyx_vtable_9vidcutter_4libs_3mpv_Context._free_native_value = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, struct mpv_node))__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv_Context.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro = __Pyx_PyObject_GenericGetAttr; -+ } -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Context, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -+ __pyx_ptype_9vidcutter_4libs_3mpv_Context = &__pyx_type_9vidcutter_4libs_3mpv_Context; -+ __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams = &__pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; -+ __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_voidp = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, void *, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp; -+ __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_int = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, int))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int; -+ __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_string = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, char *))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro = __Pyx_PyObject_GenericGetAttr; -+ } -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderParams, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -+ __pyx_ptype_9vidcutter_4libs_3mpv__RenderParams = &__pyx_type_9vidcutter_4libs_3mpv__RenderParams; -+ __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; -+ __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo._from_struct = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *, struct mpv_render_frame_info *))__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro = __Pyx_PyObject_GenericGetAttr; -+ } -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) -+ __pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; -+ } -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) -+ __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext = &__pyx_type_9vidcutter_4libs_3mpv_RenderContext; -+ __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_base = __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; -+ } -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLRenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) -+ __pyx_ptype_9vidcutter_4libs_3mpv_OpenGLRenderContext = &__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext; -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors) < 0) __PYX_ERR(0, 318, __pyx_L1_error) -+ #if PY_VERSION_HEX < 0x030800B1 -+ __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_print = 0; -+ #endif -+ if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_getattro == PyObject_GenericGetAttr)) { -+ __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; -+ } -+ __pyx_ptype_9vidcutter_4libs_3mpv___pyx_scope_struct___errors = &__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors; -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+ __pyx_L1_error:; -+ __Pyx_RefNannyFinishContext(); -+ return -1; -+} -+ -+static int __Pyx_modinit_type_import_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); -+ /*--- Type import code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":88 -- * option_error = MPV_ERROR_OPTION_ERROR -- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND -- * property_format = MPV_ERROR_PROPERTY_FORMAT # <<<<<<<<<<<<<< -- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE -- * property_error = MPV_ERROR_PROPERTY_ERROR -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 88, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_format, __pyx_t_6) < 0) __PYX_ERR(0, 88, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+static int __Pyx_modinit_variable_import_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); -+ /*--- Variable import code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":89 -- * not_found = MPV_ERROR_PROPERTY_NOT_FOUND -- * property_format = MPV_ERROR_PROPERTY_FORMAT -- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE # <<<<<<<<<<<<<< -- * property_error = MPV_ERROR_PROPERTY_ERROR -- * command_error = MPV_ERROR_COMMAND -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_UNAVAILABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_unavailable, __pyx_t_6) < 0) __PYX_ERR(0, 89, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+static int __Pyx_modinit_function_import_code(void) { -+ __Pyx_RefNannyDeclarations -+ __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); -+ /*--- Function import code ---*/ -+ __Pyx_RefNannyFinishContext(); -+ return 0; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":90 -- * property_format = MPV_ERROR_PROPERTY_FORMAT -- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE -- * property_error = MPV_ERROR_PROPERTY_ERROR # <<<<<<<<<<<<<< -- * command_error = MPV_ERROR_COMMAND -- * loading_failed = MPV_ERROR_LOADING_FAILED -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_error, __pyx_t_6) < 0) __PYX_ERR(0, 90, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":91 -- * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE -- * property_error = MPV_ERROR_PROPERTY_ERROR -- * command_error = MPV_ERROR_COMMAND # <<<<<<<<<<<<<< -- * loading_failed = MPV_ERROR_LOADING_FAILED -- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_COMMAND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_error, __pyx_t_6) < 0) __PYX_ERR(0, 91, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+#ifndef CYTHON_NO_PYINIT_EXPORT -+#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -+#elif PY_MAJOR_VERSION < 3 -+#ifdef __cplusplus -+#define __Pyx_PyMODINIT_FUNC extern "C" void -+#else -+#define __Pyx_PyMODINIT_FUNC void -+#endif -+#else -+#ifdef __cplusplus -+#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * -+#else -+#define __Pyx_PyMODINIT_FUNC PyObject * -+#endif -+#endif - -- /* "vidcutter/libs/pympv/mpv.pyx":92 -- * property_error = MPV_ERROR_PROPERTY_ERROR -- * command_error = MPV_ERROR_COMMAND -- * loading_failed = MPV_ERROR_LOADING_FAILED # <<<<<<<<<<<<<< -- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED -- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_LOADING_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 92, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_loading_failed, __pyx_t_6) < 0) __PYX_ERR(0, 92, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":93 -- * command_error = MPV_ERROR_COMMAND -- * loading_failed = MPV_ERROR_LOADING_FAILED -- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED # <<<<<<<<<<<<<< -- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED -- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_AO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ao_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 93, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+#if PY_MAJOR_VERSION < 3 -+__Pyx_PyMODINIT_FUNC initmpv(void) CYTHON_SMALL_CODE; /*proto*/ -+__Pyx_PyMODINIT_FUNC initmpv(void) -+#else -+__Pyx_PyMODINIT_FUNC PyInit_mpv(void) CYTHON_SMALL_CODE; /*proto*/ -+__Pyx_PyMODINIT_FUNC PyInit_mpv(void) -+#if CYTHON_PEP489_MULTI_PHASE_INIT -+{ -+ return PyModuleDef_Init(&__pyx_moduledef); -+} -+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { -+ #if PY_VERSION_HEX >= 0x030700A1 -+ static PY_INT64_T main_interpreter_id = -1; -+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); -+ if (main_interpreter_id == -1) { -+ main_interpreter_id = current_id; -+ return (unlikely(current_id == -1)) ? -1 : 0; -+ } else if (unlikely(main_interpreter_id != current_id)) -+ #else -+ static PyInterpreterState *main_interpreter = NULL; -+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; -+ if (!main_interpreter) { -+ main_interpreter = current_interpreter; -+ } else if (unlikely(main_interpreter != current_interpreter)) -+ #endif -+ { -+ PyErr_SetString( -+ PyExc_ImportError, -+ "Interpreter change detected - this module can only be loaded into one interpreter per process."); -+ return -1; -+ } -+ return 0; -+} -+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { -+ PyObject *value = PyObject_GetAttrString(spec, from_name); -+ int result = 0; -+ if (likely(value)) { -+ if (allow_none || value != Py_None) { -+ result = PyDict_SetItemString(moddict, to_name, value); -+ } -+ Py_DECREF(value); -+ } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { -+ PyErr_Clear(); -+ } else { -+ result = -1; -+ } -+ return result; -+} -+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { -+ PyObject *module = NULL, *moddict, *modname; -+ if (__Pyx_check_single_interpreter()) -+ return NULL; -+ if (__pyx_m) -+ return __Pyx_NewRef(__pyx_m); -+ modname = PyObject_GetAttrString(spec, "name"); -+ if (unlikely(!modname)) goto bad; -+ module = PyModule_NewObject(modname); -+ Py_DECREF(modname); -+ if (unlikely(!module)) goto bad; -+ moddict = PyModule_GetDict(module); -+ if (unlikely(!moddict)) goto bad; -+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; -+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; -+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; -+ if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; -+ return module; -+bad: -+ Py_XDECREF(module); -+ return NULL; -+} - -- /* "vidcutter/libs/pympv/mpv.pyx":94 -- * loading_failed = MPV_ERROR_LOADING_FAILED -- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED -- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED # <<<<<<<<<<<<<< -- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY -- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_VO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_vo_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 94, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":95 -- * ao_init_failed = MPV_ERROR_AO_INIT_FAILED -- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED -- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY # <<<<<<<<<<<<<< -- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT -- * unsupported = MPV_ERROR_UNSUPPORTED -+static CYTHON_SMALL_CODE int __pyx_pymod_exec_mpv(PyObject *__pyx_pyinit_module) -+#endif -+#endif -+{ -+ PyObject *__pyx_t_1 = NULL; -+ PyObject *__pyx_t_2 = NULL; -+ int __pyx_t_3; -+ PyObject *__pyx_t_4 = NULL; -+ int __pyx_t_5; -+ PyObject *__pyx_t_6 = NULL; -+ PyObject *__pyx_t_7 = NULL; -+ int __pyx_lineno = 0; -+ const char *__pyx_filename = NULL; -+ int __pyx_clineno = 0; -+ __Pyx_RefNannyDeclarations -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ if (__pyx_m) { -+ if (__pyx_m == __pyx_pyinit_module) return 0; -+ PyErr_SetString(PyExc_RuntimeError, "Module 'mpv' has already been imported. Re-initialisation is not supported."); -+ return -1; -+ } -+ #elif PY_MAJOR_VERSION >= 3 -+ if (__pyx_m) return __Pyx_NewRef(__pyx_m); -+ #endif -+ #if CYTHON_REFNANNY -+__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -+if (!__Pyx_RefNanny) { -+ PyErr_Clear(); -+ __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); -+ if (!__Pyx_RefNanny) -+ Py_FatalError("failed to import 'refnanny' module"); -+} -+#endif -+ __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_mpv(void)", 0); -+ if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #ifdef __Pxy_PyFrame_Initialize_Offsets -+ __Pxy_PyFrame_Initialize_Offsets(); -+ #endif -+ __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) -+ #ifdef __Pyx_CyFunction_USED -+ if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_FusedFunction_USED -+ if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_Coroutine_USED -+ if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_Generator_USED -+ if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_AsyncGen_USED -+ if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ #ifdef __Pyx_StopAsyncIteration_USED -+ if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ /*--- Library function declarations ---*/ -+ /*--- Threads initialization code ---*/ -+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS -+ PyEval_InitThreads(); -+ #endif -+ /*--- Module creation code ---*/ -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ __pyx_m = __pyx_pyinit_module; -+ Py_INCREF(__pyx_m); -+ #else -+ #if PY_MAJOR_VERSION < 3 -+ __pyx_m = Py_InitModule4("mpv", __pyx_methods, __pyx_k_pympv_Python_wrapper_for_libmpv, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); -+ #else -+ __pyx_m = PyModule_Create(&__pyx_moduledef); -+ #endif -+ if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) -+ Py_INCREF(__pyx_d); -+ __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) -+ Py_INCREF(__pyx_b); -+ __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) -+ Py_INCREF(__pyx_cython_runtime); -+ if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); -+ /*--- Initialize various global constants etc. ---*/ -+ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) -+ if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ if (__pyx_module_is_main_vidcutter__libs__mpv) { -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ } -+ #if PY_MAJOR_VERSION >= 3 -+ { -+ PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) -+ if (!PyDict_GetItemString(modules, "vidcutter.libs.mpv")) { -+ if (unlikely(PyDict_SetItemString(modules, "vidcutter.libs.mpv", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) -+ } -+ } -+ #endif -+ /*--- Builtin init code ---*/ -+ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ /*--- Constants init code ---*/ -+ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ /*--- Global type/function init code ---*/ -+ (void)__Pyx_modinit_global_init_code(); -+ (void)__Pyx_modinit_variable_export_code(); -+ (void)__Pyx_modinit_function_export_code(); -+ if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) -+ (void)__Pyx_modinit_type_import_code(); -+ (void)__Pyx_modinit_variable_import_code(); -+ (void)__Pyx_modinit_function_import_code(); -+ /*--- Execution code ---*/ -+ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) -+ if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ #endif -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":22 -+ * -+ * import cython -+ * import sys, warnings # <<<<<<<<<<<<<< -+ * from threading import Thread, Semaphore -+ * from libc.stdlib cimport malloc, free - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOTHING_TO_PLAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nothing_to_play, __pyx_t_6) < 0) __PYX_ERR(0, 95, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 22, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = __Pyx_Import(__pyx_n_s_warnings, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_1) < 0) __PYX_ERR(0, 22, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":96 -- * vo_init_failed = MPV_ERROR_VO_INIT_FAILED -- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY -- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT # <<<<<<<<<<<<<< -- * unsupported = MPV_ERROR_UNSUPPORTED -- * not_implemented = MPV_ERROR_NOT_IMPLEMENTED -+ /* "vidcutter/libs/pympv/mpv.pyx":23 -+ * import cython -+ * import sys, warnings -+ * from threading import Thread, Semaphore # <<<<<<<<<<<<<< -+ * from libc.stdlib cimport malloc, free -+ * from libc.string cimport strcpy, strlen, memset - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNKNOWN_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 96, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unknown_format, __pyx_t_6) < 0) __PYX_ERR(0, 96, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_INCREF(__pyx_n_s_Thread); -+ __Pyx_GIVEREF(__pyx_n_s_Thread); -+ PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Thread); -+ __Pyx_INCREF(__pyx_n_s_Semaphore); -+ __Pyx_GIVEREF(__pyx_n_s_Semaphore); -+ PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_Semaphore); -+ __pyx_t_2 = __Pyx_Import(__pyx_n_s_threading, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Thread, __pyx_t_1) < 0) __PYX_ERR(0, 23, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Semaphore, __pyx_t_1) < 0) __PYX_ERR(0, 23, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":97 -- * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY -- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT -- * unsupported = MPV_ERROR_UNSUPPORTED # <<<<<<<<<<<<<< -- * not_implemented = MPV_ERROR_NOT_IMPLEMENTED -+ /* "vidcutter/libs/pympv/mpv.pyx":30 -+ * from client cimport * -+ * -+ * __version__ = "0.3.0" # <<<<<<<<<<<<<< -+ * __author__ = "Andre D" - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNSUPPORTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unsupported, __pyx_t_6) < 0) __PYX_ERR(0, 97, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_s_0_3_0) < 0) __PYX_ERR(0, 30, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":98 -- * unknown_format = MPV_ERROR_UNKNOWN_FORMAT -- * unsupported = MPV_ERROR_UNSUPPORTED -- * not_implemented = MPV_ERROR_NOT_IMPLEMENTED # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":31 - * -+ * __version__ = "0.3.0" -+ * __author__ = "Andre D" # <<<<<<<<<<<<<< - * -+ * _REQUIRED_CAPI_MAJOR = 2 - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOT_IMPLEMENTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_implemented, __pyx_t_6) < 0) __PYX_ERR(0, 98, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Andre_D) < 0) __PYX_ERR(0, 31, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":72 -- * PyEval_InitThreads() -+ /* "vidcutter/libs/pympv/mpv.pyx":33 -+ * __author__ = "Andre D" - * -- * class Errors: # <<<<<<<<<<<<<< -- * """Set of known error codes from MpvError and Event responses. -+ * _REQUIRED_CAPI_MAJOR = 2 # <<<<<<<<<<<<<< -+ * _MIN_CAPI_MINOR = 0 - * - */ -- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Errors, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Errors, __pyx_t_6) < 0) __PYX_ERR(0, 72, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_int_2) < 0) __PYX_ERR(0, 33, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":101 -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":34 - * -- * class Events: # <<<<<<<<<<<<<< -- * """Set of known values for Event ids. -+ * _REQUIRED_CAPI_MAJOR = 2 -+ * _MIN_CAPI_MINOR = 0 # <<<<<<<<<<<<<< - * -+ * cdef unsigned long _CAPI_VERSION - */ -- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Events, __pyx_n_s_Events, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_values_for_Event_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 101, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- -- /* "vidcutter/libs/pympv/mpv.pyx":108 -- * You should handle the possibility that event ids may not be any of these values. -- * """ -- * none = MPV_EVENT_NONE # <<<<<<<<<<<<<< -- * shutdown = MPV_EVENT_SHUTDOWN -- * log_message = MPV_EVENT_LOG_MESSAGE -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_6) < 0) __PYX_ERR(0, 108, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":109 -- * """ -- * none = MPV_EVENT_NONE -- * shutdown = MPV_EVENT_SHUTDOWN # <<<<<<<<<<<<<< -- * log_message = MPV_EVENT_LOG_MESSAGE -- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SHUTDOWN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_shutdown, __pyx_t_6) < 0) __PYX_ERR(0, 109, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":110 -- * none = MPV_EVENT_NONE -- * shutdown = MPV_EVENT_SHUTDOWN -- * log_message = MPV_EVENT_LOG_MESSAGE # <<<<<<<<<<<<<< -- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY -- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_LOG_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_log_message, __pyx_t_6) < 0) __PYX_ERR(0, 110, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":111 -- * shutdown = MPV_EVENT_SHUTDOWN -- * log_message = MPV_EVENT_LOG_MESSAGE -- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY # <<<<<<<<<<<<<< -- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY -- * command_reply = MPV_EVENT_COMMAND_REPLY -- */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_GET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_get_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 111, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_MIN_CAPI_MINOR, __pyx_int_0) < 0) __PYX_ERR(0, 34, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":112 -- * log_message = MPV_EVENT_LOG_MESSAGE -- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY -- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY # <<<<<<<<<<<<<< -- * command_reply = MPV_EVENT_COMMAND_REPLY -- * start_file = MPV_EVENT_START_FILE -+ /* "vidcutter/libs/pympv/mpv.pyx":37 -+ * -+ * cdef unsigned long _CAPI_VERSION -+ * with nogil: # <<<<<<<<<<<<<< -+ * _CAPI_VERSION = mpv_client_api_version() -+ * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_set_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 112, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ { -+ #ifdef WITH_THREAD -+ PyThreadState *_save; -+ Py_UNBLOCK_THREADS -+ __Pyx_FastGIL_Remember(); -+ #endif -+ /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":113 -- * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY -- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY -- * command_reply = MPV_EVENT_COMMAND_REPLY # <<<<<<<<<<<<<< -- * start_file = MPV_EVENT_START_FILE -- * end_file = MPV_EVENT_END_FILE -+ /* "vidcutter/libs/pympv/mpv.pyx":38 -+ * cdef unsigned long _CAPI_VERSION -+ * with nogil: -+ * _CAPI_VERSION = mpv_client_api_version() # <<<<<<<<<<<<<< -+ * -+ * _CAPI_MAJOR = _CAPI_VERSION >> 16 - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_COMMAND_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_reply, __pyx_t_6) < 0) __PYX_ERR(0, 113, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION = mpv_client_api_version(); -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":114 -- * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY -- * command_reply = MPV_EVENT_COMMAND_REPLY -- * start_file = MPV_EVENT_START_FILE # <<<<<<<<<<<<<< -- * end_file = MPV_EVENT_END_FILE -- * file_loaded = MPV_EVENT_FILE_LOADED -+ /* "vidcutter/libs/pympv/mpv.pyx":37 -+ * -+ * cdef unsigned long _CAPI_VERSION -+ * with nogil: # <<<<<<<<<<<<<< -+ * _CAPI_VERSION = mpv_client_api_version() -+ * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_START_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_start_file, __pyx_t_6) < 0) __PYX_ERR(0, 114, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ /*finally:*/ { -+ /*normal exit:*/{ -+ #ifdef WITH_THREAD -+ __Pyx_FastGIL_Forget(); -+ Py_BLOCK_THREADS -+ #endif -+ goto __pyx_L4; -+ } -+ __pyx_L4:; -+ } -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":115 -- * command_reply = MPV_EVENT_COMMAND_REPLY -- * start_file = MPV_EVENT_START_FILE -- * end_file = MPV_EVENT_END_FILE # <<<<<<<<<<<<<< -- * file_loaded = MPV_EVENT_FILE_LOADED -- * tracks_changed = MPV_EVENT_TRACKS_CHANGED -+ /* "vidcutter/libs/pympv/mpv.pyx":40 -+ * _CAPI_VERSION = mpv_client_api_version() -+ * -+ * _CAPI_MAJOR = _CAPI_VERSION >> 16 # <<<<<<<<<<<<<< -+ * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF -+ * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_END_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_end_file, __pyx_t_6) < 0) __PYX_ERR(0, 115, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION >> 16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MAJOR, __pyx_t_2) < 0) __PYX_ERR(0, 40, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":116 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":41 -+ * -+ * _CAPI_MAJOR = _CAPI_VERSION >> 16 -+ * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF # <<<<<<<<<<<<<< -+ * -+ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_FILE_LOADED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_file_loaded, __pyx_t_6) < 0) __PYX_ERR(0, 116, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION & 0xFFFF)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MINOR, __pyx_t_2) < 0) __PYX_ERR(0, 41, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":117 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":43 -+ * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF -+ * -+ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< -+ * raise ImportError( -+ * "libmpv version is incorrect. Required %d.%d got %d.%d." % - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TRACKS_CHANGED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 117, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tracks_changed, __pyx_t_6) < 0) __PYX_ERR(0, 117, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (!__pyx_t_5) { -+ } else { -+ __pyx_t_3 = __pyx_t_5; -+ goto __pyx_L6_bool_binop_done; -+ } -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -+ __pyx_t_3 = __pyx_t_5; -+ __pyx_L6_bool_binop_done:; -+ if (unlikely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":118 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":46 -+ * raise ImportError( -+ * "libmpv version is incorrect. Required %d.%d got %d.%d." % -+ * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) # <<<<<<<<<<<<<< -+ * ) -+ * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TRACK_SWITCHED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 118, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tracks_switched, __pyx_t_6) < 0) __PYX_ERR(0, 118, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_2); -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_GIVEREF(__pyx_t_2); -+ PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); -+ __Pyx_GIVEREF(__pyx_t_1); -+ PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1); -+ __Pyx_GIVEREF(__pyx_t_4); -+ PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_4); -+ __Pyx_GIVEREF(__pyx_t_6); -+ PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6); -+ __pyx_t_2 = 0; -+ __pyx_t_1 = 0; -+ __pyx_t_4 = 0; -+ __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":119 -- * tracks_changed = MPV_EVENT_TRACKS_CHANGED -- * tracks_switched = MPV_EVENT_TRACK_SWITCHED -- * idle = MPV_EVENT_IDLE # <<<<<<<<<<<<<< -- * pause = MPV_EVENT_PAUSE -- * unpause = MPV_EVENT_UNPAUSE -+ /* "vidcutter/libs/pympv/mpv.pyx":45 -+ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: -+ * raise ImportError( -+ * "libmpv version is incorrect. Required %d.%d got %d.%d." % # <<<<<<<<<<<<<< -+ * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) -+ * ) - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_IDLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_idle, __pyx_t_6) < 0) __PYX_ERR(0, 119, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 45, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":120 -- * tracks_switched = MPV_EVENT_TRACK_SWITCHED -- * idle = MPV_EVENT_IDLE -- * pause = MPV_EVENT_PAUSE # <<<<<<<<<<<<<< -- * unpause = MPV_EVENT_UNPAUSE -- * tick = MPV_EVENT_TICK -+ /* "vidcutter/libs/pympv/mpv.pyx":44 -+ * -+ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: -+ * raise ImportError( # <<<<<<<<<<<<<< -+ * "libmpv version is incorrect. Required %d.%d got %d.%d." % -+ * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PAUSE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 120, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_pause, __pyx_t_6) < 0) __PYX_ERR(0, 120, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ImportError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 44, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_Raise(__pyx_t_7, 0, 0, 0); -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __PYX_ERR(0, 44, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":121 -- * idle = MPV_EVENT_IDLE -- * pause = MPV_EVENT_PAUSE -- * unpause = MPV_EVENT_UNPAUSE # <<<<<<<<<<<<<< -- * tick = MPV_EVENT_TICK -- * script_input_dispatch = MPV_EVENT_SCRIPT_INPUT_DISPATCH -+ /* "vidcutter/libs/pympv/mpv.pyx":43 -+ * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF -+ * -+ * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< -+ * raise ImportError( -+ * "libmpv version is incorrect. Required %d.%d got %d.%d." % - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_UNPAUSE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 121, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unpause, __pyx_t_6) < 0) __PYX_ERR(0, 121, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ } - -- /* "vidcutter/libs/pympv/mpv.pyx":122 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":52 -+ * void Py_Initialize() -+ * -+ * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< -+ * _strdec_err = "surrogateescape" if _is_py3 else "strict" -+ * # mpv -> Python - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TICK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_version_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tick, __pyx_t_6) < 0) __PYX_ERR(0, 122, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_tuple__18, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_py3, __pyx_t_7) < 0) __PYX_ERR(0, 52, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":123 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":53 -+ * -+ * _is_py3 = sys.version_info >= (3,) -+ * _strdec_err = "surrogateescape" if _is_py3 else "strict" # <<<<<<<<<<<<<< -+ * # mpv -> Python -+ * def _strdec(s): - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SCRIPT_INPUT_DISPATCH); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 123, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_py3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_script_input_dispatch, __pyx_t_6) < 0) __PYX_ERR(0, 123, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (__pyx_t_3) { -+ __Pyx_INCREF(__pyx_n_s_surrogateescape); -+ __pyx_t_7 = __pyx_n_s_surrogateescape; -+ } else { -+ __Pyx_INCREF(__pyx_n_s_strict); -+ __pyx_t_7 = __pyx_n_s_strict; -+ } -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec_err, __pyx_t_7) < 0) __PYX_ERR(0, 53, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":124 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":55 -+ * _strdec_err = "surrogateescape" if _is_py3 else "strict" -+ * # mpv -> Python -+ * def _strdec(s): # <<<<<<<<<<<<<< -+ * try: -+ * return s.decode("utf-8", _strdec_err) - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CLIENT_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_client_message, __pyx_t_6) < 0) __PYX_ERR(0, 124, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_1_strdec, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 55, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec, __pyx_t_7) < 0) __PYX_ERR(0, 55, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":125 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":63 -+ * -+ * # Python -> mpv -+ * def _strenc(s): # <<<<<<<<<<<<<< -+ * try: -+ * return s.encode("utf-8", _strdec_err) - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_VIDEO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_video_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 125, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_3_strenc, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strenc, __pyx_t_7) < 0) __PYX_ERR(0, 63, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":126 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":70 -+ * return s -+ * -+ * Py_Initialize() # <<<<<<<<<<<<<< -+ * -+ * class Errors: - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_AUDIO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_audio_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 126, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ Py_Initialize(); - -- /* "vidcutter/libs/pympv/mpv.pyx":127 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":72 -+ * Py_Initialize() -+ * -+ * class Errors: # <<<<<<<<<<<<<< -+ * """Set of known error codes from MpvError and Event responses. -+ * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_METADATA_UPDATE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 127, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_metadata_update, __pyx_t_6) < 0) __PYX_ERR(0, 127, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Errors, __pyx_n_s_Errors, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_error_codes_from_Mp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 72, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); - -- /* "vidcutter/libs/pympv/mpv.pyx":128 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":79 -+ * You should handle the possibility that error codes may not be any of these values. -+ * """ -+ * success = MPV_ERROR_SUCCESS # <<<<<<<<<<<<<< -+ * queue_full = MPV_ERROR_EVENT_QUEUE_FULL -+ * nomem = MPV_ERROR_NOMEM - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SEEK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_SUCCESS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_seek, __pyx_t_6) < 0) __PYX_ERR(0, 128, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_success, __pyx_t_6) < 0) __PYX_ERR(0, 79, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":129 -- * 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":80 -+ * """ -+ * success = MPV_ERROR_SUCCESS -+ * queue_full = MPV_ERROR_EVENT_QUEUE_FULL # <<<<<<<<<<<<<< -+ * nomem = MPV_ERROR_NOMEM -+ * uninitialized = MPV_ERROR_UNINITIALIZED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PLAYBACK_RESTART); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 129, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_EVENT_QUEUE_FULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_playback_restart, __pyx_t_6) < 0) __PYX_ERR(0, 129, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_full, __pyx_t_6) < 0) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":130 -- * seek = MPV_EVENT_SEEK -- * playback_restart = MPV_EVENT_PLAYBACK_RESTART -- * property_change = MPV_EVENT_PROPERTY_CHANGE # <<<<<<<<<<<<<< -- * chapter_change = MPV_EVENT_CHAPTER_CHANGE -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":81 -+ * success = MPV_ERROR_SUCCESS -+ * queue_full = MPV_ERROR_EVENT_QUEUE_FULL -+ * nomem = MPV_ERROR_NOMEM # <<<<<<<<<<<<<< -+ * uninitialized = MPV_ERROR_UNINITIALIZED -+ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PROPERTY_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 130, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOMEM); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_change, __pyx_t_6) < 0) __PYX_ERR(0, 130, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nomem, __pyx_t_6) < 0) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":131 -- * playback_restart = MPV_EVENT_PLAYBACK_RESTART -- * property_change = MPV_EVENT_PROPERTY_CHANGE -- * chapter_change = MPV_EVENT_CHAPTER_CHANGE # <<<<<<<<<<<<<< -- * -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":82 -+ * queue_full = MPV_ERROR_EVENT_QUEUE_FULL -+ * nomem = MPV_ERROR_NOMEM -+ * uninitialized = MPV_ERROR_UNINITIALIZED # <<<<<<<<<<<<<< -+ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER -+ * not_found = MPV_ERROR_OPTION_NOT_FOUND - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CHAPTER_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 131, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNINITIALIZED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_chapter_change, __pyx_t_6) < 0) __PYX_ERR(0, 131, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_uninitialized, __pyx_t_6) < 0) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":101 -- * -- * -- * class Events: # <<<<<<<<<<<<<< -- * """Set of known values for Event ids. -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":83 -+ * nomem = MPV_ERROR_NOMEM -+ * uninitialized = MPV_ERROR_UNINITIALIZED -+ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER # <<<<<<<<<<<<<< -+ * not_found = MPV_ERROR_OPTION_NOT_FOUND -+ * option_format = MPV_ERROR_OPTION_FORMAT - */ -- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Events, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_INVALID_PARAMETER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Events, __pyx_t_6) < 0) __PYX_ERR(0, 101, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_parameter, __pyx_t_6) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":134 -- * -- * -- * class LogLevels: # <<<<<<<<<<<<<< -- * no = MPV_LOG_LEVEL_NONE -- * fatal = MPV_LOG_LEVEL_FATAL -+ /* "vidcutter/libs/pympv/mpv.pyx":84 -+ * uninitialized = MPV_ERROR_UNINITIALIZED -+ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER -+ * not_found = MPV_ERROR_OPTION_NOT_FOUND # <<<<<<<<<<<<<< -+ * option_format = MPV_ERROR_OPTION_FORMAT -+ * option_error = MPV_ERROR_OPTION_ERROR - */ -- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LogLevels, __pyx_n_s_LogLevels, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 134, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 84, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":135 -- * -- * class LogLevels: -- * no = MPV_LOG_LEVEL_NONE # <<<<<<<<<<<<<< -- * fatal = MPV_LOG_LEVEL_FATAL -- * error = MPV_LOG_LEVEL_ERROR -+ /* "vidcutter/libs/pympv/mpv.pyx":85 -+ * invalid_parameter = MPV_ERROR_INVALID_PARAMETER -+ * not_found = MPV_ERROR_OPTION_NOT_FOUND -+ * option_format = MPV_ERROR_OPTION_FORMAT # <<<<<<<<<<<<<< -+ * option_error = MPV_ERROR_OPTION_ERROR -+ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 135, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_no, __pyx_t_6) < 0) __PYX_ERR(0, 135, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_format, __pyx_t_6) < 0) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":136 -- * class LogLevels: -- * no = MPV_LOG_LEVEL_NONE -- * fatal = MPV_LOG_LEVEL_FATAL # <<<<<<<<<<<<<< -- * error = MPV_LOG_LEVEL_ERROR -- * warn = MPV_LOG_LEVEL_WARN -+ /* "vidcutter/libs/pympv/mpv.pyx":86 -+ * not_found = MPV_ERROR_OPTION_NOT_FOUND -+ * option_format = MPV_ERROR_OPTION_FORMAT -+ * option_error = MPV_ERROR_OPTION_ERROR # <<<<<<<<<<<<<< -+ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND -+ * property_format = MPV_ERROR_PROPERTY_FORMAT - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_FATAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_fatal, __pyx_t_6) < 0) __PYX_ERR(0, 136, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_error, __pyx_t_6) < 0) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":137 -- * no = MPV_LOG_LEVEL_NONE -- * fatal = MPV_LOG_LEVEL_FATAL -- * error = MPV_LOG_LEVEL_ERROR # <<<<<<<<<<<<<< -- * warn = MPV_LOG_LEVEL_WARN -- * info = MPV_LOG_LEVEL_INFO -+ /* "vidcutter/libs/pympv/mpv.pyx":87 -+ * option_format = MPV_ERROR_OPTION_FORMAT -+ * option_error = MPV_ERROR_OPTION_ERROR -+ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND # <<<<<<<<<<<<<< -+ * property_format = MPV_ERROR_PROPERTY_FORMAT -+ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 137, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":138 -- * fatal = MPV_LOG_LEVEL_FATAL -- * error = MPV_LOG_LEVEL_ERROR -- * warn = MPV_LOG_LEVEL_WARN # <<<<<<<<<<<<<< -- * info = MPV_LOG_LEVEL_INFO -- * v = MPV_LOG_LEVEL_V -+ /* "vidcutter/libs/pympv/mpv.pyx":88 -+ * option_error = MPV_ERROR_OPTION_ERROR -+ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND -+ * property_format = MPV_ERROR_PROPERTY_FORMAT # <<<<<<<<<<<<<< -+ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE -+ * property_error = MPV_ERROR_PROPERTY_ERROR - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_WARN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 138, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_warn, __pyx_t_6) < 0) __PYX_ERR(0, 138, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_format, __pyx_t_6) < 0) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":139 -- * error = MPV_LOG_LEVEL_ERROR -- * warn = MPV_LOG_LEVEL_WARN -- * info = MPV_LOG_LEVEL_INFO # <<<<<<<<<<<<<< -- * v = MPV_LOG_LEVEL_V -- * debug = MPV_LOG_LEVEL_DEBUG -+ /* "vidcutter/libs/pympv/mpv.pyx":89 -+ * not_found = MPV_ERROR_PROPERTY_NOT_FOUND -+ * property_format = MPV_ERROR_PROPERTY_FORMAT -+ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE # <<<<<<<<<<<<<< -+ * property_error = MPV_ERROR_PROPERTY_ERROR -+ * command_error = MPV_ERROR_COMMAND - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_INFO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 139, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_UNAVAILABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_info, __pyx_t_6) < 0) __PYX_ERR(0, 139, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_unavailable, __pyx_t_6) < 0) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":140 -- * warn = MPV_LOG_LEVEL_WARN -- * info = MPV_LOG_LEVEL_INFO -- * v = MPV_LOG_LEVEL_V # <<<<<<<<<<<<<< -- * debug = MPV_LOG_LEVEL_DEBUG -- * trace = MPV_LOG_LEVEL_TRACE -+ /* "vidcutter/libs/pympv/mpv.pyx":90 -+ * property_format = MPV_ERROR_PROPERTY_FORMAT -+ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE -+ * property_error = MPV_ERROR_PROPERTY_ERROR # <<<<<<<<<<<<<< -+ * command_error = MPV_ERROR_COMMAND -+ * loading_failed = MPV_ERROR_LOADING_FAILED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_V); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_v, __pyx_t_6) < 0) __PYX_ERR(0, 140, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_error, __pyx_t_6) < 0) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":141 -- * info = MPV_LOG_LEVEL_INFO -- * v = MPV_LOG_LEVEL_V -- * debug = MPV_LOG_LEVEL_DEBUG # <<<<<<<<<<<<<< -- * trace = MPV_LOG_LEVEL_TRACE -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":91 -+ * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE -+ * property_error = MPV_ERROR_PROPERTY_ERROR -+ * command_error = MPV_ERROR_COMMAND # <<<<<<<<<<<<<< -+ * loading_failed = MPV_ERROR_LOADING_FAILED -+ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_DEBUG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 141, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_COMMAND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_debug, __pyx_t_6) < 0) __PYX_ERR(0, 141, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_error, __pyx_t_6) < 0) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":142 -- * v = MPV_LOG_LEVEL_V -- * debug = MPV_LOG_LEVEL_DEBUG -- * trace = MPV_LOG_LEVEL_TRACE # <<<<<<<<<<<<<< -- * -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":92 -+ * property_error = MPV_ERROR_PROPERTY_ERROR -+ * command_error = MPV_ERROR_COMMAND -+ * loading_failed = MPV_ERROR_LOADING_FAILED # <<<<<<<<<<<<<< -+ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED -+ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_TRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_LOADING_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_trace, __pyx_t_6) < 0) __PYX_ERR(0, 142, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_loading_failed, __pyx_t_6) < 0) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":134 -- * -- * -- * class LogLevels: # <<<<<<<<<<<<<< -- * no = MPV_LOG_LEVEL_NONE -- * fatal = MPV_LOG_LEVEL_FATAL -+ /* "vidcutter/libs/pympv/mpv.pyx":93 -+ * command_error = MPV_ERROR_COMMAND -+ * loading_failed = MPV_ERROR_LOADING_FAILED -+ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED # <<<<<<<<<<<<<< -+ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED -+ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY - */ -- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LogLevels, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 134, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_AO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_LogLevels, __pyx_t_6) < 0) __PYX_ERR(0, 134, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ao_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":145 -- * -- * -- * class EOFReasons: # <<<<<<<<<<<<<< -- * """Known possible values for EndOfFileReached reason. -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":94 -+ * loading_failed = MPV_ERROR_LOADING_FAILED -+ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED -+ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED # <<<<<<<<<<<<<< -+ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY -+ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT - */ -- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOFReasons, __pyx_n_s_EOFReasons, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Known_possible_values_for_EndOfF); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 145, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_VO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_vo_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 94, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":150 -- * You should handle the possibility that the reason may not be any of these values. -- * """ -- * eof = MPV_END_FILE_REASON_EOF # <<<<<<<<<<<<<< -- * aborted = MPV_END_FILE_REASON_STOP -- * quit = MPV_END_FILE_REASON_QUIT -+ /* "vidcutter/libs/pympv/mpv.pyx":95 -+ * ao_init_failed = MPV_ERROR_AO_INIT_FAILED -+ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED -+ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY # <<<<<<<<<<<<<< -+ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT -+ * unsupported = MPV_ERROR_UNSUPPORTED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOTHING_TO_PLAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_eof, __pyx_t_6) < 0) __PYX_ERR(0, 150, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nothing_to_play, __pyx_t_6) < 0) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":151 -- * """ -- * eof = MPV_END_FILE_REASON_EOF -- * aborted = MPV_END_FILE_REASON_STOP # <<<<<<<<<<<<<< -- * quit = MPV_END_FILE_REASON_QUIT -- * error = MPV_END_FILE_REASON_ERROR -+ /* "vidcutter/libs/pympv/mpv.pyx":96 -+ * vo_init_failed = MPV_ERROR_VO_INIT_FAILED -+ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY -+ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT # <<<<<<<<<<<<<< -+ * unsupported = MPV_ERROR_UNSUPPORTED -+ * not_implemented = MPV_ERROR_NOT_IMPLEMENTED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_STOP); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNKNOWN_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_aborted, __pyx_t_6) < 0) __PYX_ERR(0, 151, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unknown_format, __pyx_t_6) < 0) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":152 -- * eof = MPV_END_FILE_REASON_EOF -- * aborted = MPV_END_FILE_REASON_STOP -- * quit = MPV_END_FILE_REASON_QUIT # <<<<<<<<<<<<<< -- * error = MPV_END_FILE_REASON_ERROR -+ /* "vidcutter/libs/pympv/mpv.pyx":97 -+ * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY -+ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT -+ * unsupported = MPV_ERROR_UNSUPPORTED # <<<<<<<<<<<<<< -+ * not_implemented = MPV_ERROR_NOT_IMPLEMENTED - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_QUIT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNSUPPORTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_quit, __pyx_t_6) < 0) __PYX_ERR(0, 152, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unsupported, __pyx_t_6) < 0) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":153 -- * aborted = MPV_END_FILE_REASON_STOP -- * quit = MPV_END_FILE_REASON_QUIT -- * error = MPV_END_FILE_REASON_ERROR # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":98 -+ * unknown_format = MPV_ERROR_UNKNOWN_FORMAT -+ * unsupported = MPV_ERROR_UNSUPPORTED -+ * not_implemented = MPV_ERROR_NOT_IMPLEMENTED # <<<<<<<<<<<<<< - * - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 153, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOT_IMPLEMENTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 153, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_implemented, __pyx_t_6) < 0) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":145 -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":72 -+ * Py_Initialize() - * -- * class EOFReasons: # <<<<<<<<<<<<<< -- * """Known possible values for EndOfFileReached reason. -+ * class Errors: # <<<<<<<<<<<<<< -+ * """Set of known error codes from MpvError and Event responses. - * - */ -- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_EOFReasons, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Errors, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOFReasons, __pyx_t_6) < 0) __PYX_ERR(0, 145, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Errors, __pyx_t_6) < 0) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":318 -- * -- * -- * def _errors(fn): # <<<<<<<<<<<<<< -- * def wrapped(*k, **kw): -- * v = fn(*k, **kw) -- */ -- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_5_errors, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 318, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_7) < 0) __PYX_ERR(0, 318, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- -- /* "vidcutter/libs/pympv/mpv.pyx":326 -+ /* "vidcutter/libs/pympv/mpv.pyx":101 - * - * -- * class MPVError(Exception): # <<<<<<<<<<<<<< -- * code = None -+ * class Events: # <<<<<<<<<<<<<< -+ * """Set of known values for Event ids. - * - */ -- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 326, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Events, __pyx_n_s_Events, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_values_for_Event_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -- __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -- PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -- __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 326, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_MPVError, __pyx_n_s_MPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 326, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- -- /* "vidcutter/libs/pympv/mpv.pyx":327 -- * -- * class MPVError(Exception): -- * code = None # <<<<<<<<<<<<<< -- * -- * def __init__(self, e): -- */ -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_code, Py_None) < 0) __PYX_ERR(0, 327, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":329 -- * code = None -- * -- * def __init__(self, e): # <<<<<<<<<<<<<< -- * self.code = e -- * cdef const char* err_c -+ /* "vidcutter/libs/pympv/mpv.pyx":108 -+ * You should handle the possibility that event ids may not be any of these values. -+ * """ -+ * none = MPV_EVENT_NONE # <<<<<<<<<<<<<< -+ * shutdown = MPV_EVENT_SHUTDOWN -+ * log_message = MPV_EVENT_LOG_MESSAGE - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__, 0, __pyx_n_s_MPVError___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 329, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_6) < 0) __PYX_ERR(0, 108, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":326 -- * -- * -- * class MPVError(Exception): # <<<<<<<<<<<<<< -- * code = None -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":109 -+ * """ -+ * none = MPV_EVENT_NONE -+ * shutdown = MPV_EVENT_SHUTDOWN # <<<<<<<<<<<<<< -+ * log_message = MPV_EVENT_LOG_MESSAGE -+ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY - */ -- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPVError, __pyx_t_1) < 0) __PYX_ERR(0, 326, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SHUTDOWN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_shutdown, __pyx_t_6) < 0) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":340 -- * Exception.__init__(self, e) -- * -- * class PyMPVError(Exception): # <<<<<<<<<<<<<< -- * pass -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":110 -+ * none = MPV_EVENT_NONE -+ * shutdown = MPV_EVENT_SHUTDOWN -+ * log_message = MPV_EVENT_LOG_MESSAGE # <<<<<<<<<<<<<< -+ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY -+ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY - */ -- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 340, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -- __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -- PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -- __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_LOG_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_PyMPVError, __pyx_n_s_PyMPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_PyMPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyMPVError, __pyx_t_1) < 0) __PYX_ERR(0, 340, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_log_message, __pyx_t_6) < 0) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":343 -- * pass -- * -- * cdef _callbacks = dict() # <<<<<<<<<<<<<< -- * cdef _reply_userdatas = dict() -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":111 -+ * shutdown = MPV_EVENT_SHUTDOWN -+ * log_message = MPV_EVENT_LOG_MESSAGE -+ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY # <<<<<<<<<<<<<< -+ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY -+ * command_reply = MPV_EVENT_COMMAND_REPLY - */ -- __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 343, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__callbacks); -- __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_t_7); -- __Pyx_GIVEREF(__pyx_t_7); -- __pyx_t_7 = 0; -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_GET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_get_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 111, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":344 -- * -- * cdef _callbacks = dict() -- * cdef _reply_userdatas = dict() # <<<<<<<<<<<<<< -- * -- * class _ReplyUserData(object): -+ /* "vidcutter/libs/pympv/mpv.pyx":112 -+ * log_message = MPV_EVENT_LOG_MESSAGE -+ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY -+ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY # <<<<<<<<<<<<<< -+ * command_reply = MPV_EVENT_COMMAND_REPLY -+ * start_file = MPV_EVENT_START_FILE - */ -- __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 344, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas); -- __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_t_7); -- __Pyx_GIVEREF(__pyx_t_7); -- __pyx_t_7 = 0; -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_set_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 112, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":346 -- * cdef _reply_userdatas = dict() -- * -- * class _ReplyUserData(object): # <<<<<<<<<<<<<< -- * def __init__(self, data): -- * self.counter = 0 -+ /* "vidcutter/libs/pympv/mpv.pyx":113 -+ * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY -+ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY -+ * command_reply = MPV_EVENT_COMMAND_REPLY # <<<<<<<<<<<<<< -+ * start_file = MPV_EVENT_START_FILE -+ * end_file = MPV_EVENT_END_FILE - */ -- __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__30); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__30, __pyx_n_s_ReplyUserData, __pyx_n_s_ReplyUserData, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 346, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_COMMAND_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_reply, __pyx_t_6) < 0) __PYX_ERR(0, 113, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":347 -- * -- * class _ReplyUserData(object): -- * def __init__(self, data): # <<<<<<<<<<<<<< -- * self.counter = 0 -- * self.data = data -+ /* "vidcutter/libs/pympv/mpv.pyx":114 -+ * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY -+ * command_reply = MPV_EVENT_COMMAND_REPLY -+ * start_file = MPV_EVENT_START_FILE # <<<<<<<<<<<<<< -+ * end_file = MPV_EVENT_END_FILE -+ * file_loaded = MPV_EVENT_FILE_LOADED - */ -- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, 0, __pyx_n_s_ReplyUserData___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 347, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_START_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_start_file, __pyx_t_6) < 0) __PYX_ERR(0, 114, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":352 -- * self.observed = False -- * -- * def add(self): # <<<<<<<<<<<<<< -- * self.counter += 1 -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":115 -+ * command_reply = MPV_EVENT_COMMAND_REPLY -+ * start_file = MPV_EVENT_START_FILE -+ * end_file = MPV_EVENT_END_FILE # <<<<<<<<<<<<<< -+ * file_loaded = MPV_EVENT_FILE_LOADED -+ * # tracks_changed = MPV_EVENT_TRACKS_CHANGED - */ -- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, 0, __pyx_n_s_ReplyUserData_add, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_add, __pyx_t_4) < 0) __PYX_ERR(0, 352, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_END_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_end_file, __pyx_t_6) < 0) __PYX_ERR(0, 115, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":355 -- * self.counter += 1 -- * -- * def remove(self): # <<<<<<<<<<<<<< -- * self.counter -= 1 -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":116 -+ * 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 - */ -- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, 0, __pyx_n_s_ReplyUserData_remove, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_remove, __pyx_t_4) < 0) __PYX_ERR(0, 355, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_FILE_LOADED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_file_loaded, __pyx_t_6) < 0) __PYX_ERR(0, 116, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":346 -- * cdef _reply_userdatas = dict() -- * -- * class _ReplyUserData(object): # <<<<<<<<<<<<<< -- * def __init__(self, data): -- * self.counter = 0 -+ /* "vidcutter/libs/pympv/mpv.pyx":119 -+ * # tracks_changed = MPV_EVENT_TRACKS_CHANGED -+ * # tracks_switched = MPV_EVENT_TRACK_SWITCHED -+ * idle = MPV_EVENT_IDLE # <<<<<<<<<<<<<< -+ * # pause = MPV_EVENT_PAUSE -+ * # unpause = MPV_EVENT_UNPAUSE - */ -- __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ReplyUserData, __pyx_tuple__30, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplyUserData, __pyx_t_4) < 0) __PYX_ERR(0, 346, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_IDLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_idle, __pyx_t_6) < 0) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":411 -- * mpv_resume(self._ctx) -- * -- * @_errors # <<<<<<<<<<<<<< -- * def request_event(self, event, enable): -- * """Enable or disable a given event. -+ /* "vidcutter/libs/pympv/mpv.pyx":122 -+ * # 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 - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TICK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tick, __pyx_t_6) < 0) __PYX_ERR(0, 122, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":412 -- * -- * @_errors -- * def request_event(self, event, enable): # <<<<<<<<<<<<<< -- * """Enable or disable a given event. -- * -+ /* "vidcutter/libs/pympv/mpv.pyx":124 -+ * 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 - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_request_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CLIENT_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_client_message, __pyx_t_6) < 0) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_request_event, __pyx_t_7) < 0) __PYX_ERR(0, 412, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":429 -- * return err -- * -- * @_errors # <<<<<<<<<<<<<< -- * def set_log_level(self, loglevel): -- * """Wraps: mpv_request_log_messages""" -+ /* "vidcutter/libs/pympv/mpv.pyx":125 -+ * # 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 - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 429, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_VIDEO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_video_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 125, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":430 -- * -- * @_errors -- * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< -- * """Wraps: mpv_request_log_messages""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":126 -+ * 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 - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 429, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_AUDIO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_audio_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_log_level, __pyx_t_7) < 0) __PYX_ERR(0, 430, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":440 -- * return err -- * -- * @_errors # <<<<<<<<<<<<<< -- * def load_config(self, filename): -- * """Wraps: mpv_load_config_file""" -+ /* "vidcutter/libs/pympv/mpv.pyx":128 -+ * 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 - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 440, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SEEK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_seek, __pyx_t_6) < 0) __PYX_ERR(0, 128, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":441 -- * -- * @_errors -- * def load_config(self, filename): # <<<<<<<<<<<<<< -- * """Wraps: mpv_load_config_file""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":129 -+ * # 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 - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_load_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 440, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PLAYBACK_RESTART); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 129, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_playback_restart, __pyx_t_6) < 0) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_load_config, __pyx_t_7) < 0) __PYX_ERR(0, 441, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":573 -- * return result -+ /* "vidcutter/libs/pympv/mpv.pyx":130 -+ * seek = MPV_EVENT_SEEK -+ * playback_restart = MPV_EVENT_PLAYBACK_RESTART -+ * property_change = MPV_EVENT_PROPERTY_CHANGE # <<<<<<<<<<<<<< -+ * # chapter_change = MPV_EVENT_CHAPTER_CHANGE - * -- * @_errors # <<<<<<<<<<<<<< -- * def get_property_async(self, prop, data=None): -- * """Gets the value of a property asynchronously. - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PROPERTY_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_change, __pyx_t_6) < 0) __PYX_ERR(0, 130, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":574 -+ /* "vidcutter/libs/pympv/mpv.pyx":101 - * -- * @_errors -- * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< -- * """Gets the value of a property asynchronously. -+ * -+ * class Events: # <<<<<<<<<<<<<< -+ * """Set of known values for Event ids. - * - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 573, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Events, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Events, __pyx_t_6) < 0) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_get_property_async, __pyx_t_7) < 0) __PYX_ERR(0, 574, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":635 -- * return v -+ /* "vidcutter/libs/pympv/mpv.pyx":134 - * -- * @_errors # <<<<<<<<<<<<<< -- * def set_property(self, prop, value=True, asynchronous=False, data=None): -- * """Wraps: mpv_set_property and mpv_set_property_async""" -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 635, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- -- /* "vidcutter/libs/pympv/mpv.pyx":636 - * -- * @_errors -- * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< -- * """Wraps: mpv_set_property and mpv_set_property_async""" -- * assert self._ctx -+ * class LogLevels: # <<<<<<<<<<<<<< -+ * no = MPV_LOG_LEVEL_NONE -+ * fatal = MPV_LOG_LEVEL_FATAL - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 636, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 635, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LogLevels, __pyx_n_s_LogLevels, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_property, __pyx_t_7) < 0) __PYX_ERR(0, 636, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":673 -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":135 - * -- * @_errors # <<<<<<<<<<<<<< -- * def set_option(self, prop, value=True): -- * """Wraps: mpv_set_option""" -+ * class LogLevels: -+ * no = MPV_LOG_LEVEL_NONE # <<<<<<<<<<<<<< -+ * fatal = MPV_LOG_LEVEL_FATAL -+ * error = MPV_LOG_LEVEL_ERROR - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 135, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_no, __pyx_t_6) < 0) __PYX_ERR(0, 135, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":674 -- * -- * @_errors -- * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< -- * """Wraps: mpv_set_option""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":136 -+ * class LogLevels: -+ * no = MPV_LOG_LEVEL_NONE -+ * fatal = MPV_LOG_LEVEL_FATAL # <<<<<<<<<<<<<< -+ * error = MPV_LOG_LEVEL_ERROR -+ * warn = MPV_LOG_LEVEL_WARN - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_option); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 674, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 673, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_FATAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_fatal, __pyx_t_6) < 0) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_option, __pyx_t_7) < 0) __PYX_ERR(0, 674, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":695 -- * return err -- * -- * @_errors # <<<<<<<<<<<<<< -- * def initialize(self): -- * """Wraps: mpv_initialize""" -+ /* "vidcutter/libs/pympv/mpv.pyx":137 -+ * no = MPV_LOG_LEVEL_NONE -+ * fatal = MPV_LOG_LEVEL_FATAL -+ * error = MPV_LOG_LEVEL_ERROR # <<<<<<<<<<<<<< -+ * warn = MPV_LOG_LEVEL_WARN -+ * info = MPV_LOG_LEVEL_INFO - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 137, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":696 -- * -- * @_errors -- * def initialize(self): # <<<<<<<<<<<<<< -- * """Wraps: mpv_initialize""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":138 -+ * fatal = MPV_LOG_LEVEL_FATAL -+ * error = MPV_LOG_LEVEL_ERROR -+ * warn = MPV_LOG_LEVEL_WARN # <<<<<<<<<<<<<< -+ * info = MPV_LOG_LEVEL_INFO -+ * v = MPV_LOG_LEVEL_V - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_initialize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 695, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_WARN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 138, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_warn, __pyx_t_6) < 0) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_initialize, __pyx_t_7) < 0) __PYX_ERR(0, 696, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":748 -- * self.callbackthread.start() -- * -- * @_errors # <<<<<<<<<<<<<< -- * def observe_property(self, prop, data=None): -- * """Wraps: mpv_observe_property""" -+ /* "vidcutter/libs/pympv/mpv.pyx":139 -+ * error = MPV_LOG_LEVEL_ERROR -+ * warn = MPV_LOG_LEVEL_WARN -+ * info = MPV_LOG_LEVEL_INFO # <<<<<<<<<<<<<< -+ * v = MPV_LOG_LEVEL_V -+ * debug = MPV_LOG_LEVEL_DEBUG - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 748, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_INFO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_info, __pyx_t_6) < 0) __PYX_ERR(0, 139, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":749 -- * -- * @_errors -- * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< -- * """Wraps: mpv_observe_property""" -- * assert self._ctx -+ /* "vidcutter/libs/pympv/mpv.pyx":140 -+ * warn = MPV_LOG_LEVEL_WARN -+ * info = MPV_LOG_LEVEL_INFO -+ * v = MPV_LOG_LEVEL_V # <<<<<<<<<<<<<< -+ * debug = MPV_LOG_LEVEL_DEBUG -+ * trace = MPV_LOG_LEVEL_TRACE - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_observe_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 748, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_V); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_v, __pyx_t_6) < 0) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_observe_property, __pyx_t_7) < 0) __PYX_ERR(0, 749, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":770 -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":141 -+ * info = MPV_LOG_LEVEL_INFO -+ * v = MPV_LOG_LEVEL_V -+ * debug = MPV_LOG_LEVEL_DEBUG # <<<<<<<<<<<<<< -+ * trace = MPV_LOG_LEVEL_TRACE - * -- * @_errors # <<<<<<<<<<<<<< -- * def unobserve_property(self, data): -- * """Wraps: mpv_unobserve_property""" - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 770, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_DEBUG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_debug, __pyx_t_6) < 0) __PYX_ERR(0, 141, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":771 -+ /* "vidcutter/libs/pympv/mpv.pyx":142 -+ * v = MPV_LOG_LEVEL_V -+ * debug = MPV_LOG_LEVEL_DEBUG -+ * trace = MPV_LOG_LEVEL_TRACE # <<<<<<<<<<<<<< -+ * - * -- * @_errors -- * def unobserve_property(self, data): # <<<<<<<<<<<<<< -- * """Wraps: mpv_unobserve_property""" -- * assert self._ctx - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_unobserve_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 771, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 770, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_TRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_trace, __pyx_t_6) < 0) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_unobserve_property, __pyx_t_7) < 0) __PYX_ERR(0, 771, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":938 -+ /* "vidcutter/libs/pympv/mpv.pyx":134 - * -- * cdef class RenderContext(object): -- * API_OPENGL = "opengl" # <<<<<<<<<<<<<< -- * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME - * -+ * class LogLevels: # <<<<<<<<<<<<<< -+ * no = MPV_LOG_LEVEL_NONE -+ * fatal = MPV_LOG_LEVEL_FATAL - */ -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_API_OPENGL, __pyx_n_s_opengl) < 0) __PYX_ERR(0, 938, __pyx_L1_error) -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); -+ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LogLevels, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 134, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_LogLevels, __pyx_t_6) < 0) __PYX_ERR(0, 134, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":939 -- * cdef class RenderContext(object): -- * API_OPENGL = "opengl" -- * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":145 -+ * -+ * -+ * class EOFReasons: # <<<<<<<<<<<<<< -+ * """Known possible values for EndOfFileReached reason. - * -- * cdef: - */ -- __pyx_t_7 = __Pyx_PyInt_From_enum__mpv_render_update_flag(MPV_RENDER_UPDATE_FRAME); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 939, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOFReasons, __pyx_n_s_EOFReasons, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Known_possible_values_for_EndOfF); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_UPDATE_FRAME, __pyx_t_7) < 0) __PYX_ERR(0, 939, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - -- /* "vidcutter/libs/pympv/mpv.pyx":1009 -- * self.inited = True -- * -- * @_errors # <<<<<<<<<<<<<< -- * def set_icc_profile(self, icc_blob): -- * cdef: -+ /* "vidcutter/libs/pympv/mpv.pyx":150 -+ * You should handle the possibility that the reason may not be any of these values. -+ * """ -+ * eof = MPV_END_FILE_REASON_EOF # <<<<<<<<<<<<<< -+ * aborted = MPV_END_FILE_REASON_STOP -+ * quit = MPV_END_FILE_REASON_QUIT -+ */ -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_eof, __pyx_t_6) < 0) __PYX_ERR(0, 150, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":151 -+ * """ -+ * eof = MPV_END_FILE_REASON_EOF -+ * aborted = MPV_END_FILE_REASON_STOP # <<<<<<<<<<<<<< -+ * quit = MPV_END_FILE_REASON_QUIT -+ * error = MPV_END_FILE_REASON_ERROR - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1009, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_STOP); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_aborted, __pyx_t_6) < 0) __PYX_ERR(0, 151, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1010 -+ /* "vidcutter/libs/pympv/mpv.pyx":152 -+ * eof = MPV_END_FILE_REASON_EOF -+ * aborted = MPV_END_FILE_REASON_STOP -+ * quit = MPV_END_FILE_REASON_QUIT # <<<<<<<<<<<<<< -+ * error = MPV_END_FILE_REASON_ERROR - * -- * @_errors -- * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< -- * cdef: -- * mpv_render_param param - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_icc_profile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1010, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1009, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_QUIT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_quit, __pyx_t_6) < 0) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_icc_profile, __pyx_t_7) < 0) __PYX_ERR(0, 1010, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - -- /* "vidcutter/libs/pympv/mpv.pyx":1028 -- * return err -+ /* "vidcutter/libs/pympv/mpv.pyx":153 -+ * aborted = MPV_END_FILE_REASON_STOP -+ * quit = MPV_END_FILE_REASON_QUIT -+ * error = MPV_END_FILE_REASON_ERROR # <<<<<<<<<<<<<< -+ * - * -- * @_errors # <<<<<<<<<<<<<< -- * def set_ambient_light(self, lux): -- * cdef: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1028, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 153, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 153, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1029 -+ /* "vidcutter/libs/pympv/mpv.pyx":145 -+ * -+ * -+ * class EOFReasons: # <<<<<<<<<<<<<< -+ * """Known possible values for EndOfFileReached reason. - * -- * @_errors -- * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< -- * cdef: -- * mpv_render_param param - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_ambient_light); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1029, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_EOFReasons, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOFReasons, __pyx_t_6) < 0) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_ambient_light, __pyx_t_7) < 0) __PYX_ERR(0, 1029, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - -- /* "vidcutter/libs/pympv/mpv.pyx":1068 -- * return ret -+ /* "vidcutter/libs/pympv/mpv.pyx":318 - * -- * @_errors # <<<<<<<<<<<<<< -- * def render(self, -- * opengl_fbo=None, -- */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1068, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- -- /* "vidcutter/libs/pympv/mpv.pyx":1069 - * -- * @_errors -- * def render(self, # <<<<<<<<<<<<<< -- * opengl_fbo=None, -- * flip_y=False, -+ * def _errors(fn): # <<<<<<<<<<<<<< -+ * def wrapped(*k, **kw): -+ * v = fn(*k, **kw) - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = NULL; -- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -- if (likely(__pyx_t_1)) { -- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -- __Pyx_INCREF(__pyx_t_1); -- __Pyx_INCREF(function); -- __Pyx_DECREF_SET(__pyx_t_6, function); -- } -- } -- __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1068, __pyx_L1_error) -+ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_5_errors, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 318, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_render, __pyx_t_7) < 0) __PYX_ERR(0, 1069, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_7) < 0) __PYX_ERR(0, 318, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - -- /* "vidcutter/libs/pympv/mpv.pyx":1132 -- * init_params, *args, **kwargs) -+ /* "vidcutter/libs/pympv/mpv.pyx":326 -+ * -+ * -+ * class MPVError(Exception): # <<<<<<<<<<<<<< -+ * code = None - * -- * class CallbackThread(Thread): # <<<<<<<<<<<<<< -- * def __init__(self): -- * Thread.__init__(self) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 326, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -+ __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -+ PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -+ __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 326, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __Pyx_GIVEREF(__pyx_t_7); -- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); -- __pyx_t_7 = 0; -- __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_6, __pyx_n_s_CallbackThread, __pyx_n_s_CallbackThread, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_MPVError, __pyx_n_s_MPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 326, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - -- /* "vidcutter/libs/pympv/mpv.pyx":1133 -+ /* "vidcutter/libs/pympv/mpv.pyx":327 - * -- * class CallbackThread(Thread): -- * def __init__(self): # <<<<<<<<<<<<<< -- * Thread.__init__(self) -- * self.daemon = True -+ * class MPVError(Exception): -+ * code = None # <<<<<<<<<<<<<< -+ * -+ * def __init__(self, e): - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, 0, __pyx_n_s_CallbackThread___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 1133, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_code, Py_None) < 0) __PYX_ERR(0, 327, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1141 -- * self.isshutdown = False -+ /* "vidcutter/libs/pympv/mpv.pyx":329 -+ * code = None - * -- * def shutdown(self): # <<<<<<<<<<<<<< -- * self.isshutdown = True -- * self.callback = None -+ * def __init__(self, e): # <<<<<<<<<<<<<< -+ * self.code = e -+ * cdef const char* err_c - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, 0, __pyx_n_s_CallbackThread_shutdown, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__, 0, __pyx_n_s_MPVError___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_shutdown, __pyx_t_1) < 0) __PYX_ERR(0, 1141, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1146 -- * self.lock.release() -+ /* "vidcutter/libs/pympv/mpv.pyx":326 - * -- * def call(self): # <<<<<<<<<<<<<< -- * self.lock.release() -+ * -+ * class MPVError(Exception): # <<<<<<<<<<<<<< -+ * code = None - * - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call, 0, __pyx_n_s_CallbackThread_call, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_call, __pyx_t_1) < 0) __PYX_ERR(0, 1146, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPVError, __pyx_t_1) < 0) __PYX_ERR(0, 326, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1149 -- * self.lock.release() -+ /* "vidcutter/libs/pympv/mpv.pyx":340 -+ * Exception.__init__(self, e) - * -- * def set(self, callback): # <<<<<<<<<<<<<< -- * self.callback = callback -+ * class PyMPVError(Exception): # <<<<<<<<<<<<<< -+ * pass - * - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set, 0, __pyx_n_s_CallbackThread_set, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error) -+ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 340, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -+ __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -+ PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -+ __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_PyMPVError, __pyx_n_s_PyMPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_PyMPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_set, __pyx_t_1) < 0) __PYX_ERR(0, 1149, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyMPVError, __pyx_t_1) < 0) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1152 -- * self.callback = callback -+ /* "vidcutter/libs/pympv/mpv.pyx":343 -+ * pass - * -- * def run(self): # <<<<<<<<<<<<<< -- * while not self.isshutdown: -- * self.lock.acquire(True) -+ * cdef _callbacks = dict() # <<<<<<<<<<<<<< -+ * cdef _reply_userdatas = dict() -+ * -+ */ -+ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 343, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__callbacks); -+ __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_t_7); -+ __Pyx_GIVEREF(__pyx_t_7); -+ __pyx_t_7 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":344 -+ * -+ * cdef _callbacks = dict() -+ * cdef _reply_userdatas = dict() # <<<<<<<<<<<<<< -+ * -+ * class _ReplyUserData(object): -+ */ -+ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 344, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas); -+ __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_t_7); -+ __Pyx_GIVEREF(__pyx_t_7); -+ __pyx_t_7 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":346 -+ * cdef _reply_userdatas = dict() -+ * -+ * class _ReplyUserData(object): # <<<<<<<<<<<<<< -+ * def __init__(self, data): -+ * self.counter = 0 -+ */ -+ __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__27, __pyx_n_s_ReplyUserData, __pyx_n_s_ReplyUserData, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 346, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":347 -+ * -+ * class _ReplyUserData(object): -+ * def __init__(self, data): # <<<<<<<<<<<<<< -+ * self.counter = 0 -+ * self.data = data - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run, 0, __pyx_n_s_CallbackThread_run, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1152, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_run, __pyx_t_1) < 0) __PYX_ERR(0, 1152, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, 0, __pyx_n_s_ReplyUserData___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 347, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1157 -- * self.mpv_callback(self.callback) if self.callback else None -+ /* "vidcutter/libs/pympv/mpv.pyx":352 -+ * self.observed = False -+ * -+ * def add(self): # <<<<<<<<<<<<<< -+ * self.counter += 1 - * -- * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -- * try: -- * callback() - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, 0, __pyx_n_s_CallbackThread_mpv_callback, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1157, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mpv_callback, __pyx_t_1) < 0) __PYX_ERR(0, 1157, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, 0, __pyx_n_s_ReplyUserData_add, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_add, __pyx_t_4) < 0) __PYX_ERR(0, 352, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1132 -- * init_params, *args, **kwargs) -+ /* "vidcutter/libs/pympv/mpv.pyx":355 -+ * self.counter += 1 -+ * -+ * def remove(self): # <<<<<<<<<<<<<< -+ * self.counter -= 1 - * -- * class CallbackThread(Thread): # <<<<<<<<<<<<<< -- * def __init__(self): -- * Thread.__init__(self) - */ -- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_CallbackThread, __pyx_t_6, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1132, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallbackThread, __pyx_t_1) < 0) __PYX_ERR(0, 1132, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, 0, __pyx_n_s_ReplyUserData_remove, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_remove, __pyx_t_4) < 0) __PYX_ERR(0, 355, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "(tree fragment)":1 -- * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -+ /* "vidcutter/libs/pympv/mpv.pyx":346 -+ * cdef _reply_userdatas = dict() -+ * -+ * class _ReplyUserData(object): # <<<<<<<<<<<<<< -+ * def __init__(self, data): -+ * self.counter = 0 - */ -- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_EndOfFileReached, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ReplyUserData, __pyx_tuple__27, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplyUserData, __pyx_t_4) < 0) __PYX_ERR(0, 346, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "(tree fragment)":11 -- * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -- * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -+ /* "vidcutter/libs/pympv/mpv.pyx":411 -+ * # mpv_resume(self._ctx) -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def request_event(self, event, enable): -+ * """Enable or disable a given event. - */ -- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_9__pyx_unpickle_InputDispatch, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_InputDispatch, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "(tree fragment)":1 -- * def __pyx_unpickle_LogMessage(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -+ /* "vidcutter/libs/pympv/mpv.pyx":412 -+ * -+ * @_errors -+ * def request_event(self, event, enable): # <<<<<<<<<<<<<< -+ * """Enable or disable a given event. -+ * - */ -- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_11__pyx_unpickle_LogMessage, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_LogMessage, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_request_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); -+ } -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_request_event, __pyx_t_7) < 0) __PYX_ERR(0, 412, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "(tree fragment)":11 -- * __pyx_unpickle_LogMessage__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_LogMessage__set_state(LogMessage __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.level = __pyx_state[0]; __pyx_result.log_level = __pyx_state[1]; __pyx_result.prefix = __pyx_state[2]; __pyx_result.text = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -+ /* "vidcutter/libs/pympv/mpv.pyx":429 -+ * return err -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def set_log_level(self, loglevel): -+ * """Wraps: mpv_request_log_messages""" - */ -- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_13__pyx_unpickle_Property, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Property, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "(tree fragment)":1 -- * def __pyx_unpickle_Event(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -- * cdef object __pyx_PickleError -- * cdef object __pyx_result -+ /* "vidcutter/libs/pympv/mpv.pyx":430 -+ * -+ * @_errors -+ * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_request_log_messages""" -+ * assert self._ctx - */ -- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_15__pyx_unpickle_Event, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Event, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); -+ } -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 429, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_log_level, __pyx_t_7) < 0) __PYX_ERR(0, 430, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "(tree fragment)":11 -- * __pyx_unpickle_Event__set_state( __pyx_result, __pyx_state) -- * return __pyx_result -- * cdef __pyx_unpickle_Event__set_state(Event __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -- * __pyx_result.data = __pyx_state[0]; __pyx_result.error = __pyx_state[1]; __pyx_result.id = __pyx_state[2]; __pyx_result.reply_userdata = __pyx_state[3] -- * if len(__pyx_state) > 4 and hasattr(__pyx_result, '__dict__'): -+ /* "vidcutter/libs/pympv/mpv.pyx":440 -+ * return err -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def load_config(self, filename): -+ * """Wraps: mpv_load_config_file""" - */ -- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_17__pyx_unpickle_RenderFrameInfo, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 440, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_RenderFrameInfo, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1 -- * # 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 -+ /* "vidcutter/libs/pympv/mpv.pyx":441 -+ * -+ * @_errors -+ * def load_config(self, filename): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_load_config_file""" -+ * assert self._ctx - */ -- __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1, __pyx_L1_error) -- __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_6) < 0) __PYX_ERR(0, 1, __pyx_L1_error) -- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- -- /*--- Wrapped vars code ---*/ -- -- goto __pyx_L0; -- __pyx_L1_error:; -- __Pyx_XDECREF(__pyx_t_1); -- __Pyx_XDECREF(__pyx_t_2); -- __Pyx_XDECREF(__pyx_t_4); -- __Pyx_XDECREF(__pyx_t_6); -- __Pyx_XDECREF(__pyx_t_7); -- if (__pyx_m) { -- if (__pyx_d) { -- __Pyx_AddTraceback("init vidcutter.libs.mpv", __pyx_clineno, __pyx_lineno, __pyx_filename); -- } -- Py_CLEAR(__pyx_m); -- } else if (!PyErr_Occurred()) { -- PyErr_SetString(PyExc_ImportError, "init vidcutter.libs.mpv"); -- } -- __pyx_L0:; -- __Pyx_RefNannyFinishContext(); -- #if CYTHON_PEP489_MULTI_PHASE_INIT -- return (__pyx_m != NULL) ? 0 : -1; -- #elif PY_MAJOR_VERSION >= 3 -- return __pyx_m; -- #else -- return; -- #endif --} -- --/* --- Runtime support code --- */ --/* Refnanny */ --#if CYTHON_REFNANNY --static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { -- PyObject *m = NULL, *p = NULL; -- void *r = NULL; -- m = PyImport_ImportModule(modname); -- if (!m) goto end; -- p = PyObject_GetAttrString(m, "RefNannyAPI"); -- if (!p) goto end; -- r = PyLong_AsVoidPtr(p); --end: -- Py_XDECREF(p); -- Py_XDECREF(m); -- return (__Pyx_RefNannyAPIStruct *)r; --} --#endif -- --/* PyObjectGetAttrStr */ --#if CYTHON_USE_TYPE_SLOTS --static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { -- PyTypeObject* tp = Py_TYPE(obj); -- if (likely(tp->tp_getattro)) -- return tp->tp_getattro(obj, attr_name); --#if PY_MAJOR_VERSION < 3 -- if (likely(tp->tp_getattr)) -- return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); --#endif -- return PyObject_GetAttr(obj, attr_name); --} --#endif -- --/* GetBuiltinName */ --static PyObject *__Pyx_GetBuiltinName(PyObject *name) { -- PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); -- if (unlikely(!result)) { -- PyErr_Format(PyExc_NameError, --#if PY_MAJOR_VERSION >= 3 -- "name '%U' is not defined", name); --#else -- "name '%.200s' is not defined", PyString_AS_STRING(name)); --#endif -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_load_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); - } -- return result; --} -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 440, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_load_config, __pyx_t_7) < 0) __PYX_ERR(0, 441, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - --/* PyDictVersioning */ --#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS --static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { -- PyObject *dict = Py_TYPE(obj)->tp_dict; -- return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; --} --static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { -- PyObject **dictptr = NULL; -- Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; -- if (offset) { --#if CYTHON_COMPILING_IN_CPYTHON -- dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); --#else -- dictptr = _PyObject_GetDictPtr(obj); --#endif -- } -- return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; --} --static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { -- PyObject *dict = Py_TYPE(obj)->tp_dict; -- if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) -- return 0; -- return obj_dict_version == __Pyx_get_object_dict_version(obj); --} --#endif -+ /* "vidcutter/libs/pympv/mpv.pyx":573 -+ * return result -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def get_property_async(self, prop, data=None): -+ * """Gets the value of a property asynchronously. -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); - --/* GetModuleGlobalName */ --#if CYTHON_USE_DICT_VERSIONS --static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) --#else --static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) --#endif --{ -- PyObject *result; --#if !CYTHON_AVOID_BORROWED_REFS --#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 -- result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); -- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) -- if (likely(result)) { -- return __Pyx_NewRef(result); -- } else if (unlikely(PyErr_Occurred())) { -- return NULL; -- } --#else -- result = PyDict_GetItem(__pyx_d, name); -- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) -- if (likely(result)) { -- return __Pyx_NewRef(result); -- } --#endif --#else -- result = PyObject_GetItem(__pyx_d, name); -- __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) -- if (likely(result)) { -- return __Pyx_NewRef(result); -+ /* "vidcutter/libs/pympv/mpv.pyx":574 -+ * -+ * @_errors -+ * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< -+ * """Gets the value of a property asynchronously. -+ * -+ */ -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); - } -- PyErr_Clear(); --#endif -- return __Pyx_GetBuiltinName(name); --} -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 573, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_get_property_async, __pyx_t_7) < 0) __PYX_ERR(0, 574, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - --/* PyFunctionFastCall */ --#if CYTHON_FAST_PYCALL --static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, -- PyObject *globals) { -- PyFrameObject *f; -- PyThreadState *tstate = __Pyx_PyThreadState_Current; -- PyObject **fastlocals; -- Py_ssize_t i; -- PyObject *result; -- assert(globals != NULL); -- /* XXX Perhaps we should create a specialized -- PyFrame_New() that doesn't take locals, but does -- take builtins without sanity checking them. -- */ -- assert(tstate != NULL); -- f = PyFrame_New(tstate, co, globals, NULL); -- if (f == NULL) { -- return NULL; -- } -- fastlocals = __Pyx_PyFrame_GetLocalsplus(f); -- for (i = 0; i < na; i++) { -- Py_INCREF(*args); -- fastlocals[i] = *args++; -- } -- result = PyEval_EvalFrameEx(f,0); -- ++tstate->recursion_depth; -- Py_DECREF(f); -- --tstate->recursion_depth; -- return result; --} --#if 1 || PY_VERSION_HEX < 0x030600B1 --static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { -- PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); -- PyObject *globals = PyFunction_GET_GLOBALS(func); -- PyObject *argdefs = PyFunction_GET_DEFAULTS(func); -- PyObject *closure; --#if PY_MAJOR_VERSION >= 3 -- PyObject *kwdefs; --#endif -- PyObject *kwtuple, **k; -- PyObject **d; -- Py_ssize_t nd; -- Py_ssize_t nk; -- PyObject *result; -- assert(kwargs == NULL || PyDict_Check(kwargs)); -- nk = kwargs ? PyDict_Size(kwargs) : 0; -- if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { -- return NULL; -- } -- if ( --#if PY_MAJOR_VERSION >= 3 -- co->co_kwonlyargcount == 0 && --#endif -- likely(kwargs == NULL || nk == 0) && -- co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { -- if (argdefs == NULL && co->co_argcount == nargs) { -- result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); -- goto done; -- } -- else if (nargs == 0 && argdefs != NULL -- && co->co_argcount == Py_SIZE(argdefs)) { -- /* function called with no arguments, but all parameters have -- a default value: use default values as arguments .*/ -- args = &PyTuple_GET_ITEM(argdefs, 0); -- result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); -- goto done; -- } -+ /* "vidcutter/libs/pympv/mpv.pyx":635 -+ * return v -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def set_property(self, prop, value=True, asynchronous=False, data=None): -+ * """Wraps: mpv_set_property and mpv_set_property_async""" -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 635, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":636 -+ * -+ * @_errors -+ * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_set_property and mpv_set_property_async""" -+ * assert self._ctx -+ */ -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 636, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); - } -- if (kwargs != NULL) { -- Py_ssize_t pos, i; -- kwtuple = PyTuple_New(2 * nk); -- if (kwtuple == NULL) { -- result = NULL; -- goto done; -- } -- k = &PyTuple_GET_ITEM(kwtuple, 0); -- pos = i = 0; -- while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { -- Py_INCREF(k[i]); -- Py_INCREF(k[i+1]); -- i += 2; -- } -- nk = i / 2; -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 635, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_property, __pyx_t_7) < 0) __PYX_ERR(0, 636, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":673 -+ * return err -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def set_option(self, prop, value=True): -+ * """Wraps: mpv_set_option""" -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":674 -+ * -+ * @_errors -+ * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_set_option""" -+ * assert self._ctx -+ */ -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_option); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 674, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); - } -- else { -- kwtuple = NULL; -- k = NULL; -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 673, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_option, __pyx_t_7) < 0) __PYX_ERR(0, 674, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":695 -+ * return err -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def initialize(self): -+ * """Wraps: mpv_initialize""" -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":696 -+ * -+ * @_errors -+ * def initialize(self): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_initialize""" -+ * assert self._ctx -+ */ -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_initialize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); - } -- closure = PyFunction_GET_CLOSURE(func); --#if PY_MAJOR_VERSION >= 3 -- kwdefs = PyFunction_GET_KW_DEFAULTS(func); --#endif -- if (argdefs != NULL) { -- d = &PyTuple_GET_ITEM(argdefs, 0); -- nd = Py_SIZE(argdefs); -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 695, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_initialize, __pyx_t_7) < 0) __PYX_ERR(0, 696, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":748 -+ * self.callbackthread.start() -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def observe_property(self, prop, data=None): -+ * """Wraps: mpv_observe_property""" -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 748, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":749 -+ * -+ * @_errors -+ * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_observe_property""" -+ * assert self._ctx -+ */ -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_observe_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); - } -- else { -- d = NULL; -- nd = 0; -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 748, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_observe_property, __pyx_t_7) < 0) __PYX_ERR(0, 749, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":770 -+ * return err -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def unobserve_property(self, data): -+ * """Wraps: mpv_unobserve_property""" -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 770, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":771 -+ * -+ * @_errors -+ * def unobserve_property(self, data): # <<<<<<<<<<<<<< -+ * """Wraps: mpv_unobserve_property""" -+ * assert self._ctx -+ */ -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_unobserve_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 771, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); - } --#if PY_MAJOR_VERSION >= 3 -- result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, -- args, (int)nargs, -- k, (int)nk, -- d, (int)nd, kwdefs, closure); --#else -- result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, -- args, (int)nargs, -- k, (int)nk, -- d, (int)nd, closure); --#endif -- Py_XDECREF(kwtuple); --done: -- Py_LeaveRecursiveCall(); -- return result; --} --#endif --#endif -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 770, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_unobserve_property, __pyx_t_7) < 0) __PYX_ERR(0, 771, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - --/* PyCFunctionFastCall */ --#if CYTHON_FAST_PYCCALL --static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { -- PyCFunctionObject *func = (PyCFunctionObject*)func_obj; -- PyCFunction meth = PyCFunction_GET_FUNCTION(func); -- PyObject *self = PyCFunction_GET_SELF(func); -- int flags = PyCFunction_GET_FLAGS(func); -- assert(PyCFunction_Check(func)); -- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); -- assert(nargs >= 0); -- assert(nargs == 0 || args != NULL); -- /* _PyCFunction_FastCallDict() must not be called with an exception set, -- because it may clear it (directly or indirectly) and so the -- caller loses its exception */ -- assert(!PyErr_Occurred()); -- if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { -- return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); -- } else { -- return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); -+ /* "vidcutter/libs/pympv/mpv.pyx":938 -+ * -+ * cdef class RenderContext(object): -+ * API_OPENGL = "opengl" # <<<<<<<<<<<<<< -+ * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME -+ * -+ */ -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_API_OPENGL, __pyx_n_s_opengl) < 0) __PYX_ERR(0, 938, __pyx_L1_error) -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":939 -+ * cdef class RenderContext(object): -+ * API_OPENGL = "opengl" -+ * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME # <<<<<<<<<<<<<< -+ * -+ * cdef: -+ */ -+ __pyx_t_7 = __Pyx_PyInt_From_enum__mpv_render_update_flag(MPV_RENDER_UPDATE_FRAME); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 939, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_UPDATE_FRAME, __pyx_t_7) < 0) __PYX_ERR(0, 939, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1009 -+ * self.inited = True -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def set_icc_profile(self, icc_blob): -+ * cdef: -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1009, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1010 -+ * -+ * @_errors -+ * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< -+ * cdef: -+ * mpv_render_param param -+ */ -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_icc_profile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1010, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); -+ } -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1009, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_icc_profile, __pyx_t_7) < 0) __PYX_ERR(0, 1010, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1028 -+ * return err -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def set_ambient_light(self, lux): -+ * cdef: -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1028, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1029 -+ * -+ * @_errors -+ * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< -+ * cdef: -+ * mpv_render_param param -+ */ -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_ambient_light); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1029, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); - } --} --#endif -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_ambient_light, __pyx_t_7) < 0) __PYX_ERR(0, 1029, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - --/* PyObjectCall */ --#if CYTHON_COMPILING_IN_CPYTHON --static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { -- PyObject *result; -- ternaryfunc call = func->ob_type->tp_call; -- if (unlikely(!call)) -- return PyObject_Call(func, arg, kw); -- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) -- return NULL; -- result = (*call)(func, arg, kw); -- Py_LeaveRecursiveCall(); -- if (unlikely(!result) && unlikely(!PyErr_Occurred())) { -- PyErr_SetString( -- PyExc_SystemError, -- "NULL result without error in PyObject_Call"); -- } -- return result; --} --#endif -+ /* "vidcutter/libs/pympv/mpv.pyx":1068 -+ * return ret -+ * -+ * @_errors # <<<<<<<<<<<<<< -+ * def render(self, -+ * opengl_fbo=None, -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1068, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); - --/* GetTopmostException */ --#if CYTHON_USE_EXC_INFO_STACK --static _PyErr_StackItem * --__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) --{ -- _PyErr_StackItem *exc_info = tstate->exc_info; -- while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && -- exc_info->previous_item != NULL) -- { -- exc_info = exc_info->previous_item; -+ /* "vidcutter/libs/pympv/mpv.pyx":1069 -+ * -+ * @_errors -+ * def render(self, # <<<<<<<<<<<<<< -+ * opengl_fbo=None, -+ * flip_y=False, -+ */ -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); -+ __pyx_t_1 = NULL; -+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); -+ if (likely(__pyx_t_1)) { -+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); -+ __Pyx_INCREF(__pyx_t_1); -+ __Pyx_INCREF(function); -+ __Pyx_DECREF_SET(__pyx_t_6, function); - } -- return exc_info; --} --#endif -+ } -+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1068, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_render, __pyx_t_7) < 0) __PYX_ERR(0, 1069, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - --/* SaveResetException */ --#if CYTHON_FAST_THREAD_STATE --static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -- #if CYTHON_USE_EXC_INFO_STACK -- _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); -- *type = exc_info->exc_type; -- *value = exc_info->exc_value; -- *tb = exc_info->exc_traceback; -- #else -- *type = tstate->exc_type; -- *value = tstate->exc_value; -- *tb = tstate->exc_traceback; -- #endif -- Py_XINCREF(*type); -- Py_XINCREF(*value); -- Py_XINCREF(*tb); --} --static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -- PyObject *tmp_type, *tmp_value, *tmp_tb; -- #if CYTHON_USE_EXC_INFO_STACK -- _PyErr_StackItem *exc_info = tstate->exc_info; -- tmp_type = exc_info->exc_type; -- tmp_value = exc_info->exc_value; -- tmp_tb = exc_info->exc_traceback; -- exc_info->exc_type = type; -- exc_info->exc_value = value; -- exc_info->exc_traceback = tb; -- #else -- tmp_type = tstate->exc_type; -- tmp_value = tstate->exc_value; -- tmp_tb = tstate->exc_traceback; -- tstate->exc_type = type; -- tstate->exc_value = value; -- tstate->exc_traceback = tb; -- #endif -- Py_XDECREF(tmp_type); -- Py_XDECREF(tmp_value); -- Py_XDECREF(tmp_tb); --} --#endif -+ /* "vidcutter/libs/pympv/mpv.pyx":1132 -+ * init_params, *args, **kwargs) -+ * -+ * class CallbackThread(Thread): # <<<<<<<<<<<<<< -+ * def __init__(self): -+ * Thread.__init__(self) -+ */ -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ __Pyx_GIVEREF(__pyx_t_7); -+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); -+ __pyx_t_7 = 0; -+ __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_7); -+ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_6, __pyx_n_s_CallbackThread, __pyx_n_s_CallbackThread, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_4); - --/* PyErrExceptionMatches */ --#if CYTHON_FAST_THREAD_STATE --static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { -- Py_ssize_t i, n; -- n = PyTuple_GET_SIZE(tuple); --#if PY_MAJOR_VERSION >= 3 -- for (i=0; icurexc_type; -- if (exc_type == err) return 1; -- if (unlikely(!exc_type)) return 0; -- if (unlikely(PyTuple_Check(err))) -- return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); -- return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); --} --#endif -+ /* "vidcutter/libs/pympv/mpv.pyx":1133 -+ * -+ * class CallbackThread(Thread): -+ * def __init__(self): # <<<<<<<<<<<<<< -+ * Thread.__init__(self) -+ * self.daemon = True -+ */ -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, 0, __pyx_n_s_CallbackThread___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 1133, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1141 -+ * self.isshutdown = False -+ * -+ * def shutdown(self): # <<<<<<<<<<<<<< -+ * self.isshutdown = True -+ * self.callback = None -+ */ -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, 0, __pyx_n_s_CallbackThread_shutdown, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_shutdown, __pyx_t_1) < 0) __PYX_ERR(0, 1141, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1146 -+ * self.lock.release() -+ * -+ * def call(self): # <<<<<<<<<<<<<< -+ * self.lock.release() -+ * -+ */ -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call, 0, __pyx_n_s_CallbackThread_call, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_call, __pyx_t_1) < 0) __PYX_ERR(0, 1146, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1149 -+ * self.lock.release() -+ * -+ * def set(self, callback): # <<<<<<<<<<<<<< -+ * self.callback = callback -+ * -+ */ -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set, 0, __pyx_n_s_CallbackThread_set, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_set, __pyx_t_1) < 0) __PYX_ERR(0, 1149, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1152 -+ * self.callback = callback -+ * -+ * def run(self): # <<<<<<<<<<<<<< -+ * while not self.isshutdown: -+ * self.lock.acquire(True) -+ */ -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run, 0, __pyx_n_s_CallbackThread_run, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1152, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_run, __pyx_t_1) < 0) __PYX_ERR(0, 1152, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1157 -+ * self.mpv_callback(self.callback) if self.callback else None -+ * -+ * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -+ * try: -+ * callback() -+ */ -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, 0, __pyx_n_s_CallbackThread_mpv_callback, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1157, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mpv_callback, __pyx_t_1) < 0) __PYX_ERR(0, 1157, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ -+ /* "vidcutter/libs/pympv/mpv.pyx":1132 -+ * init_params, *args, **kwargs) -+ * -+ * class CallbackThread(Thread): # <<<<<<<<<<<<<< -+ * def __init__(self): -+ * Thread.__init__(self) -+ */ -+ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_CallbackThread, __pyx_t_6, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_1); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallbackThread, __pyx_t_1) < 0) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -+ -+ /* "(tree fragment)":1 -+ * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ */ -+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_7__pyx_unpickle_EndOfFileReached, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_EndOfFileReached, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - --/* GetException */ --#if CYTHON_FAST_THREAD_STATE --static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) --#else --static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) --#endif --{ -- PyObject *local_type, *local_value, *local_tb; --#if CYTHON_FAST_THREAD_STATE -- PyObject *tmp_type, *tmp_value, *tmp_tb; -- local_type = tstate->curexc_type; -- local_value = tstate->curexc_value; -- local_tb = tstate->curexc_traceback; -- tstate->curexc_type = 0; -- tstate->curexc_value = 0; -- tstate->curexc_traceback = 0; --#else -- PyErr_Fetch(&local_type, &local_value, &local_tb); --#endif -- PyErr_NormalizeException(&local_type, &local_value, &local_tb); --#if CYTHON_FAST_THREAD_STATE -- if (unlikely(tstate->curexc_type)) --#else -- if (unlikely(PyErr_Occurred())) --#endif -- goto bad; -- #if PY_MAJOR_VERSION >= 3 -- if (local_tb) { -- if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) -- goto bad; -- } -- #endif -- Py_XINCREF(local_tb); -- Py_XINCREF(local_type); -- Py_XINCREF(local_value); -- *type = local_type; -- *value = local_value; -- *tb = local_tb; --#if CYTHON_FAST_THREAD_STATE -- #if CYTHON_USE_EXC_INFO_STACK -- { -- _PyErr_StackItem *exc_info = tstate->exc_info; -- tmp_type = exc_info->exc_type; -- tmp_value = exc_info->exc_value; -- tmp_tb = exc_info->exc_traceback; -- exc_info->exc_type = local_type; -- exc_info->exc_value = local_value; -- exc_info->exc_traceback = local_tb; -- } -- #else -- tmp_type = tstate->exc_type; -- tmp_value = tstate->exc_value; -- tmp_tb = tstate->exc_traceback; -- tstate->exc_type = local_type; -- tstate->exc_value = local_value; -- tstate->exc_traceback = local_tb; -- #endif -- Py_XDECREF(tmp_type); -- Py_XDECREF(tmp_value); -- Py_XDECREF(tmp_tb); --#else -- PyErr_SetExcInfo(local_type, local_value, local_tb); --#endif -- return 0; --bad: -- *type = 0; -- *value = 0; -- *tb = 0; -- Py_XDECREF(local_type); -- Py_XDECREF(local_value); -- Py_XDECREF(local_tb); -- return -1; --} -+ /* "(tree fragment)":11 -+ * __pyx_unpickle_EndOfFileReached__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_EndOfFileReached__set_state(EndOfFileReached __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.error = __pyx_state[0]; __pyx_result.reason = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -+ */ -+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_9__pyx_unpickle_LogMessage, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_LogMessage, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - --/* PyObjectCallMethO */ --#if CYTHON_COMPILING_IN_CPYTHON --static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { -- PyObject *self, *result; -- PyCFunction cfunc; -- cfunc = PyCFunction_GET_FUNCTION(func); -- self = PyCFunction_GET_SELF(func); -- if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) -- return NULL; -- result = cfunc(self, arg); -- Py_LeaveRecursiveCall(); -- if (unlikely(!result) && unlikely(!PyErr_Occurred())) { -- PyErr_SetString( -- PyExc_SystemError, -- "NULL result without error in PyObject_Call"); -- } -- return result; --} --#endif -+ /* "(tree fragment)":1 -+ * def __pyx_unpickle_Property(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ */ -+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_11__pyx_unpickle_Property, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Property, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - --/* PyObjectCallOneArg */ --#if CYTHON_COMPILING_IN_CPYTHON --static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { -- PyObject *result; -- PyObject *args = PyTuple_New(1); -- if (unlikely(!args)) return NULL; -- Py_INCREF(arg); -- PyTuple_SET_ITEM(args, 0, arg); -- result = __Pyx_PyObject_Call(func, args, NULL); -- Py_DECREF(args); -- return result; --} --static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { --#if CYTHON_FAST_PYCALL -- if (PyFunction_Check(func)) { -- return __Pyx_PyFunction_FastCall(func, &arg, 1); -- } --#endif -- if (likely(PyCFunction_Check(func))) { -- if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { -- return __Pyx_PyObject_CallMethO(func, arg); --#if CYTHON_FAST_PYCCALL -- } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { -- return __Pyx_PyCFunction_FastCall(func, &arg, 1); --#endif -- } -- } -- return __Pyx__PyObject_CallOneArg(func, arg); --} --#else --static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -- PyObject *result; -- PyObject *args = PyTuple_Pack(1, arg); -- if (unlikely(!args)) return NULL; -- result = __Pyx_PyObject_Call(func, args, NULL); -- Py_DECREF(args); -- return result; --} --#endif -+ /* "(tree fragment)":11 -+ * __pyx_unpickle_Property__set_state( __pyx_result, __pyx_state) -+ * return __pyx_result -+ * cdef __pyx_unpickle_Property__set_state(Property __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< -+ * __pyx_result.data = __pyx_state[0]; __pyx_result.name = __pyx_state[1] -+ * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): -+ */ -+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_13__pyx_unpickle_Event, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Event, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - --/* PyErrFetchRestore */ --#if CYTHON_FAST_THREAD_STATE --static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -- PyObject *tmp_type, *tmp_value, *tmp_tb; -- tmp_type = tstate->curexc_type; -- tmp_value = tstate->curexc_value; -- tmp_tb = tstate->curexc_traceback; -- tstate->curexc_type = type; -- tstate->curexc_value = value; -- tstate->curexc_traceback = tb; -- Py_XDECREF(tmp_type); -- Py_XDECREF(tmp_value); -- Py_XDECREF(tmp_tb); --} --static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -- *type = tstate->curexc_type; -- *value = tstate->curexc_value; -- *tb = tstate->curexc_traceback; -- tstate->curexc_type = 0; -- tstate->curexc_value = 0; -- tstate->curexc_traceback = 0; --} --#endif -+ /* "(tree fragment)":1 -+ * def __pyx_unpickle_RenderFrameInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -+ * cdef object __pyx_PickleError -+ * cdef object __pyx_result -+ */ -+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_15__pyx_unpickle_RenderFrameInfo, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_RenderFrameInfo, __pyx_t_6) < 0) __PYX_ERR(1, 1, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - --/* GetAttr */ --static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { --#if CYTHON_USE_TYPE_SLOTS --#if PY_MAJOR_VERSION >= 3 -- if (likely(PyUnicode_Check(n))) --#else -- if (likely(PyString_Check(n))) --#endif -- return __Pyx_PyObject_GetAttrStr(o, n); --#endif -- return PyObject_GetAttr(o, n); --} -+ /* "vidcutter/libs/pympv/mpv.pyx":1 -+ * # 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 -+ */ -+ __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __Pyx_GOTREF(__pyx_t_6); -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_6) < 0) __PYX_ERR(0, 1, __pyx_L1_error) -+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - --/* GetAttr3 */ --static PyObject *__Pyx_GetAttr3Default(PyObject *d) { -- __Pyx_PyThreadState_declare -- __Pyx_PyThreadState_assign -- if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) -- return NULL; -- __Pyx_PyErr_Clear(); -- Py_INCREF(d); -- return d; -+ /*--- Wrapped vars code ---*/ -+ -+ goto __pyx_L0; -+ __pyx_L1_error:; -+ __Pyx_XDECREF(__pyx_t_1); -+ __Pyx_XDECREF(__pyx_t_2); -+ __Pyx_XDECREF(__pyx_t_4); -+ __Pyx_XDECREF(__pyx_t_6); -+ __Pyx_XDECREF(__pyx_t_7); -+ if (__pyx_m) { -+ if (__pyx_d) { -+ __Pyx_AddTraceback("init vidcutter.libs.mpv", __pyx_clineno, __pyx_lineno, __pyx_filename); -+ } -+ Py_CLEAR(__pyx_m); -+ } else if (!PyErr_Occurred()) { -+ PyErr_SetString(PyExc_ImportError, "init vidcutter.libs.mpv"); -+ } -+ __pyx_L0:; -+ __Pyx_RefNannyFinishContext(); -+ #if CYTHON_PEP489_MULTI_PHASE_INIT -+ return (__pyx_m != NULL) ? 0 : -1; -+ #elif PY_MAJOR_VERSION >= 3 -+ return __pyx_m; -+ #else -+ return; -+ #endif - } --static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { -- PyObject *r = __Pyx_GetAttr(o, n); -- return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -+ -+/* --- Runtime support code --- */ -+/* Refnanny */ -+#if CYTHON_REFNANNY -+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { -+ PyObject *m = NULL, *p = NULL; -+ void *r = NULL; -+ m = PyImport_ImportModule(modname); -+ if (!m) goto end; -+ p = PyObject_GetAttrString(m, "RefNannyAPI"); -+ if (!p) goto end; -+ r = PyLong_AsVoidPtr(p); -+end: -+ Py_XDECREF(p); -+ Py_XDECREF(m); -+ return (__Pyx_RefNannyAPIStruct *)r; - } -+#endif - --/* PyObjectCall2Args */ --static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { -- PyObject *args, *result = NULL; -- #if CYTHON_FAST_PYCALL -- if (PyFunction_Check(function)) { -- PyObject *args[2] = {arg1, arg2}; -- return __Pyx_PyFunction_FastCall(function, args, 2); -- } -- #endif -- #if CYTHON_FAST_PYCCALL -- if (__Pyx_PyFastCFunction_Check(function)) { -- PyObject *args[2] = {arg1, arg2}; -- return __Pyx_PyCFunction_FastCall(function, args, 2); -- } -- #endif -- args = PyTuple_New(2); -- if (unlikely(!args)) goto done; -- Py_INCREF(arg1); -- PyTuple_SET_ITEM(args, 0, arg1); -- Py_INCREF(arg2); -- PyTuple_SET_ITEM(args, 1, arg2); -- Py_INCREF(function); -- result = __Pyx_PyObject_Call(function, args, NULL); -- Py_DECREF(args); -- Py_DECREF(function); --done: -- return result; -+/* PyObjectGetAttrStr */ -+#if CYTHON_USE_TYPE_SLOTS -+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { -+ PyTypeObject* tp = Py_TYPE(obj); -+ if (likely(tp->tp_getattro)) -+ return tp->tp_getattro(obj, attr_name); -+#if PY_MAJOR_VERSION < 3 -+ if (likely(tp->tp_getattr)) -+ return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -+#endif -+ return PyObject_GetAttr(obj, attr_name); - } -- --/* PyObjectGetMethod */ --static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { -- PyObject *attr; --#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP -- PyTypeObject *tp = Py_TYPE(obj); -- PyObject *descr; -- descrgetfunc f = NULL; -- PyObject **dictptr, *dict; -- int meth_found = 0; -- assert (*method == NULL); -- if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { -- attr = __Pyx_PyObject_GetAttrStr(obj, name); -- goto try_unpack; -- } -- if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { -- return 0; -- } -- descr = _PyType_Lookup(tp, name); -- if (likely(descr != NULL)) { -- Py_INCREF(descr); --#if PY_MAJOR_VERSION >= 3 -- #ifdef __Pyx_CyFunction_USED -- if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) -- #else -- if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type))) -- #endif --#else -- #ifdef __Pyx_CyFunction_USED -- if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) -- #else -- if (likely(PyFunction_Check(descr))) -- #endif - #endif -- { -- meth_found = 1; -- } else { -- f = Py_TYPE(descr)->tp_descr_get; -- if (f != NULL && PyDescr_IsData(descr)) { -- attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); -- Py_DECREF(descr); -- goto try_unpack; -- } -- } -- } -- dictptr = _PyObject_GetDictPtr(obj); -- if (dictptr != NULL && (dict = *dictptr) != NULL) { -- Py_INCREF(dict); -- attr = __Pyx_PyDict_GetItemStr(dict, name); -- if (attr != NULL) { -- Py_INCREF(attr); -- Py_DECREF(dict); -- Py_XDECREF(descr); -- goto try_unpack; -- } -- Py_DECREF(dict); -- } -- if (meth_found) { -- *method = descr; -- return 1; -- } -- if (f != NULL) { -- attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); -- Py_DECREF(descr); -- goto try_unpack; -- } -- if (descr != NULL) { -- *method = descr; -- return 0; -- } -- PyErr_Format(PyExc_AttributeError, -+ -+/* GetBuiltinName */ -+static PyObject *__Pyx_GetBuiltinName(PyObject *name) { -+ PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); -+ if (unlikely(!result)) { -+ PyErr_Format(PyExc_NameError, - #if PY_MAJOR_VERSION >= 3 -- "'%.50s' object has no attribute '%U'", -- tp->tp_name, name); --#else -- "'%.50s' object has no attribute '%.400s'", -- tp->tp_name, PyString_AS_STRING(name)); --#endif -- return 0; -+ "name '%U' is not defined", name); - #else -- attr = __Pyx_PyObject_GetAttrStr(obj, name); -- goto try_unpack; -+ "name '%.200s' is not defined", PyString_AS_STRING(name)); - #endif --try_unpack: --#if CYTHON_UNPACK_METHODS -- if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { -- PyObject *function = PyMethod_GET_FUNCTION(attr); -- Py_INCREF(function); -- Py_DECREF(attr); -- *method = function; -- return 1; - } --#endif -- *method = attr; -- return 0; --} -- --/* PyObjectCallMethod1 */ --static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { -- PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); -- Py_DECREF(method); - return result; - } --static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { -- PyObject *method = NULL, *result; -- int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); -- if (likely(is_method)) { -- result = __Pyx_PyObject_Call2Args(method, obj, arg); -- Py_DECREF(method); -- return result; -- } -- if (unlikely(!method)) return NULL; -- return __Pyx__PyObject_CallMethod1(method, arg); --} - --/* append */ --static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { -- if (likely(PyList_CheckExact(L))) { -- if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; -- } else { -- PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); -- if (unlikely(!retval)) -- return -1; -- Py_DECREF(retval); -- } -- return 0; -+/* PyDictVersioning */ -+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -+static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { -+ PyObject *dict = Py_TYPE(obj)->tp_dict; -+ return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; - } -- --/* PyObjectCallNoArg */ -+static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { -+ PyObject **dictptr = NULL; -+ Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; -+ if (offset) { - #if CYTHON_COMPILING_IN_CPYTHON --static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { --#if CYTHON_FAST_PYCALL -- if (PyFunction_Check(func)) { -- return __Pyx_PyFunction_FastCall(func, NULL, 0); -- } --#endif --#ifdef __Pyx_CyFunction_USED -- if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) -+ dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); - #else -- if (likely(PyCFunction_Check(func))) -+ dictptr = _PyObject_GetDictPtr(obj); - #endif -- { -- if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { -- return __Pyx_PyObject_CallMethO(func, NULL); -- } - } -- return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -+ return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; -+} -+static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { -+ PyObject *dict = Py_TYPE(obj)->tp_dict; -+ if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) -+ return 0; -+ return obj_dict_version == __Pyx_get_object_dict_version(obj); - } - #endif - --/* GetItemInt */ --static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { -- PyObject *r; -- if (!j) return NULL; -- r = PyObject_GetItem(o, j); -- Py_DECREF(j); -- return r; --} --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, -- CYTHON_NCP_UNUSED int wraparound, -- CYTHON_NCP_UNUSED int boundscheck) { --#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- Py_ssize_t wrapped_i = i; -- if (wraparound & unlikely(i < 0)) { -- wrapped_i += PyList_GET_SIZE(o); -+/* GetModuleGlobalName */ -+#if CYTHON_USE_DICT_VERSIONS -+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) -+#else -+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) -+#endif -+{ -+ PyObject *result; -+#if !CYTHON_AVOID_BORROWED_REFS -+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 -+ result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); -+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) -+ if (likely(result)) { -+ return __Pyx_NewRef(result); -+ } else if (unlikely(PyErr_Occurred())) { -+ return NULL; - } -- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { -- PyObject *r = PyList_GET_ITEM(o, wrapped_i); -- Py_INCREF(r); -- return r; -+#else -+ result = PyDict_GetItem(__pyx_d, name); -+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) -+ if (likely(result)) { -+ return __Pyx_NewRef(result); -+ } -+#endif -+#else -+ result = PyObject_GetItem(__pyx_d, name); -+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) -+ if (likely(result)) { -+ return __Pyx_NewRef(result); - } -- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); --#else -- return PySequence_GetItem(o, i); -+ PyErr_Clear(); - #endif -+ return __Pyx_GetBuiltinName(name); - } --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, -- CYTHON_NCP_UNUSED int wraparound, -- CYTHON_NCP_UNUSED int boundscheck) { --#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- Py_ssize_t wrapped_i = i; -- if (wraparound & unlikely(i < 0)) { -- wrapped_i += PyTuple_GET_SIZE(o); -+ -+/* PyFunctionFastCall */ -+#if CYTHON_FAST_PYCALL -+static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, -+ PyObject *globals) { -+ PyFrameObject *f; -+ PyThreadState *tstate = __Pyx_PyThreadState_Current; -+ PyObject **fastlocals; -+ Py_ssize_t i; -+ PyObject *result; -+ assert(globals != NULL); -+ /* XXX Perhaps we should create a specialized -+ PyFrame_New() that doesn't take locals, but does -+ take builtins without sanity checking them. -+ */ -+ assert(tstate != NULL); -+ f = PyFrame_New(tstate, co, globals, NULL); -+ if (f == NULL) { -+ return NULL; - } -- if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { -- PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); -- Py_INCREF(r); -- return r; -+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f); -+ for (i = 0; i < na; i++) { -+ Py_INCREF(*args); -+ fastlocals[i] = *args++; - } -- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); --#else -- return PySequence_GetItem(o, i); --#endif -+ result = PyEval_EvalFrameEx(f,0); -+ ++tstate->recursion_depth; -+ Py_DECREF(f); -+ --tstate->recursion_depth; -+ return result; - } --static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, -- CYTHON_NCP_UNUSED int wraparound, -- CYTHON_NCP_UNUSED int boundscheck) { --#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS -- if (is_list || PyList_CheckExact(o)) { -- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); -- if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { -- PyObject *r = PyList_GET_ITEM(o, n); -- Py_INCREF(r); -- return r; -+#if 1 || PY_VERSION_HEX < 0x030600B1 -+static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { -+ PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); -+ PyObject *globals = PyFunction_GET_GLOBALS(func); -+ PyObject *argdefs = PyFunction_GET_DEFAULTS(func); -+ PyObject *closure; -+#if PY_MAJOR_VERSION >= 3 -+ PyObject *kwdefs; -+#endif -+ PyObject *kwtuple, **k; -+ PyObject **d; -+ Py_ssize_t nd; -+ Py_ssize_t nk; -+ PyObject *result; -+ assert(kwargs == NULL || PyDict_Check(kwargs)); -+ nk = kwargs ? PyDict_Size(kwargs) : 0; -+ if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { -+ return NULL; -+ } -+ if ( -+#if PY_MAJOR_VERSION >= 3 -+ co->co_kwonlyargcount == 0 && -+#endif -+ likely(kwargs == NULL || nk == 0) && -+ co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { -+ if (argdefs == NULL && co->co_argcount == nargs) { -+ result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); -+ goto done; -+ } -+ else if (nargs == 0 && argdefs != NULL -+ && co->co_argcount == Py_SIZE(argdefs)) { -+ /* function called with no arguments, but all parameters have -+ a default value: use default values as arguments .*/ -+ args = &PyTuple_GET_ITEM(argdefs, 0); -+ result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); -+ goto done; - } - } -- else if (PyTuple_CheckExact(o)) { -- Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); -- if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { -- PyObject *r = PyTuple_GET_ITEM(o, n); -- Py_INCREF(r); -- return r; -+ if (kwargs != NULL) { -+ Py_ssize_t pos, i; -+ kwtuple = PyTuple_New(2 * nk); -+ if (kwtuple == NULL) { -+ result = NULL; -+ goto done; - } -- } else { -- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -- if (likely(m && m->sq_item)) { -- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { -- Py_ssize_t l = m->sq_length(o); -- if (likely(l >= 0)) { -- i += l; -- } else { -- if (!PyErr_ExceptionMatches(PyExc_OverflowError)) -- return NULL; -- PyErr_Clear(); -- } -- } -- return m->sq_item(o, i); -+ k = &PyTuple_GET_ITEM(kwtuple, 0); -+ pos = i = 0; -+ while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { -+ Py_INCREF(k[i]); -+ Py_INCREF(k[i+1]); -+ i += 2; - } -+ nk = i / 2; - } --#else -- if (is_list || PySequence_Check(o)) { -- return PySequence_GetItem(o, i); -+ else { -+ kwtuple = NULL; -+ k = NULL; - } -+ closure = PyFunction_GET_CLOSURE(func); -+#if PY_MAJOR_VERSION >= 3 -+ kwdefs = PyFunction_GET_KW_DEFAULTS(func); - #endif -- return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); --} -- --/* DelItemInt */ --static int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) { -- int r; -- if (!j) return -1; -- r = PyObject_DelItem(o, j); -- Py_DECREF(j); -- return r; --} --static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i, -- CYTHON_UNUSED int is_list, CYTHON_NCP_UNUSED int wraparound) { --#if !CYTHON_USE_TYPE_SLOTS -- if (is_list || PySequence_Check(o)) { -- return PySequence_DelItem(o, i); -+ if (argdefs != NULL) { -+ d = &PyTuple_GET_ITEM(argdefs, 0); -+ nd = Py_SIZE(argdefs); -+ } -+ else { -+ d = NULL; -+ nd = 0; - } -+#if PY_MAJOR_VERSION >= 3 -+ result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, -+ args, (int)nargs, -+ k, (int)nk, -+ d, (int)nd, kwdefs, closure); - #else -- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -- if (likely(m && m->sq_ass_item)) { -- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { -- Py_ssize_t l = m->sq_length(o); -- if (likely(l >= 0)) { -- i += l; -- } else { -- if (!PyErr_ExceptionMatches(PyExc_OverflowError)) -- return -1; -- PyErr_Clear(); -- } -- } -- return m->sq_ass_item(o, i, (PyObject *)NULL); -+ result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, -+ args, (int)nargs, -+ k, (int)nk, -+ d, (int)nd, closure); -+#endif -+ Py_XDECREF(kwtuple); -+done: -+ Py_LeaveRecursiveCall(); -+ return result; -+} -+#endif -+#endif -+ -+/* PyCFunctionFastCall */ -+#if CYTHON_FAST_PYCCALL -+static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { -+ PyCFunctionObject *func = (PyCFunctionObject*)func_obj; -+ PyCFunction meth = PyCFunction_GET_FUNCTION(func); -+ PyObject *self = PyCFunction_GET_SELF(func); -+ int flags = PyCFunction_GET_FLAGS(func); -+ assert(PyCFunction_Check(func)); -+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); -+ assert(nargs >= 0); -+ assert(nargs == 0 || args != NULL); -+ /* _PyCFunction_FastCallDict() must not be called with an exception set, -+ because it may clear it (directly or indirectly) and so the -+ caller loses its exception */ -+ assert(!PyErr_Occurred()); -+ if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { -+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); -+ } else { -+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); - } -+} - #endif -- return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i)); -+ -+/* PyObjectCall */ -+#if CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { -+ PyObject *result; -+ ternaryfunc call = Py_TYPE(func)->tp_call; -+ if (unlikely(!call)) -+ return PyObject_Call(func, arg, kw); -+ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) -+ return NULL; -+ result = (*call)(func, arg, kw); -+ Py_LeaveRecursiveCall(); -+ if (unlikely(!result) && unlikely(!PyErr_Occurred())) { -+ PyErr_SetString( -+ PyExc_SystemError, -+ "NULL result without error in PyObject_Call"); -+ } -+ return result; - } -+#endif - --/* KeywordStringCheck */ --static int __Pyx_CheckKeywordStrings( -- PyObject *kwdict, -- const char* function_name, -- int kw_allowed) -+/* GetTopmostException */ -+#if CYTHON_USE_EXC_INFO_STACK -+static _PyErr_StackItem * -+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) - { -- PyObject* key = 0; -- Py_ssize_t pos = 0; --#if CYTHON_COMPILING_IN_PYPY -- if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) -- goto invalid_keyword; -- return 1; --#else -- while (PyDict_Next(kwdict, &pos, &key, 0)) { -- #if PY_MAJOR_VERSION < 3 -- if (unlikely(!PyString_Check(key))) -- #endif -- if (unlikely(!PyUnicode_Check(key))) -- goto invalid_keyword_type; -+ _PyErr_StackItem *exc_info = tstate->exc_info; -+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && -+ exc_info->previous_item != NULL) -+ { -+ exc_info = exc_info->previous_item; - } -- if ((!kw_allowed) && unlikely(key)) -- goto invalid_keyword; -- return 1; --invalid_keyword_type: -- PyErr_Format(PyExc_TypeError, -- "%.200s() keywords must be strings", function_name); -- return 0; -+ return exc_info; -+} - #endif --invalid_keyword: -- PyErr_Format(PyExc_TypeError, -- #if PY_MAJOR_VERSION < 3 -- "%.200s() got an unexpected keyword argument '%.200s'", -- function_name, PyString_AsString(key)); -+ -+/* SaveResetException */ -+#if CYTHON_FAST_THREAD_STATE -+static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -+ #if CYTHON_USE_EXC_INFO_STACK -+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); -+ *type = exc_info->exc_type; -+ *value = exc_info->exc_value; -+ *tb = exc_info->exc_traceback; - #else -- "%s() got an unexpected keyword argument '%U'", -- function_name, key); -+ *type = tstate->exc_type; -+ *value = tstate->exc_value; -+ *tb = tstate->exc_traceback; - #endif -- return 0; -+ Py_XINCREF(*type); -+ Py_XINCREF(*value); -+ Py_XINCREF(*tb); - } -- --/* None */ --static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) { -- PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname); -+static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ #if CYTHON_USE_EXC_INFO_STACK -+ _PyErr_StackItem *exc_info = tstate->exc_info; -+ tmp_type = exc_info->exc_type; -+ tmp_value = exc_info->exc_value; -+ tmp_tb = exc_info->exc_traceback; -+ exc_info->exc_type = type; -+ exc_info->exc_value = value; -+ exc_info->exc_traceback = tb; -+ #else -+ tmp_type = tstate->exc_type; -+ tmp_value = tstate->exc_value; -+ tmp_tb = tstate->exc_traceback; -+ tstate->exc_type = type; -+ tstate->exc_value = value; -+ tstate->exc_traceback = tb; -+ #endif -+ Py_XDECREF(tmp_type); -+ Py_XDECREF(tmp_value); -+ Py_XDECREF(tmp_tb); - } -+#endif - --/* RaiseException */ --#if PY_MAJOR_VERSION < 3 --static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, -- CYTHON_UNUSED PyObject *cause) { -- __Pyx_PyThreadState_declare -- Py_XINCREF(type); -- if (!value || value == Py_None) -- value = NULL; -- else -- Py_INCREF(value); -- if (!tb || tb == Py_None) -- tb = NULL; -- else { -- Py_INCREF(tb); -- if (!PyTraceBack_Check(tb)) { -- PyErr_SetString(PyExc_TypeError, -- "raise: arg 3 must be a traceback or None"); -- goto raise_error; -- } -+/* PyErrExceptionMatches */ -+#if CYTHON_FAST_THREAD_STATE -+static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { -+ Py_ssize_t i, n; -+ n = PyTuple_GET_SIZE(tuple); -+#if PY_MAJOR_VERSION >= 3 -+ for (i=0; icurexc_type; -+ if (exc_type == err) return 1; -+ if (unlikely(!exc_type)) return 0; -+ if (unlikely(PyTuple_Check(err))) -+ return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); -+ return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); - } -+#endif -+ -+/* GetException */ -+#if CYTHON_FAST_THREAD_STATE -+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) - #else --static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { -- PyObject* owned_instance = NULL; -- if (tb == Py_None) { -- tb = 0; -- } else if (tb && !PyTraceBack_Check(tb)) { -- PyErr_SetString(PyExc_TypeError, -- "raise: arg 3 must be a traceback or None"); -+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) -+#endif -+{ -+ PyObject *local_type, *local_value, *local_tb; -+#if CYTHON_FAST_THREAD_STATE -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ local_type = tstate->curexc_type; -+ local_value = tstate->curexc_value; -+ local_tb = tstate->curexc_traceback; -+ tstate->curexc_type = 0; -+ tstate->curexc_value = 0; -+ tstate->curexc_traceback = 0; -+#else -+ PyErr_Fetch(&local_type, &local_value, &local_tb); -+#endif -+ PyErr_NormalizeException(&local_type, &local_value, &local_tb); -+#if CYTHON_FAST_THREAD_STATE -+ if (unlikely(tstate->curexc_type)) -+#else -+ if (unlikely(PyErr_Occurred())) -+#endif - goto bad; -- } -- if (value == Py_None) -- value = 0; -- if (PyExceptionInstance_Check(type)) { -- if (value) { -- PyErr_SetString(PyExc_TypeError, -- "instance exception may not have a separate value"); -+ #if PY_MAJOR_VERSION >= 3 -+ if (local_tb) { -+ if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; -- } -- value = type; -- type = (PyObject*) Py_TYPE(value); -- } else if (PyExceptionClass_Check(type)) { -- PyObject *instance_class = NULL; -- if (value && PyExceptionInstance_Check(value)) { -- instance_class = (PyObject*) Py_TYPE(value); -- if (instance_class != type) { -- int is_subclass = PyObject_IsSubclass(instance_class, type); -- if (!is_subclass) { -- instance_class = NULL; -- } else if (unlikely(is_subclass == -1)) { -- goto bad; -- } else { -- type = instance_class; -- } -- } -- } -- if (!instance_class) { -- PyObject *args; -- if (!value) -- args = PyTuple_New(0); -- else if (PyTuple_Check(value)) { -- Py_INCREF(value); -- args = value; -- } else -- args = PyTuple_Pack(1, value); -- if (!args) -- goto bad; -- owned_instance = PyObject_Call(type, args, NULL); -- Py_DECREF(args); -- if (!owned_instance) -- goto bad; -- value = owned_instance; -- if (!PyExceptionInstance_Check(value)) { -- PyErr_Format(PyExc_TypeError, -- "calling %R should have returned an instance of " -- "BaseException, not %R", -- type, Py_TYPE(value)); -- goto bad; -- } -- } -- } else { -- PyErr_SetString(PyExc_TypeError, -- "raise: exception class must be a subclass of BaseException"); -- goto bad; - } -- if (cause) { -- PyObject *fixed_cause; -- if (cause == Py_None) { -- fixed_cause = NULL; -- } else if (PyExceptionClass_Check(cause)) { -- fixed_cause = PyObject_CallObject(cause, NULL); -- if (fixed_cause == NULL) -- goto bad; -- } else if (PyExceptionInstance_Check(cause)) { -- fixed_cause = cause; -- Py_INCREF(fixed_cause); -- } else { -- PyErr_SetString(PyExc_TypeError, -- "exception causes must derive from " -- "BaseException"); -- goto bad; -+ #endif -+ Py_XINCREF(local_tb); -+ Py_XINCREF(local_type); -+ Py_XINCREF(local_value); -+ *type = local_type; -+ *value = local_value; -+ *tb = local_tb; -+#if CYTHON_FAST_THREAD_STATE -+ #if CYTHON_USE_EXC_INFO_STACK -+ { -+ _PyErr_StackItem *exc_info = tstate->exc_info; -+ tmp_type = exc_info->exc_type; -+ tmp_value = exc_info->exc_value; -+ tmp_tb = exc_info->exc_traceback; -+ exc_info->exc_type = local_type; -+ exc_info->exc_value = local_value; -+ exc_info->exc_traceback = local_tb; -+ } -+ #else -+ tmp_type = tstate->exc_type; -+ tmp_value = tstate->exc_value; -+ tmp_tb = tstate->exc_traceback; -+ tstate->exc_type = local_type; -+ tstate->exc_value = local_value; -+ tstate->exc_traceback = local_tb; -+ #endif -+ Py_XDECREF(tmp_type); -+ Py_XDECREF(tmp_value); -+ Py_XDECREF(tmp_tb); -+#else -+ PyErr_SetExcInfo(local_type, local_value, local_tb); -+#endif -+ return 0; -+bad: -+ *type = 0; -+ *value = 0; -+ *tb = 0; -+ Py_XDECREF(local_type); -+ Py_XDECREF(local_value); -+ Py_XDECREF(local_tb); -+ return -1; -+} -+ -+/* PyObjectCallMethO */ -+#if CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { -+ PyObject *self, *result; -+ PyCFunction cfunc; -+ cfunc = PyCFunction_GET_FUNCTION(func); -+ self = PyCFunction_GET_SELF(func); -+ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) -+ return NULL; -+ result = cfunc(self, arg); -+ Py_LeaveRecursiveCall(); -+ if (unlikely(!result) && unlikely(!PyErr_Occurred())) { -+ PyErr_SetString( -+ PyExc_SystemError, -+ "NULL result without error in PyObject_Call"); -+ } -+ return result; -+} -+#endif -+ -+/* PyObjectCallOneArg */ -+#if CYTHON_COMPILING_IN_CPYTHON -+static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { -+ PyObject *result; -+ PyObject *args = PyTuple_New(1); -+ if (unlikely(!args)) return NULL; -+ Py_INCREF(arg); -+ PyTuple_SET_ITEM(args, 0, arg); -+ result = __Pyx_PyObject_Call(func, args, NULL); -+ Py_DECREF(args); -+ return result; -+} -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -+#if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(func)) { -+ return __Pyx_PyFunction_FastCall(func, &arg, 1); -+ } -+#endif -+ if (likely(PyCFunction_Check(func))) { -+ if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { -+ return __Pyx_PyObject_CallMethO(func, arg); -+#if CYTHON_FAST_PYCCALL -+ } else if (__Pyx_PyFastCFunction_Check(func)) { -+ return __Pyx_PyCFunction_FastCall(func, &arg, 1); -+#endif - } -- PyException_SetCause(value, fixed_cause); - } -- PyErr_SetObject(type, value); -- if (tb) { --#if CYTHON_COMPILING_IN_PYPY -- PyObject *tmp_type, *tmp_value, *tmp_tb; -- PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); -- Py_INCREF(tb); -- PyErr_Restore(tmp_type, tmp_value, tb); -- Py_XDECREF(tmp_tb); -+ return __Pyx__PyObject_CallOneArg(func, arg); -+} - #else -- PyThreadState *tstate = __Pyx_PyThreadState_Current; -- PyObject* tmp_tb = tstate->curexc_traceback; -- if (tb != tmp_tb) { -- Py_INCREF(tb); -- tstate->curexc_traceback = tb; -- Py_XDECREF(tmp_tb); -- } -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -+ PyObject *result; -+ PyObject *args = PyTuple_Pack(1, arg); -+ if (unlikely(!args)) return NULL; -+ result = __Pyx_PyObject_Call(func, args, NULL); -+ Py_DECREF(args); -+ return result; -+} - #endif -- } --bad: -- Py_XDECREF(owned_instance); -- return; -+ -+/* PyErrFetchRestore */ -+#if CYTHON_FAST_THREAD_STATE -+static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ tmp_type = tstate->curexc_type; -+ tmp_value = tstate->curexc_value; -+ tmp_tb = tstate->curexc_traceback; -+ tstate->curexc_type = type; -+ tstate->curexc_value = value; -+ tstate->curexc_traceback = tb; -+ Py_XDECREF(tmp_type); -+ Py_XDECREF(tmp_value); -+ Py_XDECREF(tmp_tb); -+} -+static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -+ *type = tstate->curexc_type; -+ *value = tstate->curexc_value; -+ *tb = tstate->curexc_traceback; -+ tstate->curexc_type = 0; -+ tstate->curexc_value = 0; -+ tstate->curexc_traceback = 0; - } - #endif - --/* FetchCommonType */ --static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { -- PyObject* fake_module; -- PyTypeObject* cached_type = NULL; -- fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); -- if (!fake_module) return NULL; -- Py_INCREF(fake_module); -- cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); -- if (cached_type) { -- if (!PyType_Check((PyObject*)cached_type)) { -- PyErr_Format(PyExc_TypeError, -- "Shared Cython type %.200s is not a type object", -- type->tp_name); -- goto bad; -- } -- if (cached_type->tp_basicsize != type->tp_basicsize) { -- PyErr_Format(PyExc_TypeError, -- "Shared Cython type %.200s has the wrong size, try recompiling", -- type->tp_name); -- goto bad; -- } -- } else { -- if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; -- PyErr_Clear(); -- if (PyType_Ready(type) < 0) goto bad; -- if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) -- goto bad; -- Py_INCREF(type); -- cached_type = type; -+/* GetAttr */ -+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -+#if CYTHON_USE_TYPE_SLOTS -+#if PY_MAJOR_VERSION >= 3 -+ if (likely(PyUnicode_Check(n))) -+#else -+ if (likely(PyString_Check(n))) -+#endif -+ return __Pyx_PyObject_GetAttrStr(o, n); -+#endif -+ return PyObject_GetAttr(o, n); -+} -+ -+/* GetAttr3 */ -+static PyObject *__Pyx_GetAttr3Default(PyObject *d) { -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) -+ return NULL; -+ __Pyx_PyErr_Clear(); -+ Py_INCREF(d); -+ return d; -+} -+static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { -+ PyObject *r = __Pyx_GetAttr(o, n); -+ return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -+} -+ -+/* PyObjectCall2Args */ -+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { -+ PyObject *args, *result = NULL; -+ #if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(function)) { -+ PyObject *args[2] = {arg1, arg2}; -+ return __Pyx_PyFunction_FastCall(function, args, 2); -+ } -+ #endif -+ #if CYTHON_FAST_PYCCALL -+ if (__Pyx_PyFastCFunction_Check(function)) { -+ PyObject *args[2] = {arg1, arg2}; -+ return __Pyx_PyCFunction_FastCall(function, args, 2); - } -+ #endif -+ args = PyTuple_New(2); -+ if (unlikely(!args)) goto done; -+ Py_INCREF(arg1); -+ PyTuple_SET_ITEM(args, 0, arg1); -+ Py_INCREF(arg2); -+ PyTuple_SET_ITEM(args, 1, arg2); -+ Py_INCREF(function); -+ result = __Pyx_PyObject_Call(function, args, NULL); -+ Py_DECREF(args); -+ Py_DECREF(function); - done: -- Py_DECREF(fake_module); -- return cached_type; --bad: -- Py_XDECREF(cached_type); -- cached_type = NULL; -- goto done; -+ return result; - } - --/* CythonFunctionShared */ --#include --static PyObject * --__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) --{ -- if (unlikely(op->func_doc == NULL)) { -- if (op->func.m_ml->ml_doc) { -+/* PyObjectGetMethod */ -+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { -+ PyObject *attr; -+#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP -+ PyTypeObject *tp = Py_TYPE(obj); -+ PyObject *descr; -+ descrgetfunc f = NULL; -+ PyObject **dictptr, *dict; -+ int meth_found = 0; -+ assert (*method == NULL); -+ if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { -+ attr = __Pyx_PyObject_GetAttrStr(obj, name); -+ goto try_unpack; -+ } -+ if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { -+ return 0; -+ } -+ descr = _PyType_Lookup(tp, name); -+ if (likely(descr != NULL)) { -+ Py_INCREF(descr); - #if PY_MAJOR_VERSION >= 3 -- op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -+ #ifdef __Pyx_CyFunction_USED -+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) -+ #else -+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type))) -+ #endif - #else -- op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -+ #ifdef __Pyx_CyFunction_USED -+ if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) -+ #else -+ if (likely(PyFunction_Check(descr))) -+ #endif - #endif -- if (unlikely(op->func_doc == NULL)) -- return NULL; -+ { -+ meth_found = 1; - } else { -- Py_INCREF(Py_None); -- return Py_None; -+ f = Py_TYPE(descr)->tp_descr_get; -+ if (f != NULL && PyDescr_IsData(descr)) { -+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); -+ Py_DECREF(descr); -+ goto try_unpack; -+ } -+ } -+ } -+ dictptr = _PyObject_GetDictPtr(obj); -+ if (dictptr != NULL && (dict = *dictptr) != NULL) { -+ Py_INCREF(dict); -+ attr = __Pyx_PyDict_GetItemStr(dict, name); -+ if (attr != NULL) { -+ Py_INCREF(attr); -+ Py_DECREF(dict); -+ Py_XDECREF(descr); -+ goto try_unpack; - } -+ Py_DECREF(dict); - } -- Py_INCREF(op->func_doc); -- return op->func_doc; --} --static int --__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) --{ -- PyObject *tmp = op->func_doc; -- if (value == NULL) { -- value = Py_None; -+ if (meth_found) { -+ *method = descr; -+ return 1; - } -- Py_INCREF(value); -- op->func_doc = value; -- Py_XDECREF(tmp); -- return 0; --} --static PyObject * --__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) --{ -- if (unlikely(op->func_name == NULL)) { --#if PY_MAJOR_VERSION >= 3 -- op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); --#else -- op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); --#endif -- if (unlikely(op->func_name == NULL)) -- return NULL; -+ if (f != NULL) { -+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); -+ Py_DECREF(descr); -+ goto try_unpack; - } -- Py_INCREF(op->func_name); -- return op->func_name; --} --static int --__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) --{ -- PyObject *tmp; -+ if (descr != NULL) { -+ *method = descr; -+ return 0; -+ } -+ PyErr_Format(PyExc_AttributeError, - #if PY_MAJOR_VERSION >= 3 -- if (unlikely(value == NULL || !PyUnicode_Check(value))) -+ "'%.50s' object has no attribute '%U'", -+ tp->tp_name, name); - #else -- if (unlikely(value == NULL || !PyString_Check(value))) -+ "'%.50s' object has no attribute '%.400s'", -+ tp->tp_name, PyString_AS_STRING(name)); - #endif -- { -- PyErr_SetString(PyExc_TypeError, -- "__name__ must be set to a string object"); -- return -1; -- } -- tmp = op->func_name; -- Py_INCREF(value); -- op->func_name = value; -- Py_XDECREF(tmp); - return 0; --} --static PyObject * --__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) --{ -- Py_INCREF(op->func_qualname); -- return op->func_qualname; --} --static int --__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) --{ -- PyObject *tmp; --#if PY_MAJOR_VERSION >= 3 -- if (unlikely(value == NULL || !PyUnicode_Check(value))) - #else -- if (unlikely(value == NULL || !PyString_Check(value))) -+ attr = __Pyx_PyObject_GetAttrStr(obj, name); -+ goto try_unpack; - #endif -- { -- PyErr_SetString(PyExc_TypeError, -- "__qualname__ must be set to a string object"); -- return -1; -- } -- tmp = op->func_qualname; -- Py_INCREF(value); -- op->func_qualname = value; -- Py_XDECREF(tmp); -- return 0; --} --static PyObject * --__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) --{ -- PyObject *self; -- self = m->func_closure; -- if (self == NULL) -- self = Py_None; -- Py_INCREF(self); -- return self; --} --static PyObject * --__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) --{ -- if (unlikely(op->func_dict == NULL)) { -- op->func_dict = PyDict_New(); -- if (unlikely(op->func_dict == NULL)) -- return NULL; -- } -- Py_INCREF(op->func_dict); -- return op->func_dict; --} --static int --__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) --{ -- PyObject *tmp; -- if (unlikely(value == NULL)) { -- PyErr_SetString(PyExc_TypeError, -- "function's dictionary may not be deleted"); -- return -1; -- } -- if (unlikely(!PyDict_Check(value))) { -- PyErr_SetString(PyExc_TypeError, -- "setting function's dictionary to a non-dict"); -- return -1; -+try_unpack: -+#if CYTHON_UNPACK_METHODS -+ if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { -+ PyObject *function = PyMethod_GET_FUNCTION(attr); -+ Py_INCREF(function); -+ Py_DECREF(attr); -+ *method = function; -+ return 1; - } -- tmp = op->func_dict; -- Py_INCREF(value); -- op->func_dict = value; -- Py_XDECREF(tmp); -+#endif -+ *method = attr; - return 0; - } --static PyObject * --__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) --{ -- Py_INCREF(op->func_globals); -- return op->func_globals; --} --static PyObject * --__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) --{ -- Py_INCREF(Py_None); -- return Py_None; --} --static PyObject * --__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) --{ -- PyObject* result = (op->func_code) ? op->func_code : Py_None; -- Py_INCREF(result); -- return result; --} --static int --__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { -- int result = 0; -- PyObject *res = op->defaults_getter((PyObject *) op); -- if (unlikely(!res)) -- return -1; -- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- op->defaults_tuple = PyTuple_GET_ITEM(res, 0); -- Py_INCREF(op->defaults_tuple); -- op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); -- Py_INCREF(op->defaults_kwdict); -- #else -- op->defaults_tuple = PySequence_ITEM(res, 0); -- if (unlikely(!op->defaults_tuple)) result = -1; -- else { -- op->defaults_kwdict = PySequence_ITEM(res, 1); -- if (unlikely(!op->defaults_kwdict)) result = -1; -- } -- #endif -- Py_DECREF(res); -+ -+/* PyObjectCallMethod1 */ -+static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { -+ PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); -+ Py_DECREF(method); - return result; - } --static int --__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { -- PyObject* tmp; -- if (!value) { -- value = Py_None; -- } else if (value != Py_None && !PyTuple_Check(value)) { -- PyErr_SetString(PyExc_TypeError, -- "__defaults__ must be set to a tuple object"); -- return -1; -- } -- Py_INCREF(value); -- tmp = op->defaults_tuple; -- op->defaults_tuple = value; -- Py_XDECREF(tmp); -- return 0; --} --static PyObject * --__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { -- PyObject* result = op->defaults_tuple; -- if (unlikely(!result)) { -- if (op->defaults_getter) { -- if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; -- result = op->defaults_tuple; -- } else { -- result = Py_None; -- } -+static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { -+ PyObject *method = NULL, *result; -+ int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); -+ if (likely(is_method)) { -+ result = __Pyx_PyObject_Call2Args(method, obj, arg); -+ Py_DECREF(method); -+ return result; - } -- Py_INCREF(result); -- return result; -+ if (unlikely(!method)) return NULL; -+ return __Pyx__PyObject_CallMethod1(method, arg); - } --static int --__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { -- PyObject* tmp; -- if (!value) { -- value = Py_None; -- } else if (value != Py_None && !PyDict_Check(value)) { -- PyErr_SetString(PyExc_TypeError, -- "__kwdefaults__ must be set to a dict object"); -- return -1; -+ -+/* append */ -+static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { -+ if (likely(PyList_CheckExact(L))) { -+ if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; -+ } else { -+ PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); -+ if (unlikely(!retval)) -+ return -1; -+ Py_DECREF(retval); - } -- Py_INCREF(value); -- tmp = op->defaults_kwdict; -- op->defaults_kwdict = value; -- Py_XDECREF(tmp); - return 0; - } --static PyObject * --__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { -- PyObject* result = op->defaults_kwdict; -- if (unlikely(!result)) { -- if (op->defaults_getter) { -- if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; -- result = op->defaults_kwdict; -- } else { -- result = Py_None; -+ -+/* PyObjectCallNoArg */ -+#if CYTHON_COMPILING_IN_CPYTHON -+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -+#if CYTHON_FAST_PYCALL -+ if (PyFunction_Check(func)) { -+ return __Pyx_PyFunction_FastCall(func, NULL, 0); -+ } -+#endif -+#ifdef __Pyx_CyFunction_USED -+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) -+#else -+ if (likely(PyCFunction_Check(func))) -+#endif -+ { -+ if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { -+ return __Pyx_PyObject_CallMethO(func, NULL); - } - } -- Py_INCREF(result); -- return result; -+ return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); - } --static int --__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { -- PyObject* tmp; -- if (!value || value == Py_None) { -- value = NULL; -- } else if (!PyDict_Check(value)) { -- PyErr_SetString(PyExc_TypeError, -- "__annotations__ must be set to a dict object"); -- return -1; -+#endif -+ -+/* GetItemInt */ -+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { -+ PyObject *r; -+ if (!j) return NULL; -+ r = PyObject_GetItem(o, j); -+ Py_DECREF(j); -+ return r; -+} -+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, -+ CYTHON_NCP_UNUSED int wraparound, -+ CYTHON_NCP_UNUSED int boundscheck) { -+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ Py_ssize_t wrapped_i = i; -+ if (wraparound & unlikely(i < 0)) { -+ wrapped_i += PyList_GET_SIZE(o); - } -- Py_XINCREF(value); -- tmp = op->func_annotations; -- op->func_annotations = value; -- Py_XDECREF(tmp); -- return 0; -+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { -+ PyObject *r = PyList_GET_ITEM(o, wrapped_i); -+ Py_INCREF(r); -+ return r; -+ } -+ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -+#else -+ return PySequence_GetItem(o, i); -+#endif - } --static PyObject * --__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { -- PyObject* result = op->func_annotations; -- if (unlikely(!result)) { -- result = PyDict_New(); -- if (unlikely(!result)) return NULL; -- op->func_annotations = result; -+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, -+ CYTHON_NCP_UNUSED int wraparound, -+ CYTHON_NCP_UNUSED int boundscheck) { -+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ Py_ssize_t wrapped_i = i; -+ if (wraparound & unlikely(i < 0)) { -+ wrapped_i += PyTuple_GET_SIZE(o); - } -- Py_INCREF(result); -- return result; -+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { -+ PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); -+ Py_INCREF(r); -+ return r; -+ } -+ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -+#else -+ return PySequence_GetItem(o, i); -+#endif - } --static PyGetSetDef __pyx_CyFunction_getsets[] = { -- {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, -- {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, -- {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, -- {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, -- {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, -- {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, -- {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, -- {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, -- {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, -- {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, -- {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, -- {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, -- {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, -- {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, -- {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, -- {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, -- {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, -- {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, -- {0, 0, 0, 0, 0} --}; --static PyMemberDef __pyx_CyFunction_members[] = { -- {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, -- {0, 0, 0, 0, 0} --}; --static PyObject * --__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) --{ --#if PY_MAJOR_VERSION >= 3 -- return PyUnicode_FromString(m->func.m_ml->ml_name); -+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, -+ CYTHON_NCP_UNUSED int wraparound, -+ CYTHON_NCP_UNUSED int boundscheck) { -+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS -+ if (is_list || PyList_CheckExact(o)) { -+ Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); -+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { -+ PyObject *r = PyList_GET_ITEM(o, n); -+ Py_INCREF(r); -+ return r; -+ } -+ } -+ else if (PyTuple_CheckExact(o)) { -+ Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); -+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { -+ PyObject *r = PyTuple_GET_ITEM(o, n); -+ Py_INCREF(r); -+ return r; -+ } -+ } else { -+ PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -+ if (likely(m && m->sq_item)) { -+ if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { -+ Py_ssize_t l = m->sq_length(o); -+ if (likely(l >= 0)) { -+ i += l; -+ } else { -+ if (!PyErr_ExceptionMatches(PyExc_OverflowError)) -+ return NULL; -+ PyErr_Clear(); -+ } -+ } -+ return m->sq_item(o, i); -+ } -+ } - #else -- return PyString_FromString(m->func.m_ml->ml_name); -+ if (is_list || PySequence_Check(o)) { -+ return PySequence_GetItem(o, i); -+ } - #endif -+ return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); - } --static PyMethodDef __pyx_CyFunction_methods[] = { -- {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, -- {0, 0, 0, 0} --}; --#if PY_VERSION_HEX < 0x030500A0 --#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -+ -+/* DelItemInt */ -+static int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) { -+ int r; -+ if (!j) return -1; -+ r = PyObject_DelItem(o, j); -+ Py_DECREF(j); -+ return r; -+} -+static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i, -+ CYTHON_UNUSED int is_list, CYTHON_NCP_UNUSED int wraparound) { -+#if !CYTHON_USE_TYPE_SLOTS -+ if (is_list || PySequence_Check(o)) { -+ return PySequence_DelItem(o, i); -+ } - #else --#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -+ PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -+ if (likely(m && m->sq_ass_item)) { -+ if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { -+ Py_ssize_t l = m->sq_length(o); -+ if (likely(l >= 0)) { -+ i += l; -+ } else { -+ if (!PyErr_ExceptionMatches(PyExc_OverflowError)) -+ return -1; -+ PyErr_Clear(); -+ } -+ } -+ return m->sq_ass_item(o, i, (PyObject *)NULL); -+ } - #endif --static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, -- PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { -- if (unlikely(op == NULL)) -- return NULL; -- op->flags = flags; -- __Pyx_CyFunction_weakreflist(op) = NULL; -- op->func.m_ml = ml; -- op->func.m_self = (PyObject *) op; -- Py_XINCREF(closure); -- op->func_closure = closure; -- Py_XINCREF(module); -- op->func.m_module = module; -- op->func_dict = NULL; -- op->func_name = NULL; -- Py_INCREF(qualname); -- op->func_qualname = qualname; -- op->func_doc = NULL; -- op->func_classobj = NULL; -- op->func_globals = globals; -- Py_INCREF(op->func_globals); -- Py_XINCREF(code); -- op->func_code = code; -- op->defaults_pyobjects = 0; -- op->defaults_size = 0; -- op->defaults = NULL; -- op->defaults_tuple = NULL; -- op->defaults_kwdict = NULL; -- op->defaults_getter = NULL; -- op->func_annotations = NULL; -- return (PyObject *) op; -+ return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i)); - } --static int --__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -+ -+/* KeywordStringCheck */ -+static int __Pyx_CheckKeywordStrings( -+ PyObject *kwdict, -+ const char* function_name, -+ int kw_allowed) - { -- Py_CLEAR(m->func_closure); -- Py_CLEAR(m->func.m_module); -- Py_CLEAR(m->func_dict); -- Py_CLEAR(m->func_name); -- Py_CLEAR(m->func_qualname); -- Py_CLEAR(m->func_doc); -- Py_CLEAR(m->func_globals); -- Py_CLEAR(m->func_code); -- Py_CLEAR(m->func_classobj); -- Py_CLEAR(m->defaults_tuple); -- Py_CLEAR(m->defaults_kwdict); -- Py_CLEAR(m->func_annotations); -- if (m->defaults) { -- PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); -- int i; -- for (i = 0; i < m->defaults_pyobjects; i++) -- Py_XDECREF(pydefaults[i]); -- PyObject_Free(m->defaults); -- m->defaults = NULL; -+ PyObject* key = 0; -+ Py_ssize_t pos = 0; -+#if CYTHON_COMPILING_IN_PYPY -+ if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) -+ goto invalid_keyword; -+ return 1; -+#else -+ while (PyDict_Next(kwdict, &pos, &key, 0)) { -+ #if PY_MAJOR_VERSION < 3 -+ if (unlikely(!PyString_Check(key))) -+ #endif -+ if (unlikely(!PyUnicode_Check(key))) -+ goto invalid_keyword_type; - } -+ if ((!kw_allowed) && unlikely(key)) -+ goto invalid_keyword; -+ return 1; -+invalid_keyword_type: -+ PyErr_Format(PyExc_TypeError, -+ "%.200s() keywords must be strings", function_name); -+ return 0; -+#endif -+invalid_keyword: -+ PyErr_Format(PyExc_TypeError, -+ #if PY_MAJOR_VERSION < 3 -+ "%.200s() got an unexpected keyword argument '%.200s'", -+ function_name, PyString_AsString(key)); -+ #else -+ "%s() got an unexpected keyword argument '%U'", -+ function_name, key); -+ #endif - return 0; - } --static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) --{ -- if (__Pyx_CyFunction_weakreflist(m) != NULL) -- PyObject_ClearWeakRefs((PyObject *) m); -- __Pyx_CyFunction_clear(m); -- PyObject_GC_Del(m); --} --static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) --{ -- PyObject_GC_UnTrack(m); -- __Pyx__CyFunction_dealloc(m); -+ -+/* None */ -+static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) { -+ PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname); - } --static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) --{ -- Py_VISIT(m->func_closure); -- Py_VISIT(m->func.m_module); -- Py_VISIT(m->func_dict); -- Py_VISIT(m->func_name); -- Py_VISIT(m->func_qualname); -- Py_VISIT(m->func_doc); -- Py_VISIT(m->func_globals); -- Py_VISIT(m->func_code); -- Py_VISIT(m->func_classobj); -- Py_VISIT(m->defaults_tuple); -- Py_VISIT(m->defaults_kwdict); -- if (m->defaults) { -- PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); -- int i; -- for (i = 0; i < m->defaults_pyobjects; i++) -- Py_VISIT(pydefaults[i]); -+ -+/* RaiseException */ -+#if PY_MAJOR_VERSION < 3 -+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, -+ CYTHON_UNUSED PyObject *cause) { -+ __Pyx_PyThreadState_declare -+ Py_XINCREF(type); -+ if (!value || value == Py_None) -+ value = NULL; -+ else -+ Py_INCREF(value); -+ if (!tb || tb == Py_None) -+ tb = NULL; -+ else { -+ Py_INCREF(tb); -+ if (!PyTraceBack_Check(tb)) { -+ PyErr_SetString(PyExc_TypeError, -+ "raise: arg 3 must be a traceback or None"); -+ goto raise_error; -+ } - } -- return 0; -+ if (PyType_Check(type)) { -+#if CYTHON_COMPILING_IN_PYPY -+ if (!value) { -+ Py_INCREF(Py_None); -+ value = Py_None; -+ } -+#endif -+ PyErr_NormalizeException(&type, &value, &tb); -+ } else { -+ if (value) { -+ PyErr_SetString(PyExc_TypeError, -+ "instance exception may not have a separate value"); -+ goto raise_error; -+ } -+ value = type; -+ type = (PyObject*) Py_TYPE(type); -+ Py_INCREF(type); -+ if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { -+ PyErr_SetString(PyExc_TypeError, -+ "raise: exception class must be a subclass of BaseException"); -+ goto raise_error; -+ } -+ } -+ __Pyx_PyThreadState_assign -+ __Pyx_ErrRestore(type, value, tb); -+ return; -+raise_error: -+ Py_XDECREF(value); -+ Py_XDECREF(type); -+ Py_XDECREF(tb); -+ return; - } --static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) --{ --#if PY_MAJOR_VERSION < 3 -- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -- if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { -- Py_INCREF(func); -- return func; -+#else -+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { -+ PyObject* owned_instance = NULL; -+ if (tb == Py_None) { -+ tb = 0; -+ } else if (tb && !PyTraceBack_Check(tb)) { -+ PyErr_SetString(PyExc_TypeError, -+ "raise: arg 3 must be a traceback or None"); -+ goto bad; - } -- if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { -- if (type == NULL) -- type = (PyObject *)(Py_TYPE(obj)); -- return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); -+ if (value == Py_None) -+ value = 0; -+ if (PyExceptionInstance_Check(type)) { -+ if (value) { -+ PyErr_SetString(PyExc_TypeError, -+ "instance exception may not have a separate value"); -+ goto bad; -+ } -+ value = type; -+ type = (PyObject*) Py_TYPE(value); -+ } else if (PyExceptionClass_Check(type)) { -+ PyObject *instance_class = NULL; -+ if (value && PyExceptionInstance_Check(value)) { -+ instance_class = (PyObject*) Py_TYPE(value); -+ if (instance_class != type) { -+ int is_subclass = PyObject_IsSubclass(instance_class, type); -+ if (!is_subclass) { -+ instance_class = NULL; -+ } else if (unlikely(is_subclass == -1)) { -+ goto bad; -+ } else { -+ type = instance_class; -+ } -+ } -+ } -+ if (!instance_class) { -+ PyObject *args; -+ if (!value) -+ args = PyTuple_New(0); -+ else if (PyTuple_Check(value)) { -+ Py_INCREF(value); -+ args = value; -+ } else -+ args = PyTuple_Pack(1, value); -+ if (!args) -+ goto bad; -+ owned_instance = PyObject_Call(type, args, NULL); -+ Py_DECREF(args); -+ if (!owned_instance) -+ goto bad; -+ value = owned_instance; -+ if (!PyExceptionInstance_Check(value)) { -+ PyErr_Format(PyExc_TypeError, -+ "calling %R should have returned an instance of " -+ "BaseException, not %R", -+ type, Py_TYPE(value)); -+ goto bad; -+ } -+ } -+ } else { -+ PyErr_SetString(PyExc_TypeError, -+ "raise: exception class must be a subclass of BaseException"); -+ goto bad; - } -- if (obj == Py_None) -- obj = NULL; -+ if (cause) { -+ PyObject *fixed_cause; -+ if (cause == Py_None) { -+ fixed_cause = NULL; -+ } else if (PyExceptionClass_Check(cause)) { -+ fixed_cause = PyObject_CallObject(cause, NULL); -+ if (fixed_cause == NULL) -+ goto bad; -+ } else if (PyExceptionInstance_Check(cause)) { -+ fixed_cause = cause; -+ Py_INCREF(fixed_cause); -+ } else { -+ PyErr_SetString(PyExc_TypeError, -+ "exception causes must derive from " -+ "BaseException"); -+ goto bad; -+ } -+ PyException_SetCause(value, fixed_cause); -+ } -+ PyErr_SetObject(type, value); -+ if (tb) { -+#if CYTHON_COMPILING_IN_PYPY -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); -+ Py_INCREF(tb); -+ PyErr_Restore(tmp_type, tmp_value, tb); -+ Py_XDECREF(tmp_tb); -+#else -+ PyThreadState *tstate = __Pyx_PyThreadState_Current; -+ PyObject* tmp_tb = tstate->curexc_traceback; -+ if (tb != tmp_tb) { -+ Py_INCREF(tb); -+ tstate->curexc_traceback = tb; -+ Py_XDECREF(tmp_tb); -+ } - #endif -- return __Pyx_PyMethod_New(func, obj, type); -+ } -+bad: -+ Py_XDECREF(owned_instance); -+ return; -+} -+#endif -+ -+/* FetchCommonType */ -+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { -+ PyObject* fake_module; -+ PyTypeObject* cached_type = NULL; -+ fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); -+ if (!fake_module) return NULL; -+ Py_INCREF(fake_module); -+ cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); -+ if (cached_type) { -+ if (!PyType_Check((PyObject*)cached_type)) { -+ PyErr_Format(PyExc_TypeError, -+ "Shared Cython type %.200s is not a type object", -+ type->tp_name); -+ goto bad; -+ } -+ if (cached_type->tp_basicsize != type->tp_basicsize) { -+ PyErr_Format(PyExc_TypeError, -+ "Shared Cython type %.200s has the wrong size, try recompiling", -+ type->tp_name); -+ goto bad; -+ } -+ } else { -+ if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; -+ PyErr_Clear(); -+ if (PyType_Ready(type) < 0) goto bad; -+ if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) -+ goto bad; -+ Py_INCREF(type); -+ cached_type = type; -+ } -+done: -+ Py_DECREF(fake_module); -+ return cached_type; -+bad: -+ Py_XDECREF(cached_type); -+ cached_type = NULL; -+ goto done; - } --static PyObject* --__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -+ -+/* CythonFunctionShared */ -+#include -+static PyObject * -+__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) - { -+ if (unlikely(op->func_doc == NULL)) { -+ if (op->func.m_ml->ml_doc) { - #if PY_MAJOR_VERSION >= 3 -- return PyUnicode_FromFormat("", -- op->func_qualname, (void *)op); -+ op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); - #else -- return PyString_FromFormat("", -- PyString_AsString(op->func_qualname), (void *)op); -+ op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); - #endif --} --static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { -- PyCFunctionObject* f = (PyCFunctionObject*)func; -- PyCFunction meth = f->m_ml->ml_meth; -- Py_ssize_t size; -- switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { -- case METH_VARARGS: -- if (likely(kw == NULL || PyDict_Size(kw) == 0)) -- return (*meth)(self, arg); -- break; -- case METH_VARARGS | METH_KEYWORDS: -- return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); -- case METH_NOARGS: -- if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -- size = PyTuple_GET_SIZE(arg); -- if (likely(size == 0)) -- return (*meth)(self, NULL); -- PyErr_Format(PyExc_TypeError, -- "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", -- f->m_ml->ml_name, size); -- return NULL; -- } -- break; -- case METH_O: -- if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -- size = PyTuple_GET_SIZE(arg); -- if (likely(size == 1)) { -- PyObject *result, *arg0; -- #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- arg0 = PyTuple_GET_ITEM(arg, 0); -- #else -- arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; -- #endif -- result = (*meth)(self, arg0); -- #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) -- Py_DECREF(arg0); -- #endif -- return result; -- } -- PyErr_Format(PyExc_TypeError, -- "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", -- f->m_ml->ml_name, size); -- return NULL; -+ if (unlikely(op->func_doc == NULL)) -+ return NULL; -+ } else { -+ Py_INCREF(Py_None); -+ return Py_None; - } -- break; -- default: -- PyErr_SetString(PyExc_SystemError, "Bad call flags in " -- "__Pyx_CyFunction_Call. METH_OLDARGS is no " -- "longer supported!"); -- return NULL; - } -- PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", -- f->m_ml->ml_name); -- return NULL; --} --static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { -- return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -+ Py_INCREF(op->func_doc); -+ return op->func_doc; - } --static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { -- PyObject *result; -- __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; -- if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { -- Py_ssize_t argc; -- PyObject *new_args; -- PyObject *self; -- argc = PyTuple_GET_SIZE(args); -- new_args = PyTuple_GetSlice(args, 1, argc); -- if (unlikely(!new_args)) -- return NULL; -- self = PyTuple_GetItem(args, 0); -- if (unlikely(!self)) { -- Py_DECREF(new_args); -- return NULL; -- } -- result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); -- Py_DECREF(new_args); -- } else { -- result = __Pyx_CyFunction_Call(func, args, kw); -+static int -+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) -+{ -+ PyObject *tmp = op->func_doc; -+ if (value == NULL) { -+ value = Py_None; - } -- return result; -+ Py_INCREF(value); -+ op->func_doc = value; -+ Py_XDECREF(tmp); -+ return 0; - } --static PyTypeObject __pyx_CyFunctionType_type = { -- PyVarObject_HEAD_INIT(0, 0) -- "cython_function_or_method", -- sizeof(__pyx_CyFunctionObject), -- 0, -- (destructor) __Pyx_CyFunction_dealloc, -- 0, -- 0, -- 0, --#if PY_MAJOR_VERSION < 3 -- 0, -+static PyObject * -+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -+{ -+ if (unlikely(op->func_name == NULL)) { -+#if PY_MAJOR_VERSION >= 3 -+ op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); - #else -- 0, -+ op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); - #endif -- (reprfunc) __Pyx_CyFunction_repr, -- 0, -- 0, -- 0, -- 0, -- __Pyx_CyFunction_CallAsMethod, -- 0, -- 0, -- 0, -- 0, -- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, -- 0, -- (traverseproc) __Pyx_CyFunction_traverse, -- (inquiry) __Pyx_CyFunction_clear, -- 0, --#if PY_VERSION_HEX < 0x030500A0 -- offsetof(__pyx_CyFunctionObject, func_weakreflist), -+ if (unlikely(op->func_name == NULL)) -+ return NULL; -+ } -+ Py_INCREF(op->func_name); -+ return op->func_name; -+} -+static int -+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) -+{ -+ PyObject *tmp; -+#if PY_MAJOR_VERSION >= 3 -+ if (unlikely(value == NULL || !PyUnicode_Check(value))) - #else -- offsetof(PyCFunctionObject, m_weakreflist), --#endif -- 0, -- 0, -- __pyx_CyFunction_methods, -- __pyx_CyFunction_members, -- __pyx_CyFunction_getsets, -- 0, -- 0, -- __Pyx_CyFunction_descr_get, -- 0, -- offsetof(__pyx_CyFunctionObject, func_dict), -- 0, -- 0, -- 0, -- 0, -- 0, -- 0, -- 0, -- 0, -- 0, -- 0, -- 0, -- 0, --#if PY_VERSION_HEX >= 0x030400a1 -- 0, --#endif --#if PY_VERSION_HEX >= 0x030800b1 -- 0, --#endif --#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -- 0, -+ if (unlikely(value == NULL || !PyString_Check(value))) - #endif --}; --static int __pyx_CyFunction_init(void) { -- __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); -- if (unlikely(__pyx_CyFunctionType == NULL)) { -+ { -+ PyErr_SetString(PyExc_TypeError, -+ "__name__ must be set to a string object"); - return -1; - } -+ tmp = op->func_name; -+ Py_INCREF(value); -+ op->func_name = value; -+ Py_XDECREF(tmp); - return 0; - } --static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { -- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -- m->defaults = PyObject_Malloc(size); -- if (unlikely(!m->defaults)) -- return PyErr_NoMemory(); -- memset(m->defaults, 0, size); -- m->defaults_pyobjects = pyobjects; -- m->defaults_size = size; -- return m->defaults; --} --static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { -- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -- m->defaults_tuple = tuple; -- Py_INCREF(tuple); -+static PyObject * -+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -+{ -+ Py_INCREF(op->func_qualname); -+ return op->func_qualname; - } --static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { -- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -- m->defaults_kwdict = dict; -- Py_INCREF(dict); -+static int -+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) -+{ -+ PyObject *tmp; -+#if PY_MAJOR_VERSION >= 3 -+ if (unlikely(value == NULL || !PyUnicode_Check(value))) -+#else -+ if (unlikely(value == NULL || !PyString_Check(value))) -+#endif -+ { -+ PyErr_SetString(PyExc_TypeError, -+ "__qualname__ must be set to a string object"); -+ return -1; -+ } -+ tmp = op->func_qualname; -+ Py_INCREF(value); -+ op->func_qualname = value; -+ Py_XDECREF(tmp); -+ return 0; - } --static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { -- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -- m->func_annotations = dict; -- Py_INCREF(dict); -+static PyObject * -+__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -+{ -+ PyObject *self; -+ self = m->func_closure; -+ if (self == NULL) -+ self = Py_None; -+ Py_INCREF(self); -+ return self; - } -- --/* CythonFunction */ --static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, -- PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { -- PyObject *op = __Pyx_CyFunction_Init( -- PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), -- ml, flags, qualname, closure, module, globals, code -- ); -- if (likely(op)) { -- PyObject_GC_Track(op); -+static PyObject * -+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -+{ -+ if (unlikely(op->func_dict == NULL)) { -+ op->func_dict = PyDict_New(); -+ if (unlikely(op->func_dict == NULL)) -+ return NULL; - } -- return op; -+ Py_INCREF(op->func_dict); -+ return op->func_dict; - } -- --/* RaiseArgTupleInvalid */ --static void __Pyx_RaiseArgtupleInvalid( -- const char* func_name, -- int exact, -- Py_ssize_t num_min, -- Py_ssize_t num_max, -- Py_ssize_t num_found) -+static int -+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) - { -- Py_ssize_t num_expected; -- const char *more_or_less; -- if (num_found < num_min) { -- num_expected = num_min; -- more_or_less = "at least"; -- } else { -- num_expected = num_max; -- more_or_less = "at most"; -+ PyObject *tmp; -+ if (unlikely(value == NULL)) { -+ PyErr_SetString(PyExc_TypeError, -+ "function's dictionary may not be deleted"); -+ return -1; - } -- if (exact) { -- more_or_less = "exactly"; -+ if (unlikely(!PyDict_Check(value))) { -+ PyErr_SetString(PyExc_TypeError, -+ "setting function's dictionary to a non-dict"); -+ return -1; - } -- PyErr_Format(PyExc_TypeError, -- "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", -- func_name, more_or_less, num_expected, -- (num_expected == 1) ? "" : "s", num_found); -+ tmp = op->func_dict; -+ Py_INCREF(value); -+ op->func_dict = value; -+ Py_XDECREF(tmp); -+ return 0; - } -- --/* RaiseDoubleKeywords */ --static void __Pyx_RaiseDoubleKeywordsError( -- const char* func_name, -- PyObject* kw_name) -+static PyObject * -+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) - { -- PyErr_Format(PyExc_TypeError, -- #if PY_MAJOR_VERSION >= 3 -- "%s() got multiple values for keyword argument '%U'", func_name, kw_name); -- #else -- "%s() got multiple values for keyword argument '%s'", func_name, -- PyString_AsString(kw_name)); -- #endif -+ Py_INCREF(op->func_globals); -+ return op->func_globals; - } -- --/* ParseKeywords */ --static int __Pyx_ParseOptionalKeywords( -- PyObject *kwds, -- PyObject **argnames[], -- PyObject *kwds2, -- PyObject *values[], -- Py_ssize_t num_pos_args, -- const char* function_name) -+static PyObject * -+__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) - { -- PyObject *key = 0, *value = 0; -- Py_ssize_t pos = 0; -- PyObject*** name; -- PyObject*** first_kw_arg = argnames + num_pos_args; -- while (PyDict_Next(kwds, &pos, &key, &value)) { -- name = first_kw_arg; -- while (*name && (**name != key)) name++; -- if (*name) { -- values[name-argnames] = value; -- continue; -- } -- name = first_kw_arg; -- #if PY_MAJOR_VERSION < 3 -- if (likely(PyString_Check(key))) { -- while (*name) { -- if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) -- && _PyString_Eq(**name, key)) { -- values[name-argnames] = value; -- break; -- } -- name++; -- } -- if (*name) continue; -- else { -- PyObject*** argname = argnames; -- while (argname != first_kw_arg) { -- if ((**argname == key) || ( -- (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) -- && _PyString_Eq(**argname, key))) { -- goto arg_passed_twice; -- } -- argname++; -- } -- } -- } else -- #endif -- if (likely(PyUnicode_Check(key))) { -- while (*name) { -- int cmp = (**name == key) ? 0 : -- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 -- (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : -- #endif -- PyUnicode_Compare(**name, key); -- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; -- if (cmp == 0) { -- values[name-argnames] = value; -- break; -- } -- name++; -- } -- if (*name) continue; -- else { -- PyObject*** argname = argnames; -- while (argname != first_kw_arg) { -- int cmp = (**argname == key) ? 0 : -- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 -- (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : -- #endif -- PyUnicode_Compare(**argname, key); -- if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; -- if (cmp == 0) goto arg_passed_twice; -- argname++; -- } -- } -- } else -- goto invalid_keyword_type; -- if (kwds2) { -- if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; -- } else { -- goto invalid_keyword; -- } -- } -- return 0; --arg_passed_twice: -- __Pyx_RaiseDoubleKeywordsError(function_name, key); -- goto bad; --invalid_keyword_type: -- PyErr_Format(PyExc_TypeError, -- "%.200s() keywords must be strings", function_name); -- goto bad; --invalid_keyword: -- PyErr_Format(PyExc_TypeError, -- #if PY_MAJOR_VERSION < 3 -- "%.200s() got an unexpected keyword argument '%.200s'", -- function_name, PyString_AsString(key)); -+ Py_INCREF(Py_None); -+ return Py_None; -+} -+static PyObject * -+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -+{ -+ PyObject* result = (op->func_code) ? op->func_code : Py_None; -+ Py_INCREF(result); -+ return result; -+} -+static int -+__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { -+ int result = 0; -+ PyObject *res = op->defaults_getter((PyObject *) op); -+ if (unlikely(!res)) -+ return -1; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ op->defaults_tuple = PyTuple_GET_ITEM(res, 0); -+ Py_INCREF(op->defaults_tuple); -+ op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); -+ Py_INCREF(op->defaults_kwdict); - #else -- "%s() got an unexpected keyword argument '%U'", -- function_name, key); -+ op->defaults_tuple = PySequence_ITEM(res, 0); -+ if (unlikely(!op->defaults_tuple)) result = -1; -+ else { -+ op->defaults_kwdict = PySequence_ITEM(res, 1); -+ if (unlikely(!op->defaults_kwdict)) result = -1; -+ } - #endif --bad: -- return -1; -+ Py_DECREF(res); -+ return result; - } -- --/* PyObjectSetAttrStr */ --#if CYTHON_USE_TYPE_SLOTS --static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { -- PyTypeObject* tp = Py_TYPE(obj); -- if (likely(tp->tp_setattro)) -- return tp->tp_setattro(obj, attr_name, value); --#if PY_MAJOR_VERSION < 3 -- if (likely(tp->tp_setattr)) -- return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); --#endif -- return PyObject_SetAttr(obj, attr_name, value); -+static int -+__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { -+ PyObject* tmp; -+ if (!value) { -+ value = Py_None; -+ } else if (value != Py_None && !PyTuple_Check(value)) { -+ PyErr_SetString(PyExc_TypeError, -+ "__defaults__ must be set to a tuple object"); -+ return -1; -+ } -+ Py_INCREF(value); -+ tmp = op->defaults_tuple; -+ op->defaults_tuple = value; -+ Py_XDECREF(tmp); -+ return 0; - } --#endif -- --/* PyIntBinop */ --#if !CYTHON_COMPILING_IN_PYPY --static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { -- (void)inplace; -- (void)zerodivision_check; -- #if PY_MAJOR_VERSION < 3 -- if (likely(PyInt_CheckExact(op1))) { -- const long b = intval; -- long x; -- long a = PyInt_AS_LONG(op1); -- x = (long)((unsigned long)a + b); -- if (likely((x^a) >= 0 || (x^b) >= 0)) -- return PyInt_FromLong(x); -- return PyLong_Type.tp_as_number->nb_add(op1, op2); -+static PyObject * -+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { -+ PyObject* result = op->defaults_tuple; -+ if (unlikely(!result)) { -+ if (op->defaults_getter) { -+ if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; -+ result = op->defaults_tuple; -+ } else { -+ result = Py_None; -+ } - } -- #endif -- #if CYTHON_USE_PYLONG_INTERNALS -- if (likely(PyLong_CheckExact(op1))) { -- const long b = intval; -- long a, x; --#ifdef HAVE_LONG_LONG -- const PY_LONG_LONG llb = intval; -- PY_LONG_LONG lla, llx; --#endif -- const digit* digits = ((PyLongObject*)op1)->ob_digit; -- const Py_ssize_t size = Py_SIZE(op1); -- if (likely(__Pyx_sst_abs(size) <= 1)) { -- a = likely(size) ? digits[0] : 0; -- if (size == -1) a = -a; -+ Py_INCREF(result); -+ return result; -+} -+static int -+__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { -+ PyObject* tmp; -+ if (!value) { -+ value = Py_None; -+ } else if (value != Py_None && !PyDict_Check(value)) { -+ PyErr_SetString(PyExc_TypeError, -+ "__kwdefaults__ must be set to a dict object"); -+ return -1; -+ } -+ Py_INCREF(value); -+ tmp = op->defaults_kwdict; -+ op->defaults_kwdict = value; -+ Py_XDECREF(tmp); -+ return 0; -+} -+static PyObject * -+__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { -+ PyObject* result = op->defaults_kwdict; -+ if (unlikely(!result)) { -+ if (op->defaults_getter) { -+ if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; -+ result = op->defaults_kwdict; - } else { -- switch (size) { -- case -2: -- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -- lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -- lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case -3: -- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -- lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case 3: -- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -- lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case -4: -- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -- lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case 4: -- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -- lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- default: return PyLong_Type.tp_as_number->nb_add(op1, op2); -- } -+ result = Py_None; - } -- x = a + b; -- return PyLong_FromLong(x); --#ifdef HAVE_LONG_LONG -- long_long: -- llx = lla + llb; -- return PyLong_FromLongLong(llx); --#endif -- -- - } -- #endif -- if (PyFloat_CheckExact(op1)) { -- const long b = intval; -- double a = PyFloat_AS_DOUBLE(op1); -- double result; -- PyFPE_START_PROTECT("add", return NULL) -- result = ((double)a) + (double)b; -- PyFPE_END_PROTECT(result) -- return PyFloat_FromDouble(result); -+ Py_INCREF(result); -+ return result; -+} -+static int -+__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { -+ PyObject* tmp; -+ if (!value || value == Py_None) { -+ value = NULL; -+ } else if (!PyDict_Check(value)) { -+ PyErr_SetString(PyExc_TypeError, -+ "__annotations__ must be set to a dict object"); -+ return -1; - } -- return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); -+ Py_XINCREF(value); -+ tmp = op->func_annotations; -+ op->func_annotations = value; -+ Py_XDECREF(tmp); -+ return 0; - } --#endif -- --/* PyIntBinop */ --#if !CYTHON_COMPILING_IN_PYPY --static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { -- (void)inplace; -- (void)zerodivision_check; -- #if PY_MAJOR_VERSION < 3 -- if (likely(PyInt_CheckExact(op1))) { -- const long b = intval; -- long x; -- long a = PyInt_AS_LONG(op1); -- x = (long)((unsigned long)a - b); -- if (likely((x^a) >= 0 || (x^~b) >= 0)) -- return PyInt_FromLong(x); -- return PyLong_Type.tp_as_number->nb_subtract(op1, op2); -+static PyObject * -+__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { -+ PyObject* result = op->func_annotations; -+ if (unlikely(!result)) { -+ result = PyDict_New(); -+ if (unlikely(!result)) return NULL; -+ op->func_annotations = result; - } -- #endif -- #if CYTHON_USE_PYLONG_INTERNALS -- if (likely(PyLong_CheckExact(op1))) { -- const long b = intval; -- long a, x; --#ifdef HAVE_LONG_LONG -- const PY_LONG_LONG llb = intval; -- PY_LONG_LONG lla, llx; --#endif -- const digit* digits = ((PyLongObject*)op1)->ob_digit; -- const Py_ssize_t size = Py_SIZE(op1); -- if (likely(__Pyx_sst_abs(size) <= 1)) { -- a = likely(size) ? digits[0] : 0; -- if (size == -1) a = -a; -- } else { -- switch (size) { -- case -2: -- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -- lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case 2: -- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -- lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case -3: -- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -- lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case 3: -- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -- lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case -4: -- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -- lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; --#endif -- } -- CYTHON_FALLTHROUGH; -- case 4: -- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -- break; --#ifdef HAVE_LONG_LONG -- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -- lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -- goto long_long; -+ Py_INCREF(result); -+ return result; -+} -+static PyGetSetDef __pyx_CyFunction_getsets[] = { -+ {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, -+ {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, -+ {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, -+ {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, -+ {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, -+ {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, -+ {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, -+ {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, -+ {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, -+ {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, -+ {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, -+ {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, -+ {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, -+ {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, -+ {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, -+ {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, -+ {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, -+ {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, -+ {0, 0, 0, 0, 0} -+}; -+static PyMemberDef __pyx_CyFunction_members[] = { -+ {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, -+ {0, 0, 0, 0, 0} -+}; -+static PyObject * -+__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -+{ -+#if PY_MAJOR_VERSION >= 3 -+ Py_INCREF(m->func_qualname); -+ return m->func_qualname; -+#else -+ return PyString_FromString(m->func.m_ml->ml_name); - #endif -- } -- CYTHON_FALLTHROUGH; -- default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); -- } -- } -- x = a - b; -- return PyLong_FromLong(x); --#ifdef HAVE_LONG_LONG -- long_long: -- llx = lla - llb; -- return PyLong_FromLongLong(llx); -+} -+static PyMethodDef __pyx_CyFunction_methods[] = { -+ {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, -+ {0, 0, 0, 0} -+}; -+#if PY_VERSION_HEX < 0x030500A0 -+#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -+#else -+#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) - #endif -- -- -+static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, -+ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { -+ if (unlikely(op == NULL)) -+ return NULL; -+ op->flags = flags; -+ __Pyx_CyFunction_weakreflist(op) = NULL; -+ op->func.m_ml = ml; -+ op->func.m_self = (PyObject *) op; -+ Py_XINCREF(closure); -+ op->func_closure = closure; -+ Py_XINCREF(module); -+ op->func.m_module = module; -+ op->func_dict = NULL; -+ op->func_name = NULL; -+ Py_INCREF(qualname); -+ op->func_qualname = qualname; -+ op->func_doc = NULL; -+ op->func_classobj = NULL; -+ op->func_globals = globals; -+ Py_INCREF(op->func_globals); -+ Py_XINCREF(code); -+ op->func_code = code; -+ op->defaults_pyobjects = 0; -+ op->defaults_size = 0; -+ op->defaults = NULL; -+ op->defaults_tuple = NULL; -+ op->defaults_kwdict = NULL; -+ op->defaults_getter = NULL; -+ op->func_annotations = NULL; -+ return (PyObject *) op; -+} -+static int -+__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -+{ -+ Py_CLEAR(m->func_closure); -+ Py_CLEAR(m->func.m_module); -+ Py_CLEAR(m->func_dict); -+ Py_CLEAR(m->func_name); -+ Py_CLEAR(m->func_qualname); -+ Py_CLEAR(m->func_doc); -+ Py_CLEAR(m->func_globals); -+ Py_CLEAR(m->func_code); -+ Py_CLEAR(m->func_classobj); -+ Py_CLEAR(m->defaults_tuple); -+ Py_CLEAR(m->defaults_kwdict); -+ Py_CLEAR(m->func_annotations); -+ if (m->defaults) { -+ PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); -+ int i; -+ for (i = 0; i < m->defaults_pyobjects; i++) -+ Py_XDECREF(pydefaults[i]); -+ PyObject_Free(m->defaults); -+ m->defaults = NULL; - } -- #endif -- if (PyFloat_CheckExact(op1)) { -- const long b = intval; -- double a = PyFloat_AS_DOUBLE(op1); -- double result; -- PyFPE_START_PROTECT("subtract", return NULL) -- result = ((double)a) - (double)b; -- PyFPE_END_PROTECT(result) -- return PyFloat_FromDouble(result); -+ return 0; -+} -+static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -+{ -+ if (__Pyx_CyFunction_weakreflist(m) != NULL) -+ PyObject_ClearWeakRefs((PyObject *) m); -+ __Pyx_CyFunction_clear(m); -+ PyObject_GC_Del(m); -+} -+static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -+{ -+ PyObject_GC_UnTrack(m); -+ __Pyx__CyFunction_dealloc(m); -+} -+static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -+{ -+ Py_VISIT(m->func_closure); -+ Py_VISIT(m->func.m_module); -+ Py_VISIT(m->func_dict); -+ Py_VISIT(m->func_name); -+ Py_VISIT(m->func_qualname); -+ Py_VISIT(m->func_doc); -+ Py_VISIT(m->func_globals); -+ Py_VISIT(m->func_code); -+ Py_VISIT(m->func_classobj); -+ Py_VISIT(m->defaults_tuple); -+ Py_VISIT(m->defaults_kwdict); -+ if (m->defaults) { -+ PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); -+ int i; -+ for (i = 0; i < m->defaults_pyobjects; i++) -+ Py_VISIT(pydefaults[i]); - } -- return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); -+ return 0; - } -+static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -+{ -+#if PY_MAJOR_VERSION < 3 -+ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -+ if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { -+ Py_INCREF(func); -+ return func; -+ } -+ if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { -+ if (type == NULL) -+ type = (PyObject *)(Py_TYPE(obj)); -+ return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); -+ } -+ if (obj == Py_None) -+ obj = NULL; - #endif -- --/* WriteUnraisableException */ --static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, -- CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, -- int full_traceback, CYTHON_UNUSED int nogil) { -- PyObject *old_exc, *old_val, *old_tb; -- PyObject *ctx; -- __Pyx_PyThreadState_declare --#ifdef WITH_THREAD -- PyGILState_STATE state; -- if (nogil) -- state = PyGILState_Ensure(); --#ifdef _MSC_VER -- else state = (PyGILState_STATE)-1; --#endif -+ return __Pyx_PyMethod_New(func, obj, type); -+} -+static PyObject* -+__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -+{ -+#if PY_MAJOR_VERSION >= 3 -+ return PyUnicode_FromFormat("", -+ op->func_qualname, (void *)op); -+#else -+ return PyString_FromFormat("", -+ PyString_AsString(op->func_qualname), (void *)op); - #endif -- __Pyx_PyThreadState_assign -- __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); -- if (full_traceback) { -- Py_XINCREF(old_exc); -- Py_XINCREF(old_val); -- Py_XINCREF(old_tb); -- __Pyx_ErrRestore(old_exc, old_val, old_tb); -- PyErr_PrintEx(1); -- } -- #if PY_MAJOR_VERSION < 3 -- ctx = PyString_FromString(name); -- #else -- ctx = PyUnicode_FromString(name); -- #endif -- __Pyx_ErrRestore(old_exc, old_val, old_tb); -- if (!ctx) { -- PyErr_WriteUnraisable(Py_None); -- } else { -- PyErr_WriteUnraisable(ctx); -- Py_DECREF(ctx); -+} -+static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { -+ PyCFunctionObject* f = (PyCFunctionObject*)func; -+ PyCFunction meth = f->m_ml->ml_meth; -+ Py_ssize_t size; -+ switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { -+ case METH_VARARGS: -+ if (likely(kw == NULL || PyDict_Size(kw) == 0)) -+ return (*meth)(self, arg); -+ break; -+ case METH_VARARGS | METH_KEYWORDS: -+ return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); -+ case METH_NOARGS: -+ if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -+ size = PyTuple_GET_SIZE(arg); -+ if (likely(size == 0)) -+ return (*meth)(self, NULL); -+ PyErr_Format(PyExc_TypeError, -+ "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", -+ f->m_ml->ml_name, size); -+ return NULL; -+ } -+ break; -+ case METH_O: -+ if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -+ size = PyTuple_GET_SIZE(arg); -+ if (likely(size == 1)) { -+ PyObject *result, *arg0; -+ #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -+ arg0 = PyTuple_GET_ITEM(arg, 0); -+ #else -+ arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; -+ #endif -+ result = (*meth)(self, arg0); -+ #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) -+ Py_DECREF(arg0); -+ #endif -+ return result; -+ } -+ PyErr_Format(PyExc_TypeError, -+ "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", -+ f->m_ml->ml_name, size); -+ return NULL; -+ } -+ break; -+ default: -+ PyErr_SetString(PyExc_SystemError, "Bad call flags in " -+ "__Pyx_CyFunction_Call. METH_OLDARGS is no " -+ "longer supported!"); -+ return NULL; - } --#ifdef WITH_THREAD -- if (nogil) -- PyGILState_Release(state); --#endif --} -- --/* SwapException */ --#if CYTHON_FAST_THREAD_STATE --static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -- PyObject *tmp_type, *tmp_value, *tmp_tb; -- #if CYTHON_USE_EXC_INFO_STACK -- _PyErr_StackItem *exc_info = tstate->exc_info; -- tmp_type = exc_info->exc_type; -- tmp_value = exc_info->exc_value; -- tmp_tb = exc_info->exc_traceback; -- exc_info->exc_type = *type; -- exc_info->exc_value = *value; -- exc_info->exc_traceback = *tb; -- #else -- tmp_type = tstate->exc_type; -- tmp_value = tstate->exc_value; -- tmp_tb = tstate->exc_traceback; -- tstate->exc_type = *type; -- tstate->exc_value = *value; -- tstate->exc_traceback = *tb; -- #endif -- *type = tmp_type; -- *value = tmp_value; -- *tb = tmp_tb; --} --#else --static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { -- PyObject *tmp_type, *tmp_value, *tmp_tb; -- PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); -- PyErr_SetExcInfo(*type, *value, *tb); -- *type = tmp_type; -- *value = tmp_value; -- *tb = tmp_tb; -+ PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", -+ f->m_ml->ml_name); -+ return NULL; - } --#endif -- --/* SetItemInt */ --static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { -- int r; -- if (!j) return -1; -- r = PyObject_SetItem(o, j, v); -- Py_DECREF(j); -- return r; -+static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { -+ return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); - } --static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, -- CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { --#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS -- if (is_list || PyList_CheckExact(o)) { -- Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); -- if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { -- PyObject* old = PyList_GET_ITEM(o, n); -- Py_INCREF(v); -- PyList_SET_ITEM(o, n, v); -- Py_DECREF(old); -- return 1; -+static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { -+ PyObject *result; -+ __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; -+ if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { -+ Py_ssize_t argc; -+ PyObject *new_args; -+ PyObject *self; -+ argc = PyTuple_GET_SIZE(args); -+ new_args = PyTuple_GetSlice(args, 1, argc); -+ if (unlikely(!new_args)) -+ return NULL; -+ self = PyTuple_GetItem(args, 0); -+ if (unlikely(!self)) { -+ Py_DECREF(new_args); -+ return NULL; - } -+ result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); -+ Py_DECREF(new_args); - } else { -- PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -- if (likely(m && m->sq_ass_item)) { -- if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { -- Py_ssize_t l = m->sq_length(o); -- if (likely(l >= 0)) { -- i += l; -- } else { -- if (!PyErr_ExceptionMatches(PyExc_OverflowError)) -- return -1; -- PyErr_Clear(); -- } -- } -- return m->sq_ass_item(o, i, v); -- } -+ result = __Pyx_CyFunction_Call(func, args, kw); - } -+ return result; -+} -+static PyTypeObject __pyx_CyFunctionType_type = { -+ PyVarObject_HEAD_INIT(0, 0) -+ "cython_function_or_method", -+ sizeof(__pyx_CyFunctionObject), -+ 0, -+ (destructor) __Pyx_CyFunction_dealloc, -+ 0, -+ 0, -+ 0, -+#if PY_MAJOR_VERSION < 3 -+ 0, - #else --#if CYTHON_COMPILING_IN_PYPY -- if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) -+ 0, -+#endif -+ (reprfunc) __Pyx_CyFunction_repr, -+ 0, -+ 0, -+ 0, -+ 0, -+ __Pyx_CyFunction_CallAsMethod, -+ 0, -+ 0, -+ 0, -+ 0, -+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, -+ 0, -+ (traverseproc) __Pyx_CyFunction_traverse, -+ (inquiry) __Pyx_CyFunction_clear, -+ 0, -+#if PY_VERSION_HEX < 0x030500A0 -+ offsetof(__pyx_CyFunctionObject, func_weakreflist), - #else -- if (is_list || PySequence_Check(o)) -+ offsetof(PyCFunctionObject, m_weakreflist), - #endif -- { -- return PySequence_SetItem(o, i, v); -- } -+ 0, -+ 0, -+ __pyx_CyFunction_methods, -+ __pyx_CyFunction_members, -+ __pyx_CyFunction_getsets, -+ 0, -+ 0, -+ __Pyx_CyFunction_descr_get, -+ 0, -+ offsetof(__pyx_CyFunctionObject, func_dict), -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+#if PY_VERSION_HEX >= 0x030400a1 -+ 0, - #endif -- return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); --} -- --/* FastTypeChecks */ --#if CYTHON_COMPILING_IN_CPYTHON --static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { -- while (a) { -- a = a->tp_base; -- if (a == b) -- return 1; -+#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) -+ 0, -+#endif -+#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 -+ 0, -+#endif -+#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 -+ 0, -+#endif -+}; -+static int __pyx_CyFunction_init(void) { -+ __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); -+ if (unlikely(__pyx_CyFunctionType == NULL)) { -+ return -1; - } -- return b == &PyBaseObject_Type; -+ return 0; - } --static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { -- PyObject *mro; -- if (a == b) return 1; -- mro = a->tp_mro; -- if (likely(mro)) { -- Py_ssize_t i, n; -- n = PyTuple_GET_SIZE(mro); -- for (i = 0; i < n; i++) { -- if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) -- return 1; -- } -- return 0; -+static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { -+ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -+ m->defaults = PyObject_Malloc(size); -+ if (unlikely(!m->defaults)) -+ return PyErr_NoMemory(); -+ memset(m->defaults, 0, size); -+ m->defaults_pyobjects = pyobjects; -+ m->defaults_size = size; -+ return m->defaults; -+} -+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { -+ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -+ m->defaults_tuple = tuple; -+ Py_INCREF(tuple); -+} -+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { -+ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -+ m->defaults_kwdict = dict; -+ Py_INCREF(dict); -+} -+static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { -+ __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -+ m->func_annotations = dict; -+ Py_INCREF(dict); -+} -+ -+/* CythonFunction */ -+static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, -+ PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { -+ PyObject *op = __Pyx_CyFunction_Init( -+ PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), -+ ml, flags, qualname, closure, module, globals, code -+ ); -+ if (likely(op)) { -+ PyObject_GC_Track(op); - } -- return __Pyx_InBases(a, b); -+ return op; - } --#if PY_MAJOR_VERSION == 2 --static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { -- PyObject *exception, *value, *tb; -- int res; -- __Pyx_PyThreadState_declare -- __Pyx_PyThreadState_assign -- __Pyx_ErrFetch(&exception, &value, &tb); -- res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; -- if (unlikely(res == -1)) { -- PyErr_WriteUnraisable(err); -- res = 0; -+ -+/* RaiseArgTupleInvalid */ -+static void __Pyx_RaiseArgtupleInvalid( -+ const char* func_name, -+ int exact, -+ Py_ssize_t num_min, -+ Py_ssize_t num_max, -+ Py_ssize_t num_found) -+{ -+ Py_ssize_t num_expected; -+ const char *more_or_less; -+ if (num_found < num_min) { -+ num_expected = num_min; -+ more_or_less = "at least"; -+ } else { -+ num_expected = num_max; -+ more_or_less = "at most"; - } -- if (!res) { -- res = PyObject_IsSubclass(err, exc_type2); -- if (unlikely(res == -1)) { -- PyErr_WriteUnraisable(err); -- res = 0; -- } -+ if (exact) { -+ more_or_less = "exactly"; - } -- __Pyx_ErrRestore(exception, value, tb); -- return res; -+ PyErr_Format(PyExc_TypeError, -+ "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", -+ func_name, more_or_less, num_expected, -+ (num_expected == 1) ? "" : "s", num_found); - } --#else --static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { -- int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; -- if (!res) { -- res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); -- } -- return res; -+ -+/* RaiseDoubleKeywords */ -+static void __Pyx_RaiseDoubleKeywordsError( -+ const char* func_name, -+ PyObject* kw_name) -+{ -+ PyErr_Format(PyExc_TypeError, -+ #if PY_MAJOR_VERSION >= 3 -+ "%s() got multiple values for keyword argument '%U'", func_name, kw_name); -+ #else -+ "%s() got multiple values for keyword argument '%s'", func_name, -+ PyString_AsString(kw_name)); -+ #endif - } --#endif --static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { -- Py_ssize_t i, n; -- assert(PyExceptionClass_Check(exc_type)); -- n = PyTuple_GET_SIZE(tuple); --#if PY_MAJOR_VERSION >= 3 -- for (i=0; i= 3 -+ (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : -+ #endif -+ PyUnicode_Compare(**name, key); -+ if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; -+ if (cmp == 0) { -+ values[name-argnames] = value; -+ break; -+ } -+ name++; -+ } -+ if (*name) continue; -+ else { -+ PyObject*** argname = argnames; -+ while (argname != first_kw_arg) { -+ int cmp = (**argname == key) ? 0 : -+ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 -+ (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : -+ #endif -+ PyUnicode_Compare(**argname, key); -+ if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; -+ if (cmp == 0) goto arg_passed_twice; -+ argname++; -+ } -+ } -+ } else -+ goto invalid_keyword_type; -+ if (kwds2) { -+ if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { -+ goto invalid_keyword; - } - } - return 0; -+arg_passed_twice: -+ __Pyx_RaiseDoubleKeywordsError(function_name, key); -+ goto bad; -+invalid_keyword_type: -+ PyErr_Format(PyExc_TypeError, -+ "%.200s() keywords must be strings", function_name); -+ goto bad; -+invalid_keyword: -+ PyErr_Format(PyExc_TypeError, -+ #if PY_MAJOR_VERSION < 3 -+ "%.200s() got an unexpected keyword argument '%.200s'", -+ function_name, PyString_AsString(key)); -+ #else -+ "%s() got an unexpected keyword argument '%U'", -+ function_name, key); -+ #endif -+bad: -+ return -1; - } --static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { -- if (likely(err == exc_type)) return 1; -- if (likely(PyExceptionClass_Check(err))) { -- if (likely(PyExceptionClass_Check(exc_type))) { -- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); -- } else if (likely(PyTuple_Check(exc_type))) { -- return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); -- } else { -- } -- } -- return PyErr_GivenExceptionMatches(err, exc_type); -+ -+/* PyObjectSetAttrStr */ -+#if CYTHON_USE_TYPE_SLOTS -+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { -+ PyTypeObject* tp = Py_TYPE(obj); -+ if (likely(tp->tp_setattro)) -+ return tp->tp_setattro(obj, attr_name, value); -+#if PY_MAJOR_VERSION < 3 -+ if (likely(tp->tp_setattr)) -+ return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -+#endif -+ return PyObject_SetAttr(obj, attr_name, value); - } --static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { -- assert(PyExceptionClass_Check(exc_type1)); -- assert(PyExceptionClass_Check(exc_type2)); -- if (likely(err == exc_type1 || err == exc_type2)) return 1; -- if (likely(PyExceptionClass_Check(err))) { -- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); -+#endif -+ -+/* PyIntBinop */ -+#if !CYTHON_COMPILING_IN_PYPY -+static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { -+ (void)inplace; -+ (void)zerodivision_check; -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(PyInt_CheckExact(op1))) { -+ const long b = intval; -+ long x; -+ long a = PyInt_AS_LONG(op1); -+ x = (long)((unsigned long)a + b); -+ if (likely((x^a) >= 0 || (x^b) >= 0)) -+ return PyInt_FromLong(x); -+ return PyLong_Type.tp_as_number->nb_add(op1, op2); - } -- return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); --} -+ #endif -+ #if CYTHON_USE_PYLONG_INTERNALS -+ if (likely(PyLong_CheckExact(op1))) { -+ const long b = intval; -+ long a, x; -+#ifdef HAVE_LONG_LONG -+ const PY_LONG_LONG llb = intval; -+ PY_LONG_LONG lla, llx; -+#endif -+ const digit* digits = ((PyLongObject*)op1)->ob_digit; -+ const Py_ssize_t size = Py_SIZE(op1); -+ if (likely(__Pyx_sst_abs(size) <= 1)) { -+ a = likely(size) ? digits[0] : 0; -+ if (size == -1) a = -a; -+ } else { -+ switch (size) { -+ case -2: -+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -+ lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -+ lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case -3: -+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -+ lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case 3: -+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -+ lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case -4: -+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -+ lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; - #endif -- --/* ExtTypeTest */ --static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { -- if (unlikely(!type)) { -- PyErr_SetString(PyExc_SystemError, "Missing type object"); -- return 0; -- } -- if (likely(__Pyx_TypeCheck(obj, type))) -- return 1; -- PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", -- Py_TYPE(obj)->tp_name, type->tp_name); -- return 0; --} -- --/* DictGetItem */ --#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY --static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { -- PyObject *value; -- value = PyDict_GetItemWithError(d, key); -- if (unlikely(!value)) { -- if (!PyErr_Occurred()) { -- if (unlikely(PyTuple_Check(key))) { -- PyObject* args = PyTuple_Pack(1, key); -- if (likely(args)) { -- PyErr_SetObject(PyExc_KeyError, args); -- Py_DECREF(args); -- } -- } else { -- PyErr_SetObject(PyExc_KeyError, key); -+ } -+ CYTHON_FALLTHROUGH; -+ case 4: -+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -+ lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ default: return PyLong_Type.tp_as_number->nb_add(op1, op2); - } - } -- return NULL; -- } -- Py_INCREF(value); -- return value; --} -+ x = a + b; -+ return PyLong_FromLong(x); -+#ifdef HAVE_LONG_LONG -+ long_long: -+ llx = lla + llb; -+ return PyLong_FromLongLong(llx); - #endif -- --/* RaiseTooManyValuesToUnpack */ --static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { -- PyErr_Format(PyExc_ValueError, -- "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); --} -- --/* RaiseNeedMoreValuesToUnpack */ --static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { -- PyErr_Format(PyExc_ValueError, -- "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", -- index, (index == 1) ? "" : "s"); --} -- --/* IterFinish */ --static CYTHON_INLINE int __Pyx_IterFinish(void) { --#if CYTHON_FAST_THREAD_STATE -- PyThreadState *tstate = __Pyx_PyThreadState_Current; -- PyObject* exc_type = tstate->curexc_type; -- if (unlikely(exc_type)) { -- if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { -- PyObject *exc_value, *exc_tb; -- exc_value = tstate->curexc_value; -- exc_tb = tstate->curexc_traceback; -- tstate->curexc_type = 0; -- tstate->curexc_value = 0; -- tstate->curexc_traceback = 0; -- Py_DECREF(exc_type); -- Py_XDECREF(exc_value); -- Py_XDECREF(exc_tb); -- return 0; -- } else { -- return -1; -- } -- } -- return 0; --#else -- if (unlikely(PyErr_Occurred())) { -- if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { -- PyErr_Clear(); -- return 0; -- } else { -- return -1; -- } -+ -+ - } -- return 0; --#endif --} -- --/* UnpackItemEndCheck */ --static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { -- if (unlikely(retval)) { -- Py_DECREF(retval); -- __Pyx_RaiseTooManyValuesError(expected); -- return -1; -- } else { -- return __Pyx_IterFinish(); -+ #endif -+ if (PyFloat_CheckExact(op1)) { -+ const long b = intval; -+ double a = PyFloat_AS_DOUBLE(op1); -+ double result; -+ PyFPE_START_PROTECT("add", return NULL) -+ result = ((double)a) + (double)b; -+ PyFPE_END_PROTECT(result) -+ return PyFloat_FromDouble(result); - } -- return 0; -+ return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); - } -+#endif - --/* Import */ --static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { -- PyObject *empty_list = 0; -- PyObject *module = 0; -- PyObject *global_dict = 0; -- PyObject *empty_dict = 0; -- PyObject *list; -+/* PyIntBinop */ -+#if !CYTHON_COMPILING_IN_PYPY -+static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { -+ (void)inplace; -+ (void)zerodivision_check; - #if PY_MAJOR_VERSION < 3 -- PyObject *py_import; -- py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); -- if (!py_import) -- goto bad; -- #endif -- if (from_list) -- list = from_list; -- else { -- empty_list = PyList_New(0); -- if (!empty_list) -- goto bad; -- list = empty_list; -+ if (likely(PyInt_CheckExact(op1))) { -+ const long b = intval; -+ long x; -+ long a = PyInt_AS_LONG(op1); -+ x = (long)((unsigned long)a - b); -+ if (likely((x^a) >= 0 || (x^~b) >= 0)) -+ return PyInt_FromLong(x); -+ return PyLong_Type.tp_as_number->nb_subtract(op1, op2); - } -- global_dict = PyModule_GetDict(__pyx_m); -- if (!global_dict) -- goto bad; -- empty_dict = PyDict_New(); -- if (!empty_dict) -- goto bad; -- { -- #if PY_MAJOR_VERSION >= 3 -- if (level == -1) { -- if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { -- module = PyImport_ImportModuleLevelObject( -- name, global_dict, empty_dict, list, 1); -- if (!module) { -- if (!PyErr_ExceptionMatches(PyExc_ImportError)) -- goto bad; -- PyErr_Clear(); -- } -+ #endif -+ #if CYTHON_USE_PYLONG_INTERNALS -+ if (likely(PyLong_CheckExact(op1))) { -+ const long b = intval; -+ long a, x; -+#ifdef HAVE_LONG_LONG -+ const PY_LONG_LONG llb = intval; -+ PY_LONG_LONG lla, llx; -+#endif -+ const digit* digits = ((PyLongObject*)op1)->ob_digit; -+ const Py_ssize_t size = Py_SIZE(op1); -+ if (likely(__Pyx_sst_abs(size) <= 1)) { -+ a = likely(size) ? digits[0] : 0; -+ if (size == -1) a = -a; -+ } else { -+ switch (size) { -+ case -2: -+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -+ lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case 2: -+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { -+ a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { -+ lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case -3: -+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -+ lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case 3: -+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { -+ a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { -+ lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case -4: -+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -+ lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ case 4: -+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { -+ a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); -+ break; -+#ifdef HAVE_LONG_LONG -+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { -+ lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); -+ goto long_long; -+#endif -+ } -+ CYTHON_FALLTHROUGH; -+ default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); - } -- level = 0; -- } -- #endif -- if (!module) { -- #if PY_MAJOR_VERSION < 3 -- PyObject *py_level = PyInt_FromLong(level); -- if (!py_level) -- goto bad; -- module = PyObject_CallFunctionObjArgs(py_import, -- name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); -- Py_DECREF(py_level); -- #else -- module = PyImport_ImportModuleLevelObject( -- name, global_dict, empty_dict, list, level); -- #endif - } -- } --bad: -- #if PY_MAJOR_VERSION < 3 -- Py_XDECREF(py_import); -- #endif -- Py_XDECREF(empty_list); -- Py_XDECREF(empty_dict); -- return module; --} -- --/* ImportFrom */ --static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { -- PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); -- if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { -- PyErr_Format(PyExc_ImportError, -- #if PY_MAJOR_VERSION < 3 -- "cannot import name %.230s", PyString_AS_STRING(name)); -- #else -- "cannot import name %S", name); -- #endif -- } -- return value; --} -- --/* HasAttr */ --static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { -- PyObject *r; -- if (unlikely(!__Pyx_PyBaseString_Check(n))) { -- PyErr_SetString(PyExc_TypeError, -- "hasattr(): attribute name must be string"); -- return -1; -- } -- r = __Pyx_GetAttr(o, n); -- if (unlikely(!r)) { -- PyErr_Clear(); -- return 0; -- } else { -- Py_DECREF(r); -- return 1; -- } --} -- --/* PyObject_GenericGetAttrNoDict */ --#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 --static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { -- PyErr_Format(PyExc_AttributeError, --#if PY_MAJOR_VERSION >= 3 -- "'%.50s' object has no attribute '%U'", -- tp->tp_name, attr_name); --#else -- "'%.50s' object has no attribute '%.400s'", -- tp->tp_name, PyString_AS_STRING(attr_name)); -+ x = a - b; -+ return PyLong_FromLong(x); -+#ifdef HAVE_LONG_LONG -+ long_long: -+ llx = lla - llb; -+ return PyLong_FromLongLong(llx); - #endif -- return NULL; --} --static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { -- PyObject *descr; -- PyTypeObject *tp = Py_TYPE(obj); -- if (unlikely(!PyString_Check(attr_name))) { -- return PyObject_GenericGetAttr(obj, attr_name); -- } -- assert(!tp->tp_dictoffset); -- descr = _PyType_Lookup(tp, attr_name); -- if (unlikely(!descr)) { -- return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); -+ -+ - } -- Py_INCREF(descr); -- #if PY_MAJOR_VERSION < 3 -- if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif -- { -- descrgetfunc f = Py_TYPE(descr)->tp_descr_get; -- if (unlikely(f)) { -- PyObject *res = f(descr, obj, (PyObject *)tp); -- Py_DECREF(descr); -- return res; -- } -+ if (PyFloat_CheckExact(op1)) { -+ const long b = intval; -+ double a = PyFloat_AS_DOUBLE(op1); -+ double result; -+ PyFPE_START_PROTECT("subtract", return NULL) -+ result = ((double)a) - (double)b; -+ PyFPE_END_PROTECT(result) -+ return PyFloat_FromDouble(result); - } -- return descr; -+ return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); - } - #endif - --/* PyObject_GenericGetAttr */ --#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 --static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { -- if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { -- return PyObject_GenericGetAttr(obj, attr_name); -- } -- return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); --} -+/* WriteUnraisableException */ -+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, -+ CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, -+ int full_traceback, CYTHON_UNUSED int nogil) { -+ PyObject *old_exc, *old_val, *old_tb; -+ PyObject *ctx; -+ __Pyx_PyThreadState_declare -+#ifdef WITH_THREAD -+ PyGILState_STATE state; -+ if (nogil) -+ state = PyGILState_Ensure(); -+#ifdef _MSC_VER -+ else state = (PyGILState_STATE)-1; - #endif -- --/* SetVTable */ --static int __Pyx_SetVtable(PyObject *dict, void *vtable) { --#if PY_VERSION_HEX >= 0x02070000 -- PyObject *ob = PyCapsule_New(vtable, 0, 0); --#else -- PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); - #endif -- if (!ob) -- goto bad; -- if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) -- goto bad; -- Py_DECREF(ob); -- return 0; --bad: -- Py_XDECREF(ob); -- return -1; --} -- --/* PyObjectGetAttrStrNoError */ --static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { -- __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign -- if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) -- __Pyx_PyErr_Clear(); --} --static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { -- PyObject *result; --#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 -- PyTypeObject* tp = Py_TYPE(obj); -- if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { -- return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); -+ __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); -+ if (full_traceback) { -+ Py_XINCREF(old_exc); -+ Py_XINCREF(old_val); -+ Py_XINCREF(old_tb); -+ __Pyx_ErrRestore(old_exc, old_val, old_tb); -+ PyErr_PrintEx(1); - } --#endif -- result = __Pyx_PyObject_GetAttrStr(obj, attr_name); -- if (unlikely(!result)) { -- __Pyx_PyObject_GetAttrStr_ClearAttributeError(); -+ #if PY_MAJOR_VERSION < 3 -+ ctx = PyString_FromString(name); -+ #else -+ ctx = PyUnicode_FromString(name); -+ #endif -+ __Pyx_ErrRestore(old_exc, old_val, old_tb); -+ if (!ctx) { -+ PyErr_WriteUnraisable(Py_None); -+ } else { -+ PyErr_WriteUnraisable(ctx); -+ Py_DECREF(ctx); - } -- return result; -+#ifdef WITH_THREAD -+ if (nogil) -+ PyGILState_Release(state); -+#endif - } - --/* SetupReduce */ --static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { -- int ret; -- PyObject *name_attr; -- name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name); -- if (likely(name_attr)) { -- ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); -- } else { -- ret = -1; -- } -- if (unlikely(ret < 0)) { -- PyErr_Clear(); -- ret = 0; -- } -- Py_XDECREF(name_attr); -- return ret; -+/* SwapException */ -+#if CYTHON_FAST_THREAD_STATE -+static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ #if CYTHON_USE_EXC_INFO_STACK -+ _PyErr_StackItem *exc_info = tstate->exc_info; -+ tmp_type = exc_info->exc_type; -+ tmp_value = exc_info->exc_value; -+ tmp_tb = exc_info->exc_traceback; -+ exc_info->exc_type = *type; -+ exc_info->exc_value = *value; -+ exc_info->exc_traceback = *tb; -+ #else -+ tmp_type = tstate->exc_type; -+ tmp_value = tstate->exc_value; -+ tmp_tb = tstate->exc_traceback; -+ tstate->exc_type = *type; -+ tstate->exc_value = *value; -+ tstate->exc_traceback = *tb; -+ #endif -+ *type = tmp_type; -+ *value = tmp_value; -+ *tb = tmp_tb; - } --static int __Pyx_setup_reduce(PyObject* type_obj) { -- int ret = 0; -- PyObject *object_reduce = NULL; -- PyObject *object_reduce_ex = NULL; -- PyObject *reduce = NULL; -- PyObject *reduce_ex = NULL; -- PyObject *reduce_cython = NULL; -- PyObject *setstate = NULL; -- PyObject *setstate_cython = NULL; --#if CYTHON_USE_PYTYPE_LOOKUP -- if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; --#else -- if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; --#endif --#if CYTHON_USE_PYTYPE_LOOKUP -- object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; --#else -- object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; --#endif -- reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; -- if (reduce_ex == object_reduce_ex) { --#if CYTHON_USE_PYTYPE_LOOKUP -- object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; - #else -- object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; -+static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { -+ PyObject *tmp_type, *tmp_value, *tmp_tb; -+ PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); -+ PyErr_SetExcInfo(*type, *value, *tb); -+ *type = tmp_type; -+ *value = tmp_value; -+ *tb = tmp_tb; -+} - #endif -- reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; -- if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { -- reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); -- if (likely(reduce_cython)) { -- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; -- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; -- } else if (reduce == object_reduce || PyErr_Occurred()) { -- goto __PYX_BAD; -- } -- setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); -- if (!setstate) PyErr_Clear(); -- if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { -- setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); -- if (likely(setstate_cython)) { -- ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; -- ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; -- } else if (!setstate || PyErr_Occurred()) { -- goto __PYX_BAD; -+ -+/* SetItemInt */ -+static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { -+ int r; -+ if (!j) return -1; -+ r = PyObject_SetItem(o, j, v); -+ Py_DECREF(j); -+ return r; -+} -+static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, -+ CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { -+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS -+ if (is_list || PyList_CheckExact(o)) { -+ Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); -+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { -+ PyObject* old = PyList_GET_ITEM(o, n); -+ Py_INCREF(v); -+ PyList_SET_ITEM(o, n, v); -+ Py_DECREF(old); -+ return 1; -+ } -+ } else { -+ PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -+ if (likely(m && m->sq_ass_item)) { -+ if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { -+ Py_ssize_t l = m->sq_length(o); -+ if (likely(l >= 0)) { -+ i += l; -+ } else { -+ if (!PyErr_ExceptionMatches(PyExc_OverflowError)) -+ return -1; -+ PyErr_Clear(); - } - } -- PyType_Modified((PyTypeObject*)type_obj); -+ return m->sq_ass_item(o, i, v); - } - } -- goto __PYX_GOOD; --__PYX_BAD: -- if (!PyErr_Occurred()) -- PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); -- ret = -1; --__PYX_GOOD: --#if !CYTHON_USE_PYTYPE_LOOKUP -- Py_XDECREF(object_reduce); -- Py_XDECREF(object_reduce_ex); -+#else -+#if CYTHON_COMPILING_IN_PYPY -+ if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) -+#else -+ if (is_list || PySequence_Check(o)) - #endif -- Py_XDECREF(reduce); -- Py_XDECREF(reduce_ex); -- Py_XDECREF(reduce_cython); -- Py_XDECREF(setstate); -- Py_XDECREF(setstate_cython); -- return ret; -+ { -+ return PySequence_SetItem(o, i, v); -+ } -+#endif -+ return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); - } - --/* CalculateMetaclass */ --static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { -- Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); -- for (i=0; i < nbases; i++) { -- PyTypeObject *tmptype; -- PyObject *tmp = PyTuple_GET_ITEM(bases, i); -- tmptype = Py_TYPE(tmp); --#if PY_MAJOR_VERSION < 3 -- if (tmptype == &PyClass_Type) -- continue; --#endif -- if (!metaclass) { -- metaclass = tmptype; -- continue; -+/* FastTypeChecks */ -+#if CYTHON_COMPILING_IN_CPYTHON -+static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { -+ while (a) { -+ a = a->tp_base; -+ if (a == b) -+ return 1; -+ } -+ return b == &PyBaseObject_Type; -+} -+static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { -+ PyObject *mro; -+ if (a == b) return 1; -+ mro = a->tp_mro; -+ if (likely(mro)) { -+ Py_ssize_t i, n; -+ n = PyTuple_GET_SIZE(mro); -+ for (i = 0; i < n; i++) { -+ if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) -+ return 1; - } -- if (PyType_IsSubtype(metaclass, tmptype)) -- continue; -- if (PyType_IsSubtype(tmptype, metaclass)) { -- metaclass = tmptype; -- continue; -+ return 0; -+ } -+ return __Pyx_InBases(a, b); -+} -+#if PY_MAJOR_VERSION == 2 -+static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { -+ PyObject *exception, *value, *tb; -+ int res; -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ __Pyx_ErrFetch(&exception, &value, &tb); -+ res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; -+ if (unlikely(res == -1)) { -+ PyErr_WriteUnraisable(err); -+ res = 0; -+ } -+ if (!res) { -+ res = PyObject_IsSubclass(err, exc_type2); -+ if (unlikely(res == -1)) { -+ PyErr_WriteUnraisable(err); -+ res = 0; - } -- PyErr_SetString(PyExc_TypeError, -- "metaclass conflict: " -- "the metaclass of a derived class " -- "must be a (non-strict) subclass " -- "of the metaclasses of all its bases"); -- return NULL; - } -- if (!metaclass) { --#if PY_MAJOR_VERSION < 3 -- metaclass = &PyClass_Type; -+ __Pyx_ErrRestore(exception, value, tb); -+ return res; -+} - #else -- metaclass = &PyType_Type; --#endif -+static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { -+ int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; -+ if (!res) { -+ res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } -- Py_INCREF((PyObject*) metaclass); -- return (PyObject*) metaclass; -+ return res; - } -- --/* Py3ClassCreate */ --static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, -- PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { -- PyObject *ns; -- if (metaclass) { -- PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); -- if (prep) { -- PyObject *pargs = PyTuple_Pack(2, name, bases); -- if (unlikely(!pargs)) { -- Py_DECREF(prep); -- return NULL; -- } -- ns = PyObject_Call(prep, pargs, mkw); -- Py_DECREF(prep); -- Py_DECREF(pargs); -+#endif -+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { -+ Py_ssize_t i, n; -+ assert(PyExceptionClass_Check(exc_type)); -+ n = PyTuple_GET_SIZE(tuple); -+#if PY_MAJOR_VERSION >= 3 -+ for (i=0; itp_name, type->tp_name); -+ return 0; - } - --/* CLineInTraceback */ --#ifndef CYTHON_CLINE_IN_TRACEBACK --static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { -- PyObject *use_cline; -- PyObject *ptype, *pvalue, *ptraceback; --#if CYTHON_COMPILING_IN_CPYTHON -- PyObject **cython_runtime_dict; --#endif -- if (unlikely(!__pyx_cython_runtime)) { -- return c_line; -- } -- __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); --#if CYTHON_COMPILING_IN_CPYTHON -- cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); -- if (likely(cython_runtime_dict)) { -- __PYX_PY_DICT_LOOKUP_IF_MODIFIED( -- use_cline, *cython_runtime_dict, -- __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) -- } else --#endif -- { -- PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); -- if (use_cline_obj) { -- use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; -- Py_DECREF(use_cline_obj); -- } else { -- PyErr_Clear(); -- use_cline = NULL; -- } -- } -- if (!use_cline) { -- c_line = 0; -- PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); -- } -- else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { -- c_line = 0; -+/* DictGetItem */ -+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -+static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { -+ PyObject *value; -+ value = PyDict_GetItemWithError(d, key); -+ if (unlikely(!value)) { -+ if (!PyErr_Occurred()) { -+ if (unlikely(PyTuple_Check(key))) { -+ PyObject* args = PyTuple_Pack(1, key); -+ if (likely(args)) { -+ PyErr_SetObject(PyExc_KeyError, args); -+ Py_DECREF(args); -+ } -+ } else { -+ PyErr_SetObject(PyExc_KeyError, key); -+ } -+ } -+ return NULL; - } -- __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); -- return c_line; -+ Py_INCREF(value); -+ return value; - } - #endif - --/* CodeObjectCache */ --static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { -- int start = 0, mid = 0, end = count - 1; -- if (end >= 0 && code_line > entries[end].code_line) { -- return count; -- } -- while (start < end) { -- mid = start + (end - start) / 2; -- if (code_line < entries[mid].code_line) { -- end = mid; -- } else if (code_line > entries[mid].code_line) { -- start = mid + 1; -+/* RaiseTooManyValuesToUnpack */ -+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { -+ PyErr_Format(PyExc_ValueError, -+ "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -+} -+ -+/* RaiseNeedMoreValuesToUnpack */ -+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { -+ PyErr_Format(PyExc_ValueError, -+ "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", -+ index, (index == 1) ? "" : "s"); -+} -+ -+/* IterFinish */ -+static CYTHON_INLINE int __Pyx_IterFinish(void) { -+#if CYTHON_FAST_THREAD_STATE -+ PyThreadState *tstate = __Pyx_PyThreadState_Current; -+ PyObject* exc_type = tstate->curexc_type; -+ if (unlikely(exc_type)) { -+ if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { -+ PyObject *exc_value, *exc_tb; -+ exc_value = tstate->curexc_value; -+ exc_tb = tstate->curexc_traceback; -+ tstate->curexc_type = 0; -+ tstate->curexc_value = 0; -+ tstate->curexc_traceback = 0; -+ Py_DECREF(exc_type); -+ Py_XDECREF(exc_value); -+ Py_XDECREF(exc_tb); -+ return 0; - } else { -- return mid; -+ return -1; - } - } -- if (code_line <= entries[mid].code_line) { -- return mid; -- } else { -- return mid + 1; -+ return 0; -+#else -+ if (unlikely(PyErr_Occurred())) { -+ if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { -+ PyErr_Clear(); -+ return 0; -+ } else { -+ return -1; -+ } - } -+ return 0; -+#endif - } --static PyCodeObject *__pyx_find_code_object(int code_line) { -- PyCodeObject* code_object; -- int pos; -- if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { -- return NULL; -- } -- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); -- if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { -- return NULL; -+ -+/* UnpackItemEndCheck */ -+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { -+ if (unlikely(retval)) { -+ Py_DECREF(retval); -+ __Pyx_RaiseTooManyValuesError(expected); -+ return -1; -+ } else { -+ return __Pyx_IterFinish(); - } -- code_object = __pyx_code_cache.entries[pos].code_object; -- Py_INCREF(code_object); -- return code_object; -+ return 0; - } --static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { -- int pos, i; -- __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; -- if (unlikely(!code_line)) { -- return; -+ -+/* Import */ -+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { -+ PyObject *empty_list = 0; -+ PyObject *module = 0; -+ PyObject *global_dict = 0; -+ PyObject *empty_dict = 0; -+ PyObject *list; -+ #if PY_MAJOR_VERSION < 3 -+ PyObject *py_import; -+ py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); -+ if (!py_import) -+ goto bad; -+ #endif -+ if (from_list) -+ list = from_list; -+ else { -+ empty_list = PyList_New(0); -+ if (!empty_list) -+ goto bad; -+ list = empty_list; - } -- if (unlikely(!entries)) { -- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); -- if (likely(entries)) { -- __pyx_code_cache.entries = entries; -- __pyx_code_cache.max_count = 64; -- __pyx_code_cache.count = 1; -- entries[0].code_line = code_line; -- entries[0].code_object = code_object; -- Py_INCREF(code_object); -+ global_dict = PyModule_GetDict(__pyx_m); -+ if (!global_dict) -+ goto bad; -+ empty_dict = PyDict_New(); -+ if (!empty_dict) -+ goto bad; -+ { -+ #if PY_MAJOR_VERSION >= 3 -+ if (level == -1) { -+ if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { -+ module = PyImport_ImportModuleLevelObject( -+ name, global_dict, empty_dict, list, 1); -+ if (!module) { -+ if (!PyErr_ExceptionMatches(PyExc_ImportError)) -+ goto bad; -+ PyErr_Clear(); -+ } -+ } -+ level = 0; - } -- return; -- } -- pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); -- if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { -- PyCodeObject* tmp = entries[pos].code_object; -- entries[pos].code_object = code_object; -- Py_DECREF(tmp); -- return; -- } -- if (__pyx_code_cache.count == __pyx_code_cache.max_count) { -- int new_max = __pyx_code_cache.max_count + 64; -- entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( -- __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); -- if (unlikely(!entries)) { -- return; -+ #endif -+ if (!module) { -+ #if PY_MAJOR_VERSION < 3 -+ PyObject *py_level = PyInt_FromLong(level); -+ if (!py_level) -+ goto bad; -+ module = PyObject_CallFunctionObjArgs(py_import, -+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); -+ Py_DECREF(py_level); -+ #else -+ module = PyImport_ImportModuleLevelObject( -+ name, global_dict, empty_dict, list, level); -+ #endif - } -- __pyx_code_cache.entries = entries; -- __pyx_code_cache.max_count = new_max; -- } -- for (i=__pyx_code_cache.count; i>pos; i--) { -- entries[i] = entries[i-1]; - } -- entries[pos].code_line = code_line; -- entries[pos].code_object = code_object; -- __pyx_code_cache.count++; -- Py_INCREF(code_object); --} -- --/* AddTraceback */ --#include "compile.h" --#include "frameobject.h" --#include "traceback.h" --static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( -- const char *funcname, int c_line, -- int py_line, const char *filename) { -- PyCodeObject *py_code = 0; -- PyObject *py_srcfile = 0; -- PyObject *py_funcname = 0; -+bad: - #if PY_MAJOR_VERSION < 3 -- py_srcfile = PyString_FromString(filename); -- #else -- py_srcfile = PyUnicode_FromString(filename); -+ Py_XDECREF(py_import); - #endif -- if (!py_srcfile) goto bad; -- if (c_line) { -- #if PY_MAJOR_VERSION < 3 -- py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); -- #else -- py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); -- #endif -- } -- else { -+ Py_XDECREF(empty_list); -+ Py_XDECREF(empty_dict); -+ return module; -+} -+ -+/* ImportFrom */ -+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { -+ PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); -+ if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { -+ PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 -- py_funcname = PyString_FromString(funcname); -+ "cannot import name %.230s", PyString_AS_STRING(name)); - #else -- py_funcname = PyUnicode_FromString(funcname); -+ "cannot import name %S", name); - #endif - } -- if (!py_funcname) goto bad; -- py_code = __Pyx_PyCode_New( -- 0, -- 0, -- 0, -- 0, -- 0, -- __pyx_empty_bytes, /*PyObject *code,*/ -- __pyx_empty_tuple, /*PyObject *consts,*/ -- __pyx_empty_tuple, /*PyObject *names,*/ -- __pyx_empty_tuple, /*PyObject *varnames,*/ -- __pyx_empty_tuple, /*PyObject *freevars,*/ -- __pyx_empty_tuple, /*PyObject *cellvars,*/ -- py_srcfile, /*PyObject *filename,*/ -- py_funcname, /*PyObject *name,*/ -- py_line, -- __pyx_empty_bytes /*PyObject *lnotab*/ -- ); -- Py_DECREF(py_srcfile); -- Py_DECREF(py_funcname); -- return py_code; --bad: -- Py_XDECREF(py_srcfile); -- Py_XDECREF(py_funcname); -- return NULL; -+ return value; - } --static void __Pyx_AddTraceback(const char *funcname, int c_line, -- int py_line, const char *filename) { -- PyCodeObject *py_code = 0; -- PyFrameObject *py_frame = 0; -- PyThreadState *tstate = __Pyx_PyThreadState_Current; -- if (c_line) { -- c_line = __Pyx_CLineForTraceback(tstate, c_line); -+ -+/* HasAttr */ -+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { -+ PyObject *r; -+ if (unlikely(!__Pyx_PyBaseString_Check(n))) { -+ PyErr_SetString(PyExc_TypeError, -+ "hasattr(): attribute name must be string"); -+ return -1; - } -- py_code = __pyx_find_code_object(c_line ? -c_line : py_line); -- if (!py_code) { -- py_code = __Pyx_CreateCodeObjectForTraceback( -- funcname, c_line, py_line, filename); -- if (!py_code) goto bad; -- __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); -+ r = __Pyx_GetAttr(o, n); -+ if (unlikely(!r)) { -+ PyErr_Clear(); -+ return 0; -+ } else { -+ Py_DECREF(r); -+ return 1; - } -- py_frame = PyFrame_New( -- tstate, /*PyThreadState *tstate,*/ -- py_code, /*PyCodeObject *code,*/ -- __pyx_d, /*PyObject *globals,*/ -- 0 /*PyObject *locals*/ -- ); -- if (!py_frame) goto bad; -- __Pyx_PyFrame_SetLineNumber(py_frame, py_line); -- PyTraceBack_Here(py_frame); --bad: -- Py_XDECREF(py_code); -- Py_XDECREF(py_frame); - } - --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { -- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(int) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(int) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); --#endif -- } -- } else { -- if (sizeof(int) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); -+/* PyObject_GenericGetAttrNoDict */ -+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -+static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { -+ PyErr_Format(PyExc_AttributeError, -+#if PY_MAJOR_VERSION >= 3 -+ "'%.50s' object has no attribute '%U'", -+ tp->tp_name, attr_name); -+#else -+ "'%.50s' object has no attribute '%.400s'", -+ tp->tp_name, PyString_AS_STRING(attr_name)); - #endif -- } -+ return NULL; -+} -+static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { -+ PyObject *descr; -+ PyTypeObject *tp = Py_TYPE(obj); -+ if (unlikely(!PyString_Check(attr_name))) { -+ return PyObject_GenericGetAttr(obj, attr_name); -+ } -+ assert(!tp->tp_dictoffset); -+ descr = _PyType_Lookup(tp, attr_name); -+ if (unlikely(!descr)) { -+ return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } -+ Py_INCREF(descr); -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) -+ #endif - { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(int), -- little, !is_unsigned); -+ descrgetfunc f = Py_TYPE(descr)->tp_descr_get; -+ if (unlikely(f)) { -+ PyObject *res = f(descr, obj, (PyObject *)tp); -+ Py_DECREF(descr); -+ return res; -+ } - } -+ return descr; - } -+#endif - --/* CIntFromPyVerify */ --#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ -- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) --#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ -- __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) --#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ -- {\ -- func_type value = func_value;\ -- if (sizeof(target_type) < sizeof(func_type)) {\ -- if (unlikely(value != (func_type) (target_type) value)) {\ -- func_type zero = 0;\ -- if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ -- return (target_type) -1;\ -- if (is_unsigned && unlikely(value < zero))\ -- goto raise_neg_overflow;\ -- else\ -- goto raise_overflow;\ -- }\ -- }\ -- return (target_type) value;\ -+/* PyObject_GenericGetAttr */ -+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -+static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { -+ if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { -+ return PyObject_GenericGetAttr(obj, attr_name); - } -+ return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -+} -+#endif - --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_event_id(enum mpv_event_id value) { -- const enum mpv_event_id neg_one = (enum mpv_event_id) ((enum mpv_event_id) 0 - (enum mpv_event_id) 1), const_zero = (enum mpv_event_id) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(enum mpv_event_id) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(enum mpv_event_id) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_event_id) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+/* SetVTable */ -+static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -+#if PY_VERSION_HEX >= 0x02070000 -+ PyObject *ob = PyCapsule_New(vtable, 0, 0); -+#else -+ PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -+#endif -+ if (!ob) -+ goto bad; -+ if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) -+ goto bad; -+ Py_DECREF(ob); -+ return 0; -+bad: -+ Py_XDECREF(ob); -+ return -1; -+} -+ -+/* PyObjectGetAttrStrNoError */ -+static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) -+ __Pyx_PyErr_Clear(); -+} -+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { -+ PyObject *result; -+#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 -+ PyTypeObject* tp = Py_TYPE(obj); -+ if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { -+ return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); -+ } -+#endif -+ result = __Pyx_PyObject_GetAttrStr(obj, attr_name); -+ if (unlikely(!result)) { -+ __Pyx_PyObject_GetAttrStr_ClearAttributeError(); -+ } -+ return result; -+} -+ -+/* SetupReduce */ -+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { -+ int ret; -+ PyObject *name_attr; -+ name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name); -+ if (likely(name_attr)) { -+ ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); -+ } else { -+ ret = -1; -+ } -+ if (unlikely(ret < 0)) { -+ PyErr_Clear(); -+ ret = 0; -+ } -+ Py_XDECREF(name_attr); -+ return ret; -+} -+static int __Pyx_setup_reduce(PyObject* type_obj) { -+ int ret = 0; -+ PyObject *object_reduce = NULL; -+ PyObject *object_reduce_ex = NULL; -+ PyObject *reduce = NULL; -+ PyObject *reduce_ex = NULL; -+ PyObject *reduce_cython = NULL; -+ PyObject *setstate = NULL; -+ PyObject *setstate_cython = NULL; -+#if CYTHON_USE_PYTYPE_LOOKUP -+ if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; -+#else -+ if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; - #endif -- } -- } else { -- if (sizeof(enum mpv_event_id) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_event_id) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); -+#if CYTHON_USE_PYTYPE_LOOKUP -+ object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; -+#else -+ object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; -+#endif -+ reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; -+ if (reduce_ex == object_reduce_ex) { -+#if CYTHON_USE_PYTYPE_LOOKUP -+ object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; -+#else -+ object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; - #endif -+ reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; -+ if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { -+ reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); -+ if (likely(reduce_cython)) { -+ ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; -+ ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; -+ } else if (reduce == object_reduce || PyErr_Occurred()) { -+ goto __PYX_BAD; -+ } -+ setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); -+ if (!setstate) PyErr_Clear(); -+ if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { -+ setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); -+ if (likely(setstate_cython)) { -+ ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; -+ ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; -+ } else if (!setstate || PyErr_Occurred()) { -+ goto __PYX_BAD; -+ } -+ } -+ PyType_Modified((PyTypeObject*)type_obj); - } - } -- { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_event_id), -- little, !is_unsigned); -- } -+ goto __PYX_GOOD; -+__PYX_BAD: -+ if (!PyErr_Occurred()) -+ PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); -+ ret = -1; -+__PYX_GOOD: -+#if !CYTHON_USE_PYTYPE_LOOKUP -+ Py_XDECREF(object_reduce); -+ Py_XDECREF(object_reduce_ex); -+#endif -+ Py_XDECREF(reduce); -+ Py_XDECREF(reduce_ex); -+ Py_XDECREF(reduce_cython); -+ Py_XDECREF(setstate); -+ Py_XDECREF(setstate_cython); -+ return ret; - } - --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) { -- const unsigned long neg_one = (unsigned long) ((unsigned long) 0 - (unsigned long) 1), const_zero = (unsigned long) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(unsigned long) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(unsigned long) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+/* CalculateMetaclass */ -+static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { -+ Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); -+ for (i=0; i < nbases; i++) { -+ PyTypeObject *tmptype; -+ PyObject *tmp = PyTuple_GET_ITEM(bases, i); -+ tmptype = Py_TYPE(tmp); -+#if PY_MAJOR_VERSION < 3 -+ if (tmptype == &PyClass_Type) -+ continue; - #endif -+ if (!metaclass) { -+ metaclass = tmptype; -+ continue; - } -- } else { -- if (sizeof(unsigned long) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); --#endif -+ if (PyType_IsSubtype(metaclass, tmptype)) -+ continue; -+ if (PyType_IsSubtype(tmptype, metaclass)) { -+ metaclass = tmptype; -+ continue; - } -+ PyErr_SetString(PyExc_TypeError, -+ "metaclass conflict: " -+ "the metaclass of a derived class " -+ "must be a (non-strict) subclass " -+ "of the metaclasses of all its bases"); -+ return NULL; - } -- { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(unsigned long), -- little, !is_unsigned); -+ if (!metaclass) { -+#if PY_MAJOR_VERSION < 3 -+ metaclass = &PyClass_Type; -+#else -+ metaclass = &PyType_Type; -+#endif - } -+ Py_INCREF((PyObject*) metaclass); -+ return (PyObject*) metaclass; - } - --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_error(enum mpv_error value) { -- const enum mpv_error neg_one = (enum mpv_error) ((enum mpv_error) 0 - (enum mpv_error) 1), const_zero = (enum mpv_error) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(enum mpv_error) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(enum mpv_error) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_error) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); --#endif -+/* Py3ClassCreate */ -+static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, -+ PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { -+ PyObject *ns; -+ if (metaclass) { -+ PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); -+ if (prep) { -+ PyObject *pargs = PyTuple_Pack(2, name, bases); -+ if (unlikely(!pargs)) { -+ Py_DECREF(prep); -+ return NULL; -+ } -+ ns = PyObject_Call(prep, pargs, mkw); -+ Py_DECREF(prep); -+ Py_DECREF(pargs); -+ } else { -+ if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) -+ return NULL; -+ PyErr_Clear(); -+ ns = PyDict_New(); - } - } else { -- if (sizeof(enum mpv_error) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_error) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); --#endif -- } -- } -- { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_error), -- little, !is_unsigned); -+ ns = PyDict_New(); - } -+ if (unlikely(!ns)) -+ return NULL; -+ if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; -+ if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; -+ if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; -+ return ns; -+bad: -+ Py_DECREF(ns); -+ return NULL; - } -- --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_log_level(enum mpv_log_level value) { -- const enum mpv_log_level neg_one = (enum mpv_log_level) ((enum mpv_log_level) 0 - (enum mpv_log_level) 1), const_zero = (enum mpv_log_level) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(enum mpv_log_level) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(enum mpv_log_level) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_log_level) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); --#endif -+static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, -+ PyObject *dict, PyObject *mkw, -+ int calculate_metaclass, int allow_py2_metaclass) { -+ PyObject *result, *margs; -+ PyObject *owned_metaclass = NULL; -+ if (allow_py2_metaclass) { -+ owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); -+ if (owned_metaclass) { -+ metaclass = owned_metaclass; -+ } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { -+ PyErr_Clear(); -+ } else { -+ return NULL; - } -+ } -+ if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { -+ metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); -+ Py_XDECREF(owned_metaclass); -+ if (unlikely(!metaclass)) -+ return NULL; -+ owned_metaclass = metaclass; -+ } -+ margs = PyTuple_Pack(3, name, bases, dict); -+ if (unlikely(!margs)) { -+ result = NULL; - } else { -- if (sizeof(enum mpv_log_level) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_log_level) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); --#endif -- } -+ result = PyObject_Call(metaclass, margs, mkw); -+ Py_DECREF(margs); - } -- { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_log_level), -- little, !is_unsigned); -+ Py_XDECREF(owned_metaclass); -+ return result; -+} -+ -+/* GetNameInClass */ -+static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) { -+ PyObject *result; -+ __Pyx_PyThreadState_declare -+ __Pyx_PyThreadState_assign -+ if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) -+ return NULL; -+ __Pyx_PyErr_Clear(); -+ __Pyx_GetModuleGlobalNameUncached(result, name); -+ return result; -+} -+static PyObject *__Pyx__GetNameInClass(PyObject *nmspace, PyObject *name) { -+ PyObject *result; -+ result = __Pyx_PyObject_GetAttrStr(nmspace, name); -+ if (!result) { -+ result = __Pyx_GetGlobalNameAfterAttributeLookup(name); - } -+ return result; - } - --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_end_file_reason(enum mpv_end_file_reason value) { -- const enum mpv_end_file_reason neg_one = (enum mpv_end_file_reason) ((enum mpv_end_file_reason) 0 - (enum mpv_end_file_reason) 1), const_zero = (enum mpv_end_file_reason) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(enum mpv_end_file_reason) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(enum mpv_end_file_reason) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_end_file_reason) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); --#endif -- } -- } else { -- if (sizeof(enum mpv_end_file_reason) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_end_file_reason) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); -+/* CLineInTraceback */ -+#ifndef CYTHON_CLINE_IN_TRACEBACK -+static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { -+ PyObject *use_cline; -+ PyObject *ptype, *pvalue, *ptraceback; -+#if CYTHON_COMPILING_IN_CPYTHON -+ PyObject **cython_runtime_dict; - #endif -- } -+ if (unlikely(!__pyx_cython_runtime)) { -+ return c_line; - } -+ __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -+#if CYTHON_COMPILING_IN_CPYTHON -+ cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); -+ if (likely(cython_runtime_dict)) { -+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED( -+ use_cline, *cython_runtime_dict, -+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) -+ } else -+#endif - { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_end_file_reason), -- little, !is_unsigned); -+ PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); -+ if (use_cline_obj) { -+ use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; -+ Py_DECREF(use_cline_obj); -+ } else { -+ PyErr_Clear(); -+ use_cline = NULL; -+ } -+ } -+ if (!use_cline) { -+ c_line = 0; -+ (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); -+ } -+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { -+ c_line = 0; - } -+ __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); -+ return c_line; - } -- --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_render_update_flag(enum mpv_render_update_flag value) { -- const enum mpv_render_update_flag neg_one = (enum mpv_render_update_flag) ((enum mpv_render_update_flag) 0 - (enum mpv_render_update_flag) 1), const_zero = (enum mpv_render_update_flag) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(enum mpv_render_update_flag) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(enum mpv_render_update_flag) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_render_update_flag) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); - #endif -+ -+/* CodeObjectCache */ -+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { -+ int start = 0, mid = 0, end = count - 1; -+ if (end >= 0 && code_line > entries[end].code_line) { -+ return count; -+ } -+ while (start < end) { -+ mid = start + (end - start) / 2; -+ if (code_line < entries[mid].code_line) { -+ end = mid; -+ } else if (code_line > entries[mid].code_line) { -+ start = mid + 1; -+ } else { -+ return mid; - } -+ } -+ if (code_line <= entries[mid].code_line) { -+ return mid; - } else { -- if (sizeof(enum mpv_render_update_flag) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_render_update_flag) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); --#endif -- } -+ return mid + 1; - } -- { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_render_update_flag), -- little, !is_unsigned); -+} -+static PyCodeObject *__pyx_find_code_object(int code_line) { -+ PyCodeObject* code_object; -+ int pos; -+ if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { -+ return NULL; -+ } -+ pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); -+ if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { -+ return NULL; - } -+ code_object = __pyx_code_cache.entries[pos].code_object; -+ Py_INCREF(code_object); -+ return code_object; - } -- --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) { -- const int64_t neg_one = (int64_t) ((int64_t) 0 - (int64_t) 1), const_zero = (int64_t) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(int64_t) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(int64_t) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); --#endif -+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { -+ int pos, i; -+ __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; -+ if (unlikely(!code_line)) { -+ return; -+ } -+ if (unlikely(!entries)) { -+ entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); -+ if (likely(entries)) { -+ __pyx_code_cache.entries = entries; -+ __pyx_code_cache.max_count = 64; -+ __pyx_code_cache.count = 1; -+ entries[0].code_line = code_line; -+ entries[0].code_object = code_object; -+ Py_INCREF(code_object); - } -- } else { -- if (sizeof(int64_t) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); --#endif -+ return; -+ } -+ pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); -+ if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { -+ PyCodeObject* tmp = entries[pos].code_object; -+ entries[pos].code_object = code_object; -+ Py_DECREF(tmp); -+ return; -+ } -+ if (__pyx_code_cache.count == __pyx_code_cache.max_count) { -+ int new_max = __pyx_code_cache.max_count + 64; -+ entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( -+ __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); -+ if (unlikely(!entries)) { -+ return; - } -+ __pyx_code_cache.entries = entries; -+ __pyx_code_cache.max_count = new_max; - } -- { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(int64_t), -- little, !is_unsigned); -+ for (i=__pyx_code_cache.count; i>pos; i--) { -+ entries[i] = entries[i-1]; - } -+ entries[pos].code_line = code_line; -+ entries[pos].code_object = code_object; -+ __pyx_code_cache.count++; -+ Py_INCREF(code_object); - } - --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) { -- const uint64_t neg_one = (uint64_t) ((uint64_t) 0 - (uint64_t) 1), const_zero = (uint64_t) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(uint64_t) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(uint64_t) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); --#endif -- } -- } else { -- if (sizeof(uint64_t) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); --#endif -- } -+/* AddTraceback */ -+#include "compile.h" -+#include "frameobject.h" -+#include "traceback.h" -+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( -+ const char *funcname, int c_line, -+ int py_line, const char *filename) { -+ PyCodeObject *py_code = NULL; -+ PyObject *py_funcname = NULL; -+ #if PY_MAJOR_VERSION < 3 -+ PyObject *py_srcfile = NULL; -+ py_srcfile = PyString_FromString(filename); -+ if (!py_srcfile) goto bad; -+ #endif -+ if (c_line) { -+ #if PY_MAJOR_VERSION < 3 -+ py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); -+ if (!py_funcname) goto bad; -+ #else -+ py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); -+ if (!py_funcname) goto bad; -+ funcname = PyUnicode_AsUTF8(py_funcname); -+ if (!funcname) goto bad; -+ #endif -+ } -+ else { -+ #if PY_MAJOR_VERSION < 3 -+ py_funcname = PyString_FromString(funcname); -+ if (!py_funcname) goto bad; -+ #endif -+ } -+ #if PY_MAJOR_VERSION < 3 -+ py_code = __Pyx_PyCode_New( -+ 0, -+ 0, -+ 0, -+ 0, -+ 0, -+ __pyx_empty_bytes, /*PyObject *code,*/ -+ __pyx_empty_tuple, /*PyObject *consts,*/ -+ __pyx_empty_tuple, /*PyObject *names,*/ -+ __pyx_empty_tuple, /*PyObject *varnames,*/ -+ __pyx_empty_tuple, /*PyObject *freevars,*/ -+ __pyx_empty_tuple, /*PyObject *cellvars,*/ -+ py_srcfile, /*PyObject *filename,*/ -+ py_funcname, /*PyObject *name,*/ -+ py_line, -+ __pyx_empty_bytes /*PyObject *lnotab*/ -+ ); -+ Py_DECREF(py_srcfile); -+ #else -+ py_code = PyCode_NewEmpty(filename, funcname, py_line); -+ #endif -+ Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline -+ return py_code; -+bad: -+ Py_XDECREF(py_funcname); -+ #if PY_MAJOR_VERSION < 3 -+ Py_XDECREF(py_srcfile); -+ #endif -+ return NULL; -+} -+static void __Pyx_AddTraceback(const char *funcname, int c_line, -+ int py_line, const char *filename) { -+ PyCodeObject *py_code = 0; -+ PyFrameObject *py_frame = 0; -+ PyThreadState *tstate = __Pyx_PyThreadState_Current; -+ if (c_line) { -+ c_line = __Pyx_CLineForTraceback(tstate, c_line); - } -- { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(uint64_t), -- little, !is_unsigned); -+ py_code = __pyx_find_code_object(c_line ? -c_line : py_line); -+ if (!py_code) { -+ py_code = __Pyx_CreateCodeObjectForTraceback( -+ funcname, c_line, py_line, filename); -+ if (!py_code) goto bad; -+ __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } -+ py_frame = PyFrame_New( -+ tstate, /*PyThreadState *tstate,*/ -+ py_code, /*PyCodeObject *code,*/ -+ __pyx_d, /*PyObject *globals,*/ -+ 0 /*PyObject *locals*/ -+ ); -+ if (!py_frame) goto bad; -+ __Pyx_PyFrame_SetLineNumber(py_frame, py_line); -+ PyTraceBack_Here(py_frame); -+bad: -+ Py_XDECREF(py_code); -+ Py_XDECREF(py_frame); - } - --/* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_format(enum mpv_format value) { -- const enum mpv_format neg_one = (enum mpv_format) ((enum mpv_format) 0 - (enum mpv_format) 1), const_zero = (enum mpv_format) 0; -- const int is_unsigned = neg_one > const_zero; -- if (is_unsigned) { -- if (sizeof(enum mpv_format) < sizeof(long)) { -- return PyInt_FromLong((long) value); -- } else if (sizeof(enum mpv_format) <= sizeof(unsigned long)) { -- return PyLong_FromUnsignedLong((unsigned long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_format) <= sizeof(unsigned PY_LONG_LONG)) { -- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); --#endif -- } -- } else { -- if (sizeof(enum mpv_format) <= sizeof(long)) { -- return PyInt_FromLong((long) value); --#ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_format) <= sizeof(PY_LONG_LONG)) { -- return PyLong_FromLongLong((PY_LONG_LONG) value); --#endif -- } -- } -- { -- int one = 1; int little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(enum mpv_format), -- little, !is_unsigned); -+/* CIntFromPyVerify */ -+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ -+ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -+#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ -+ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -+#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ -+ {\ -+ func_type value = func_value;\ -+ if (sizeof(target_type) < sizeof(func_type)) {\ -+ if (unlikely(value != (func_type) (target_type) value)) {\ -+ func_type zero = 0;\ -+ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ -+ return (target_type) -1;\ -+ if (is_unsigned && unlikely(value < zero))\ -+ goto raise_neg_overflow;\ -+ else\ -+ goto raise_overflow;\ -+ }\ -+ }\ -+ return (target_type) value;\ - } --} - - /* CIntToPy */ --static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { -- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const int neg_one = (int) -1, const_zero = (int) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { -- if (sizeof(long) < sizeof(long)) { -+ if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); -- } else if (sizeof(long) <= sizeof(unsigned long)) { -+ } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); - #ifdef HAVE_LONG_LONG -- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { -+ } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); - #endif - } - } else { -- if (sizeof(long) <= sizeof(long)) { -+ if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); - #ifdef HAVE_LONG_LONG -- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { -+ } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); - #endif - } -@@ -33617,14 +30212,21 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; -- return _PyLong_FromByteArray(bytes, sizeof(long), -+ return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } - } - - /* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { -- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const int neg_one = (int) -1, const_zero = (int) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -@@ -33811,9 +30413,54 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - return (int) -1; - } - -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_event_id(enum mpv_event_id value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const enum mpv_event_id neg_one = (enum mpv_event_id) -1, const_zero = (enum mpv_event_id) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(enum mpv_event_id) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(enum mpv_event_id) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_event_id) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(enum mpv_event_id) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_event_id) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_event_id), -+ little, !is_unsigned); -+ } -+} -+ - /* CIntFromPy */ - static CYTHON_INLINE enum mpv_event_id __Pyx_PyInt_As_enum__mpv_event_id(PyObject *x) { -- const enum mpv_event_id neg_one = (enum mpv_event_id) ((enum mpv_event_id) 0 - (enum mpv_event_id) 1), const_zero = (enum mpv_event_id) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const enum mpv_event_id neg_one = (enum mpv_event_id) -1, const_zero = (enum mpv_event_id) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -@@ -33947,62 +30594,259 @@ static CYTHON_INLINE enum mpv_event_id __Pyx_PyInt_As_enum__mpv_event_id(PyObjec - break; - } - #endif -- if (sizeof(enum mpv_event_id) <= sizeof(long)) { -- __PYX_VERIFY_RETURN_INT_EXC(enum mpv_event_id, long, PyLong_AsLong(x)) -+ if (sizeof(enum mpv_event_id) <= sizeof(long)) { -+ __PYX_VERIFY_RETURN_INT_EXC(enum mpv_event_id, long, PyLong_AsLong(x)) -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_event_id) <= sizeof(PY_LONG_LONG)) { -+ __PYX_VERIFY_RETURN_INT_EXC(enum mpv_event_id, PY_LONG_LONG, PyLong_AsLongLong(x)) -+#endif -+ } -+ } -+ { -+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) -+ PyErr_SetString(PyExc_RuntimeError, -+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -+#else -+ enum mpv_event_id val; -+ PyObject *v = __Pyx_PyNumber_IntOrLong(x); -+ #if PY_MAJOR_VERSION < 3 -+ if (likely(v) && !PyLong_Check(v)) { -+ PyObject *tmp = v; -+ v = PyNumber_Long(tmp); -+ Py_DECREF(tmp); -+ } -+ #endif -+ if (likely(v)) { -+ int one = 1; int is_little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&val; -+ int ret = _PyLong_AsByteArray((PyLongObject *)v, -+ bytes, sizeof(val), -+ is_little, !is_unsigned); -+ Py_DECREF(v); -+ if (likely(!ret)) -+ return val; -+ } -+#endif -+ return (enum mpv_event_id) -1; -+ } -+ } else { -+ enum mpv_event_id val; -+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); -+ if (!tmp) return (enum mpv_event_id) -1; -+ val = __Pyx_PyInt_As_enum__mpv_event_id(tmp); -+ Py_DECREF(tmp); -+ return val; -+ } -+raise_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "value too large to convert to enum mpv_event_id"); -+ return (enum mpv_event_id) -1; -+raise_neg_overflow: -+ PyErr_SetString(PyExc_OverflowError, -+ "can't convert negative value to enum mpv_event_id"); -+ return (enum mpv_event_id) -1; -+} -+ -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(unsigned long) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(unsigned long) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(unsigned long) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(unsigned long), -+ little, !is_unsigned); -+ } -+} -+ -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_error(enum mpv_error value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const enum mpv_error neg_one = (enum mpv_error) -1, const_zero = (enum mpv_error) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(enum mpv_error) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(enum mpv_error) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_error) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(enum mpv_error) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_error) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_error), -+ little, !is_unsigned); -+ } -+} -+ -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_log_level(enum mpv_log_level value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const enum mpv_log_level neg_one = (enum mpv_log_level) -1, const_zero = (enum mpv_log_level) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(enum mpv_log_level) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(enum mpv_log_level) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_log_level) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(enum mpv_log_level) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); - #ifdef HAVE_LONG_LONG -- } else if (sizeof(enum mpv_event_id) <= sizeof(PY_LONG_LONG)) { -- __PYX_VERIFY_RETURN_INT_EXC(enum mpv_event_id, PY_LONG_LONG, PyLong_AsLongLong(x)) -+ } else if (sizeof(enum mpv_log_level) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); - #endif -- } - } -- { --#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) -- PyErr_SetString(PyExc_RuntimeError, -- "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); --#else -- enum mpv_event_id val; -- PyObject *v = __Pyx_PyNumber_IntOrLong(x); -- #if PY_MAJOR_VERSION < 3 -- if (likely(v) && !PyLong_Check(v)) { -- PyObject *tmp = v; -- v = PyNumber_Long(tmp); -- Py_DECREF(tmp); -- } -- #endif -- if (likely(v)) { -- int one = 1; int is_little = (int)*(unsigned char *)&one; -- unsigned char *bytes = (unsigned char *)&val; -- int ret = _PyLong_AsByteArray((PyLongObject *)v, -- bytes, sizeof(val), -- is_little, !is_unsigned); -- Py_DECREF(v); -- if (likely(!ret)) -- return val; -- } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_log_level), -+ little, !is_unsigned); -+ } -+} -+ -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_end_file_reason(enum mpv_end_file_reason value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const enum mpv_end_file_reason neg_one = (enum mpv_end_file_reason) -1, const_zero = (enum mpv_end_file_reason) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(enum mpv_end_file_reason) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(enum mpv_end_file_reason) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_end_file_reason) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); - #endif -- return (enum mpv_event_id) -1; - } - } else { -- enum mpv_event_id val; -- PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); -- if (!tmp) return (enum mpv_event_id) -1; -- val = __Pyx_PyInt_As_enum__mpv_event_id(tmp); -- Py_DECREF(tmp); -- return val; -+ if (sizeof(enum mpv_end_file_reason) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_end_file_reason) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_end_file_reason), -+ little, !is_unsigned); -+ } -+} -+ -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_render_update_flag(enum mpv_render_update_flag value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const enum mpv_render_update_flag neg_one = (enum mpv_render_update_flag) -1, const_zero = (enum mpv_render_update_flag) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(enum mpv_render_update_flag) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(enum mpv_render_update_flag) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_render_update_flag) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(enum mpv_render_update_flag) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_render_update_flag) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_render_update_flag), -+ little, !is_unsigned); - } --raise_overflow: -- PyErr_SetString(PyExc_OverflowError, -- "value too large to convert to enum mpv_event_id"); -- return (enum mpv_event_id) -1; --raise_neg_overflow: -- PyErr_SetString(PyExc_OverflowError, -- "can't convert negative value to enum mpv_event_id"); -- return (enum mpv_event_id) -1; - } - - /* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { -- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const long neg_one = (long) -1, const_zero = (long) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -@@ -34189,9 +31033,92 @@ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - return (long) -1; - } - -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(int64_t) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(int64_t) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(int64_t) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(int64_t), -+ little, !is_unsigned); -+ } -+} -+ -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(uint64_t) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(uint64_t) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(uint64_t) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(uint64_t), -+ little, !is_unsigned); -+ } -+} -+ - /* CIntFromPy */ - static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) { -- const uint64_t neg_one = (uint64_t) ((uint64_t) 0 - (uint64_t) 1), const_zero = (uint64_t) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -@@ -34378,9 +31305,54 @@ static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) { - return (uint64_t) -1; - } - -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__mpv_format(enum mpv_format value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const enum mpv_format neg_one = (enum mpv_format) -1, const_zero = (enum mpv_format) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(enum mpv_format) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(enum mpv_format) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_format) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(enum mpv_format) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(enum mpv_format) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(enum mpv_format), -+ little, !is_unsigned); -+ } -+} -+ - /* CIntFromPy */ - static CYTHON_INLINE enum mpv_format __Pyx_PyInt_As_enum__mpv_format(PyObject *x) { -- const enum mpv_format neg_one = (enum mpv_format) ((enum mpv_format) 0 - (enum mpv_format) 1), const_zero = (enum mpv_format) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const enum mpv_format neg_one = (enum mpv_format) -1, const_zero = (enum mpv_format) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -@@ -34569,7 +31541,14 @@ static CYTHON_INLINE enum mpv_format __Pyx_PyInt_As_enum__mpv_format(PyObject *x - - /* CIntFromPy */ - static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) { -- const int64_t neg_one = (int64_t) ((int64_t) 0 - (int64_t) 1), const_zero = (int64_t) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -@@ -34758,7 +31737,14 @@ static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) { - - /* CIntFromPy */ - static CYTHON_INLINE intptr_t __Pyx_PyInt_As_intptr_t(PyObject *x) { -- const intptr_t neg_one = (intptr_t) ((intptr_t) 0 - (intptr_t) 1), const_zero = (intptr_t) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const intptr_t neg_one = (intptr_t) -1, const_zero = (intptr_t) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif - const int is_unsigned = neg_one > const_zero; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { -@@ -34945,6 +31931,44 @@ static CYTHON_INLINE intptr_t __Pyx_PyInt_As_intptr_t(PyObject *x) { - return (intptr_t) -1; - } - -+/* CIntToPy */ -+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wconversion" -+#endif -+ const long neg_one = (long) -1, const_zero = (long) 0; -+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -+#pragma GCC diagnostic pop -+#endif -+ const int is_unsigned = neg_one > const_zero; -+ if (is_unsigned) { -+ if (sizeof(long) < sizeof(long)) { -+ return PyInt_FromLong((long) value); -+ } else if (sizeof(long) <= sizeof(unsigned long)) { -+ return PyLong_FromUnsignedLong((unsigned long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { -+ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -+#endif -+ } -+ } else { -+ if (sizeof(long) <= sizeof(long)) { -+ return PyInt_FromLong((long) value); -+#ifdef HAVE_LONG_LONG -+ } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { -+ return PyLong_FromLongLong((PY_LONG_LONG) value); -+#endif -+ } -+ } -+ { -+ int one = 1; int little = (int)*(unsigned char *)&one; -+ unsigned char *bytes = (unsigned char *)&value; -+ return _PyLong_FromByteArray(bytes, sizeof(long), -+ little, !is_unsigned); -+ } -+} -+ - /* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; -@@ -35211,7 +32235,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - } - static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { - if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { -- return __Pyx_PyIndex_AsSsize_t(o); -+ return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); - #if PY_MAJOR_VERSION < 3 - } else if (likely(PyInt_CheckExact(o))) { - return PyInt_AS_LONG(o); diff --git a/vidcutter/libs/pympv/mpv.pyx b/vidcutter/libs/pympv/mpv.pyx index 540ea649..8af2dcc7 100644 --- a/vidcutter/libs/pympv/mpv.pyx diff --git a/srcpkgs/vidcutter/patches/mpv-0.35-3.patch b/srcpkgs/vidcutter/patches/mpv-0.35-3.patch index 7a1b2909b4c4..d1f5f1364c62 100644 --- a/srcpkgs/vidcutter/patches/mpv-0.35-3.patch +++ b/srcpkgs/vidcutter/patches/mpv-0.35-3.patch @@ -10,13266 +10,6 @@ Subject: [PATCH] pympv updates vidcutter/libs/pympv/mpv.pyx | 6 +- 2 files changed, 1900 insertions(+), 1898 deletions(-) -diff --git a/vidcutter/libs/pympv/mpv.c b/vidcutter/libs/pympv/mpv.c -index a3522ef5..26838a03 100644 ---- a/vidcutter/libs/pympv/mpv.c -+++ b/vidcutter/libs/pympv/mpv.c -@@ -944,7 +944,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext; - struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors; - struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp; - --/* "vidcutter/libs/pympv/mpv.pyx":890 -+/* "vidcutter/libs/pympv/mpv.pyx":892 - * self.params[0].type = MPV_RENDER_PARAM_INVALID - * - * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< -@@ -956,7 +956,7 @@ struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp { - int owned; - }; - --/* "vidcutter/libs/pympv/mpv.pyx":156 -+/* "vidcutter/libs/pympv/mpv.pyx":158 - * - * - * cdef class EndOfFileReached(object): # <<<<<<<<<<<<<< -@@ -971,7 +971,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":182 -+/* "vidcutter/libs/pympv/mpv.pyx":184 - * - * - * cdef class LogMessage(object): # <<<<<<<<<<<<<< -@@ -988,7 +988,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":243 -+/* "vidcutter/libs/pympv/mpv.pyx":245 - * - * - * cdef class Property(object): # <<<<<<<<<<<<<< -@@ -1003,7 +1003,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_Property { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":256 -+/* "vidcutter/libs/pympv/mpv.pyx":258 - * - * - * cdef class Event(object): # <<<<<<<<<<<<<< -@@ -1020,7 +1020,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_Event { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":359 -+/* "vidcutter/libs/pympv/mpv.pyx":361 - * - * - * cdef class Context(object): # <<<<<<<<<<<<<< -@@ -1037,7 +1037,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_Context { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":881 -+/* "vidcutter/libs/pympv/mpv.pyx":883 - * DEF MAX_RENDER_PARAMS = 32 - * - * cdef class _RenderParams(object): # <<<<<<<<<<<<<< -@@ -1052,7 +1052,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":928 -+/* "vidcutter/libs/pympv/mpv.pyx":930 - * - * @cython.internal - * cdef class RenderFrameInfo(object): # <<<<<<<<<<<<<< -@@ -1065,7 +1065,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":937 -+/* "vidcutter/libs/pympv/mpv.pyx":939 - * return self - * - * cdef class RenderContext(object): # <<<<<<<<<<<<<< -@@ -1084,7 +1084,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":1122 -+/* "vidcutter/libs/pympv/mpv.pyx":1124 - * self.close() - * - * cdef class OpenGLRenderContext(RenderContext): # <<<<<<<<<<<<<< -@@ -1096,7 +1096,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv_OpenGLRenderContext { - }; - - --/* "vidcutter/libs/pympv/mpv.pyx":318 -+/* "vidcutter/libs/pympv/mpv.pyx":320 - * - * - * def _errors(fn): # <<<<<<<<<<<<<< -@@ -1110,7 +1110,7 @@ struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors { - - - --/* "vidcutter/libs/pympv/mpv.pyx":156 -+/* "vidcutter/libs/pympv/mpv.pyx":158 - * - * - * cdef class EndOfFileReached(object): # <<<<<<<<<<<<<< -@@ -1124,7 +1124,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached { - static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *__pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached; - - --/* "vidcutter/libs/pympv/mpv.pyx":182 -+/* "vidcutter/libs/pympv/mpv.pyx":184 - * - * - * cdef class LogMessage(object): # <<<<<<<<<<<<<< -@@ -1138,7 +1138,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage { - static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *__pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage; - - --/* "vidcutter/libs/pympv/mpv.pyx":243 -+/* "vidcutter/libs/pympv/mpv.pyx":245 - * - * - * cdef class Property(object): # <<<<<<<<<<<<<< -@@ -1152,7 +1152,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property { - static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *__pyx_vtabptr_9vidcutter_4libs_3mpv_Property; - - --/* "vidcutter/libs/pympv/mpv.pyx":256 -+/* "vidcutter/libs/pympv/mpv.pyx":258 - * - * - * cdef class Event(object): # <<<<<<<<<<<<<< -@@ -1167,7 +1167,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event { - static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *__pyx_vtabptr_9vidcutter_4libs_3mpv_Event; - - --/* "vidcutter/libs/pympv/mpv.pyx":359 -+/* "vidcutter/libs/pympv/mpv.pyx":361 - * - * - * cdef class Context(object): # <<<<<<<<<<<<<< -@@ -1184,7 +1184,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context { - static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *__pyx_vtabptr_9vidcutter_4libs_3mpv_Context; - - --/* "vidcutter/libs/pympv/mpv.pyx":881 -+/* "vidcutter/libs/pympv/mpv.pyx":883 - * DEF MAX_RENDER_PARAMS = 32 - * - * cdef class _RenderParams(object): # <<<<<<<<<<<<<< -@@ -1200,7 +1200,7 @@ struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams { - static struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *__pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams; - - --/* "vidcutter/libs/pympv/mpv.pyx":928 -+/* "vidcutter/libs/pympv/mpv.pyx":930 - * - * @cython.internal - * cdef class RenderFrameInfo(object): # <<<<<<<<<<<<<< -@@ -2522,9 +2522,9 @@ static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv_OpenGLRenderContext(PyTypeOb - static PyObject *__pyx_tp_new_9vidcutter_4libs_3mpv___pyx_scope_struct___errors(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ - static PyObject *__pyx_int_0; - static PyObject *__pyx_int_1; --static PyObject *__pyx_int_2; - static PyObject *__pyx_int_3; - static PyObject *__pyx_int_32; -+static PyObject *__pyx_int_109; - static PyObject *__pyx_int_5713169; - static PyObject *__pyx_int_90958262; - static PyObject *__pyx_int_142036910; -@@ -2588,7 +2588,7 @@ static PyObject *__pyx_codeobj__53; - static PyObject *__pyx_codeobj__55; - /* Late includes */ - --/* "vidcutter/libs/pympv/mpv.pyx":55 -+/* "vidcutter/libs/pympv/mpv.pyx":57 - * _strdec_err = "surrogateescape" if _is_py3 else "strict" - * # mpv -> Python - * def _strdec(s): # <<<<<<<<<<<<<< -@@ -2627,7 +2627,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_strdec", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":56 -+ /* "vidcutter/libs/pympv/mpv.pyx":58 - * # mpv -> Python - * def _strdec(s): - * try: # <<<<<<<<<<<<<< -@@ -2643,7 +2643,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":57 -+ /* "vidcutter/libs/pympv/mpv.pyx":59 - * def _strdec(s): - * try: - * return s.decode("utf-8", _strdec_err) # <<<<<<<<<<<<<< -@@ -2651,9 +2651,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - * # In python2, bail to bytes on failure - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 57, __pyx_L3_error) -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 59, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L3_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 59, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; -@@ -2670,7 +2670,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_kp_s_utf_8, __pyx_t_6}; -- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L3_error) -+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -@@ -2679,14 +2679,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_kp_s_utf_8, __pyx_t_6}; -- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L3_error) -+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { -- __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 57, __pyx_L3_error) -+ __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 59, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; -@@ -2697,7 +2697,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6); - __pyx_t_6 = 0; -- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L3_error) -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } -@@ -2706,7 +2706,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - __pyx_t_4 = 0; - goto __pyx_L7_try_return; - -- /* "vidcutter/libs/pympv/mpv.pyx":56 -+ /* "vidcutter/libs/pympv/mpv.pyx":58 - * # mpv -> Python - * def _strdec(s): - * try: # <<<<<<<<<<<<<< -@@ -2721,7 +2721,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":58 -+ /* "vidcutter/libs/pympv/mpv.pyx":60 - * try: - * return s.decode("utf-8", _strdec_err) - * except UnicodeDecodeError: # <<<<<<<<<<<<<< -@@ -2731,12 +2731,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError); - if (__pyx_t_8) { - __Pyx_AddTraceback("vidcutter.libs.mpv._strdec", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 58, __pyx_L5_except_error) -+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 60, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_9); - -- /* "vidcutter/libs/pympv/mpv.pyx":60 -+ /* "vidcutter/libs/pympv/mpv.pyx":62 - * except UnicodeDecodeError: - * # In python2, bail to bytes on failure - * return bytes(s) # <<<<<<<<<<<<<< -@@ -2744,7 +2744,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - * # Python -> mpv - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_s); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 60, __pyx_L5_except_error) -+ __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_s); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 62, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; -@@ -2756,7 +2756,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - -- /* "vidcutter/libs/pympv/mpv.pyx":56 -+ /* "vidcutter/libs/pympv/mpv.pyx":58 - * # mpv -> Python - * def _strdec(s): - * try: # <<<<<<<<<<<<<< -@@ -2782,7 +2782,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - goto __pyx_L0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":55 -+ /* "vidcutter/libs/pympv/mpv.pyx":57 - * _strdec_err = "surrogateescape" if _is_py3 else "strict" - * # mpv -> Python - * def _strdec(s): # <<<<<<<<<<<<<< -@@ -2805,7 +2805,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv__strdec(CYTHON_UNUSED PyObject * - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":63 -+/* "vidcutter/libs/pympv/mpv.pyx":65 - * - * # Python -> mpv - * def _strenc(s): # <<<<<<<<<<<<<< -@@ -2844,7 +2844,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_strenc", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":64 -+ /* "vidcutter/libs/pympv/mpv.pyx":66 - * # Python -> mpv - * def _strenc(s): - * try: # <<<<<<<<<<<<<< -@@ -2860,7 +2860,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":65 -+ /* "vidcutter/libs/pympv/mpv.pyx":67 - * def _strenc(s): - * try: - * return s.encode("utf-8", _strdec_err) # <<<<<<<<<<<<<< -@@ -2868,9 +2868,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - * # In python2, assume bytes and walk right through - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 65, __pyx_L3_error) -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 67, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 65, __pyx_L3_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 67, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; -@@ -2887,7 +2887,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_kp_s_utf_8, __pyx_t_6}; -- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L3_error) -+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -@@ -2896,14 +2896,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_kp_s_utf_8, __pyx_t_6}; -- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L3_error) -+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { -- __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 65, __pyx_L3_error) -+ __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 67, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; -@@ -2914,7 +2914,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6); - __pyx_t_6 = 0; -- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L3_error) -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } -@@ -2923,7 +2923,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - __pyx_t_4 = 0; - goto __pyx_L7_try_return; - -- /* "vidcutter/libs/pympv/mpv.pyx":64 -+ /* "vidcutter/libs/pympv/mpv.pyx":66 - * # Python -> mpv - * def _strenc(s): - * try: # <<<<<<<<<<<<<< -@@ -2938,7 +2938,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":66 -+ /* "vidcutter/libs/pympv/mpv.pyx":68 - * try: - * return s.encode("utf-8", _strdec_err) - * except UnicodeEncodeError: # <<<<<<<<<<<<<< -@@ -2948,12 +2948,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeEncodeError); - if (__pyx_t_8) { - __Pyx_AddTraceback("vidcutter.libs.mpv._strenc", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 66, __pyx_L5_except_error) -+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 68, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_9); - -- /* "vidcutter/libs/pympv/mpv.pyx":68 -+ /* "vidcutter/libs/pympv/mpv.pyx":70 - * except UnicodeEncodeError: - * # In python2, assume bytes and walk right through - * return s # <<<<<<<<<<<<<< -@@ -2971,7 +2971,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - -- /* "vidcutter/libs/pympv/mpv.pyx":64 -+ /* "vidcutter/libs/pympv/mpv.pyx":66 - * # Python -> mpv - * def _strenc(s): - * try: # <<<<<<<<<<<<<< -@@ -2997,7 +2997,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - goto __pyx_L0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":63 -+ /* "vidcutter/libs/pympv/mpv.pyx":65 - * - * # Python -> mpv - * def _strenc(s): # <<<<<<<<<<<<<< -@@ -3020,7 +3020,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_2_strenc(CYTHON_UNUSED PyObject - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":163 -+/* "vidcutter/libs/pympv/mpv.pyx":165 - * cdef public object reason, error - * - * cdef _init(self, mpv_event_end_file* eof): # <<<<<<<<<<<<<< -@@ -3037,14 +3037,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_init", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":164 -+ /* "vidcutter/libs/pympv/mpv.pyx":166 - * - * cdef _init(self, mpv_event_end_file* eof): - * self.reason = eof.reason # <<<<<<<<<<<<<< - * self.error = eof.error - * return self - */ -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_eof->reason); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_eof->reason); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->reason); -@@ -3052,14 +3052,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ - __pyx_v_self->reason = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":165 -+ /* "vidcutter/libs/pympv/mpv.pyx":167 - * cdef _init(self, mpv_event_end_file* eof): - * self.reason = eof.reason - * self.error = eof.error # <<<<<<<<<<<<<< - * return self - * - */ -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_eof->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_eof->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->error); -@@ -3067,7 +3067,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ - __pyx_v_self->error = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":166 -+ /* "vidcutter/libs/pympv/mpv.pyx":168 - * self.reason = eof.reason - * self.error = eof.error - * return self # <<<<<<<<<<<<<< -@@ -3079,7 +3079,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":163 -+ /* "vidcutter/libs/pympv/mpv.pyx":165 - * cdef public object reason, error - * - * cdef _init(self, mpv_event_end_file* eof): # <<<<<<<<<<<<<< -@@ -3098,7 +3098,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init(struct _ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":161 -+/* "vidcutter/libs/pympv/mpv.pyx":163 - * Wraps: mpv_event_end_file - * """ - * cdef public object reason, error # <<<<<<<<<<<<<< -@@ -3587,7 +3587,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_16EndOfFileReached_2__setstate_c - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":189 -+/* "vidcutter/libs/pympv/mpv.pyx":191 - * cdef public object prefix, level, text, log_level - * - * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< -@@ -3607,16 +3607,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_init", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":190 -+ /* "vidcutter/libs/pympv/mpv.pyx":192 - * - * cdef _init(self, mpv_event_log_message* msg): - * self.level = _strdec(msg.level) # <<<<<<<<<<<<<< - * self.prefix = _strdec(msg.prefix) - * self.text = _strdec(msg.text) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->level); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -3631,7 +3631,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); -@@ -3640,16 +3640,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - __pyx_v_self->level = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":191 -+ /* "vidcutter/libs/pympv/mpv.pyx":193 - * cdef _init(self, mpv_event_log_message* msg): - * self.level = _strdec(msg.level) - * self.prefix = _strdec(msg.prefix) # <<<<<<<<<<<<<< - * self.text = _strdec(msg.text) - * self.log_level = msg.log_level - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -3664,7 +3664,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); -@@ -3673,16 +3673,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - __pyx_v_self->prefix = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":192 -+ /* "vidcutter/libs/pympv/mpv.pyx":194 - * self.level = _strdec(msg.level) - * self.prefix = _strdec(msg.prefix) - * self.text = _strdec(msg.text) # <<<<<<<<<<<<<< - * self.log_level = msg.log_level - * return self - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_msg->text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -3697,7 +3697,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); -@@ -3706,14 +3706,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - __pyx_v_self->text = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":193 -+ /* "vidcutter/libs/pympv/mpv.pyx":195 - * self.prefix = _strdec(msg.prefix) - * self.text = _strdec(msg.text) - * self.log_level = msg.log_level # <<<<<<<<<<<<<< - * return self - * - */ -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_msg->log_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_msg->log_level); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->log_level); -@@ -3721,7 +3721,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - __pyx_v_self->log_level = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":194 -+ /* "vidcutter/libs/pympv/mpv.pyx":196 - * self.text = _strdec(msg.text) - * self.log_level = msg.log_level - * return self # <<<<<<<<<<<<<< -@@ -3733,7 +3733,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":189 -+ /* "vidcutter/libs/pympv/mpv.pyx":191 - * cdef public object prefix, level, text, log_level - * - * cdef _init(self, mpv_event_log_message* msg): # <<<<<<<<<<<<<< -@@ -3755,7 +3755,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init(struct __pyx_o - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":187 -+/* "vidcutter/libs/pympv/mpv.pyx":189 - * Wraps: mpv_event_log_message - * """ - * cdef public object prefix, level, text, log_level # <<<<<<<<<<<<<< -@@ -4438,7 +4438,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_10LogMessage_2__setstate_cython_ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":197 -+/* "vidcutter/libs/pympv/mpv.pyx":199 - * - * - * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< -@@ -4459,7 +4459,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_convert_node_value", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":198 -+ /* "vidcutter/libs/pympv/mpv.pyx":200 - * - * cdef _convert_node_value(mpv_node node): - * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -@@ -4469,7 +4469,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - switch (__pyx_v_node.format) { - case MPV_FORMAT_STRING: - -- /* "vidcutter/libs/pympv/mpv.pyx":199 -+ /* "vidcutter/libs/pympv/mpv.pyx":201 - * cdef _convert_node_value(mpv_node node): - * if node.format == MPV_FORMAT_STRING: - * return _strdec(node.u.string) # <<<<<<<<<<<<<< -@@ -4477,9 +4477,9 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - * return not not int(node.u.flag) - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_node.u.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_node.u.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -4494,14 +4494,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":198 -+ /* "vidcutter/libs/pympv/mpv.pyx":200 - * - * cdef _convert_node_value(mpv_node node): - * if node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -@@ -4511,7 +4511,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - break; - case MPV_FORMAT_FLAG: - -- /* "vidcutter/libs/pympv/mpv.pyx":201 -+ /* "vidcutter/libs/pympv/mpv.pyx":203 - * return _strdec(node.u.string) - * elif node.format == MPV_FORMAT_FLAG: - * return not not int(node.u.flag) # <<<<<<<<<<<<<< -@@ -4519,20 +4519,20 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - * return int(node.u.int64) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_node.u.flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_node.u.flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 201, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 203, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_2 = __Pyx_PyBool_FromLong((!((!__pyx_t_5) != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyBool_FromLong((!((!__pyx_t_5) != 0))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":200 -+ /* "vidcutter/libs/pympv/mpv.pyx":202 - * if node.format == MPV_FORMAT_STRING: - * return _strdec(node.u.string) - * elif node.format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -@@ -4542,7 +4542,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - break; - case MPV_FORMAT_INT64: - -- /* "vidcutter/libs/pympv/mpv.pyx":203 -+ /* "vidcutter/libs/pympv/mpv.pyx":205 - * return not not int(node.u.flag) - * elif node.format == MPV_FORMAT_INT64: - * return int(node.u.int64) # <<<<<<<<<<<<<< -@@ -4550,16 +4550,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - * return float(node.u.double_) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyInt_From_int64_t(__pyx_v_node.u.int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_From_int64_t(__pyx_v_node.u.int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":202 -+ /* "vidcutter/libs/pympv/mpv.pyx":204 - * elif node.format == MPV_FORMAT_FLAG: - * return not not int(node.u.flag) - * elif node.format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -@@ -4569,7 +4569,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - break; - case MPV_FORMAT_DOUBLE: - -- /* "vidcutter/libs/pympv/mpv.pyx":205 -+ /* "vidcutter/libs/pympv/mpv.pyx":207 - * return int(node.u.int64) - * elif node.format == MPV_FORMAT_DOUBLE: - * return float(node.u.double_) # <<<<<<<<<<<<<< -@@ -4577,13 +4577,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - * return _convert_value(node.u.list, node.format) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = PyFloat_FromDouble(__pyx_v_node.u.double_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) -+ __pyx_t_1 = PyFloat_FromDouble(__pyx_v_node.u.double_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":204 -+ /* "vidcutter/libs/pympv/mpv.pyx":206 - * elif node.format == MPV_FORMAT_INT64: - * return int(node.u.int64) - * elif node.format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -@@ -4593,7 +4593,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - break; - case MPV_FORMAT_NODE_MAP: - -- /* "vidcutter/libs/pympv/mpv.pyx":207 -+ /* "vidcutter/libs/pympv/mpv.pyx":209 - * return float(node.u.double_) - * elif node.format == MPV_FORMAT_NODE_MAP: - * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< -@@ -4601,13 +4601,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - * return _convert_value(node.u.list, node.format) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":206 -+ /* "vidcutter/libs/pympv/mpv.pyx":208 - * elif node.format == MPV_FORMAT_DOUBLE: - * return float(node.u.double_) - * elif node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -@@ -4617,7 +4617,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - break; - case MPV_FORMAT_NODE_ARRAY: - -- /* "vidcutter/libs/pympv/mpv.pyx":209 -+ /* "vidcutter/libs/pympv/mpv.pyx":211 - * return _convert_value(node.u.list, node.format) - * elif node.format == MPV_FORMAT_NODE_ARRAY: - * return _convert_value(node.u.list, node.format) # <<<<<<<<<<<<<< -@@ -4625,13 +4625,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - * - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_node.u.list, __pyx_v_node.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":208 -+ /* "vidcutter/libs/pympv/mpv.pyx":210 - * elif node.format == MPV_FORMAT_NODE_MAP: - * return _convert_value(node.u.list, node.format) - * elif node.format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -@@ -4642,7 +4642,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - default: break; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":210 -+ /* "vidcutter/libs/pympv/mpv.pyx":212 - * elif node.format == MPV_FORMAT_NODE_ARRAY: - * return _convert_value(node.u.list, node.format) - * return None # <<<<<<<<<<<<<< -@@ -4653,7 +4653,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":197 -+ /* "vidcutter/libs/pympv/mpv.pyx":199 - * - * - * cdef _convert_node_value(mpv_node node): # <<<<<<<<<<<<<< -@@ -4675,7 +4675,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_node_value(struct mpv_no - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":213 -+/* "vidcutter/libs/pympv/mpv.pyx":215 - * - * - * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< -@@ -4704,7 +4704,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_convert_value", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":216 -+ /* "vidcutter/libs/pympv/mpv.pyx":218 - * cdef mpv_node node - * cdef mpv_node_list nodelist - * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< -@@ -4714,7 +4714,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - switch (__pyx_v_format) { - case MPV_FORMAT_NODE: - -- /* "vidcutter/libs/pympv/mpv.pyx":217 -+ /* "vidcutter/libs/pympv/mpv.pyx":219 - * cdef mpv_node_list nodelist - * if format == MPV_FORMAT_NODE: - * node = (data)[0] # <<<<<<<<<<<<<< -@@ -4723,7 +4723,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - */ - __pyx_v_node = (((struct mpv_node *)__pyx_v_data)[0]); - -- /* "vidcutter/libs/pympv/mpv.pyx":218 -+ /* "vidcutter/libs/pympv/mpv.pyx":220 - * if format == MPV_FORMAT_NODE: - * node = (data)[0] - * return _convert_node_value(node) # <<<<<<<<<<<<<< -@@ -4731,13 +4731,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - * nodelist = (data)[0] - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":216 -+ /* "vidcutter/libs/pympv/mpv.pyx":218 - * cdef mpv_node node - * cdef mpv_node_list nodelist - * if format == MPV_FORMAT_NODE: # <<<<<<<<<<<<<< -@@ -4747,7 +4747,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - break; - case MPV_FORMAT_NODE_ARRAY: - -- /* "vidcutter/libs/pympv/mpv.pyx":220 -+ /* "vidcutter/libs/pympv/mpv.pyx":222 - * return _convert_node_value(node) - * elif format == MPV_FORMAT_NODE_ARRAY: - * nodelist = (data)[0] # <<<<<<<<<<<<<< -@@ -4756,19 +4756,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - */ - __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); - -- /* "vidcutter/libs/pympv/mpv.pyx":221 -+ /* "vidcutter/libs/pympv/mpv.pyx":223 - * elif format == MPV_FORMAT_NODE_ARRAY: - * nodelist = (data)[0] - * values = [] # <<<<<<<<<<<<<< - * for i in range(nodelist.num): - * values.append(_convert_node_value(nodelist.values[i])) - */ -- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) -+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_values = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":222 -+ /* "vidcutter/libs/pympv/mpv.pyx":224 - * nodelist = (data)[0] - * values = [] - * for i in range(nodelist.num): # <<<<<<<<<<<<<< -@@ -4780,20 +4780,20 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":223 -+ /* "vidcutter/libs/pympv/mpv.pyx":225 - * values = [] - * for i in range(nodelist.num): - * values.append(_convert_node_value(nodelist.values[i])) # <<<<<<<<<<<<<< - * return values - * elif format == MPV_FORMAT_NODE_MAP: - */ -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_values, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 223, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_values, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 225, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":224 -+ /* "vidcutter/libs/pympv/mpv.pyx":226 - * for i in range(nodelist.num): - * values.append(_convert_node_value(nodelist.values[i])) - * return values # <<<<<<<<<<<<<< -@@ -4805,7 +4805,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - __pyx_r = __pyx_v_values; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":219 -+ /* "vidcutter/libs/pympv/mpv.pyx":221 - * node = (data)[0] - * return _convert_node_value(node) - * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -@@ -4815,7 +4815,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - break; - case MPV_FORMAT_NODE_MAP: - -- /* "vidcutter/libs/pympv/mpv.pyx":226 -+ /* "vidcutter/libs/pympv/mpv.pyx":228 - * return values - * elif format == MPV_FORMAT_NODE_MAP: - * nodelist = (data)[0] # <<<<<<<<<<<<<< -@@ -4824,19 +4824,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - */ - __pyx_v_nodelist = (((struct mpv_node_list *)__pyx_v_data)[0]); - -- /* "vidcutter/libs/pympv/mpv.pyx":227 -+ /* "vidcutter/libs/pympv/mpv.pyx":229 - * elif format == MPV_FORMAT_NODE_MAP: - * nodelist = (data)[0] - * values = {} # <<<<<<<<<<<<<< - * for i in range(nodelist.num): - * value = _convert_node_value(nodelist.values[i]) - */ -- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_values = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":228 -+ /* "vidcutter/libs/pympv/mpv.pyx":230 - * nodelist = (data)[0] - * values = {} - * for i in range(nodelist.num): # <<<<<<<<<<<<<< -@@ -4848,28 +4848,28 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":229 -+ /* "vidcutter/libs/pympv/mpv.pyx":231 - * values = {} - * for i in range(nodelist.num): - * value = _convert_node_value(nodelist.values[i]) # <<<<<<<<<<<<<< - * values[_strdec(nodelist.keys[i])] = value - * return values - */ -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value((__pyx_v_nodelist.values[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":230 -+ /* "vidcutter/libs/pympv/mpv.pyx":232 - * for i in range(nodelist.num): - * value = _convert_node_value(nodelist.values[i]) - * values[_strdec(nodelist.keys[i])] = value # <<<<<<<<<<<<<< - * return values - * elif format == MPV_FORMAT_STRING: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 230, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = __Pyx_PyBytes_FromString((__pyx_v_nodelist.keys[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 230, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyBytes_FromString((__pyx_v_nodelist.keys[__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -4884,14 +4884,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(PyObject_SetItem(__pyx_v_values, __pyx_t_1, __pyx_v_value) < 0)) __PYX_ERR(0, 230, __pyx_L1_error) -+ if (unlikely(PyObject_SetItem(__pyx_v_values, __pyx_t_1, __pyx_v_value) < 0)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":231 -+ /* "vidcutter/libs/pympv/mpv.pyx":233 - * value = _convert_node_value(nodelist.values[i]) - * values[_strdec(nodelist.keys[i])] = value - * return values # <<<<<<<<<<<<<< -@@ -4903,7 +4903,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - __pyx_r = __pyx_v_values; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":225 -+ /* "vidcutter/libs/pympv/mpv.pyx":227 - * values.append(_convert_node_value(nodelist.values[i])) - * return values - * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -@@ -4913,7 +4913,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - break; - case MPV_FORMAT_STRING: - -- /* "vidcutter/libs/pympv/mpv.pyx":233 -+ /* "vidcutter/libs/pympv/mpv.pyx":235 - * return values - * elif format == MPV_FORMAT_STRING: - * return _strdec(((data)[0])) # <<<<<<<<<<<<<< -@@ -4921,9 +4921,9 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - * return not not (data)[0] - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 233, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_strdec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 235, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = __Pyx_PyBytes_FromString((((char **)__pyx_v_data)[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyBytes_FromString((((char **)__pyx_v_data)[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 235, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -4938,14 +4938,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":232 -+ /* "vidcutter/libs/pympv/mpv.pyx":234 - * values[_strdec(nodelist.keys[i])] = value - * return values - * elif format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -@@ -4955,7 +4955,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - break; - case MPV_FORMAT_FLAG: - -- /* "vidcutter/libs/pympv/mpv.pyx":235 -+ /* "vidcutter/libs/pympv/mpv.pyx":237 - * return _strdec(((data)[0])) - * elif format == MPV_FORMAT_FLAG: - * return not not (data)[0] # <<<<<<<<<<<<<< -@@ -4963,13 +4963,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - * return int((data)[0]) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyBool_FromLong((!((!((((uint64_t *)__pyx_v_data)[0]) != 0)) != 0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!((!((((uint64_t *)__pyx_v_data)[0]) != 0)) != 0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":234 -+ /* "vidcutter/libs/pympv/mpv.pyx":236 - * elif format == MPV_FORMAT_STRING: - * return _strdec(((data)[0])) - * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -@@ -4979,7 +4979,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - break; - case MPV_FORMAT_INT64: - -- /* "vidcutter/libs/pympv/mpv.pyx":237 -+ /* "vidcutter/libs/pympv/mpv.pyx":239 - * return not not (data)[0] - * elif format == MPV_FORMAT_INT64: - * return int((data)[0]) # <<<<<<<<<<<<<< -@@ -4987,16 +4987,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - * return float((data)[0]) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t((((uint64_t *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t((((uint64_t *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 239, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 237, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 239, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":236 -+ /* "vidcutter/libs/pympv/mpv.pyx":238 - * elif format == MPV_FORMAT_FLAG: - * return not not (data)[0] - * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -@@ -5006,7 +5006,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - break; - case MPV_FORMAT_DOUBLE: - -- /* "vidcutter/libs/pympv/mpv.pyx":239 -+ /* "vidcutter/libs/pympv/mpv.pyx":241 - * return int((data)[0]) - * elif format == MPV_FORMAT_DOUBLE: - * return float((data)[0]) # <<<<<<<<<<<<<< -@@ -5014,13 +5014,13 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - * - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_6 = PyFloat_FromDouble((((double *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 239, __pyx_L1_error) -+ __pyx_t_6 = PyFloat_FromDouble((((double *)__pyx_v_data)[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 241, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":238 -+ /* "vidcutter/libs/pympv/mpv.pyx":240 - * elif format == MPV_FORMAT_INT64: - * return int((data)[0]) - * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -@@ -5031,7 +5031,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - default: break; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":240 -+ /* "vidcutter/libs/pympv/mpv.pyx":242 - * elif format == MPV_FORMAT_DOUBLE: - * return float((data)[0]) - * return None # <<<<<<<<<<<<<< -@@ -5042,7 +5042,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":213 -+ /* "vidcutter/libs/pympv/mpv.pyx":215 - * - * - * cdef _convert_value(void* data, mpv_format format): # <<<<<<<<<<<<<< -@@ -5066,7 +5066,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv__convert_value(void *__pyx_v_data - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":250 -+/* "vidcutter/libs/pympv/mpv.pyx":252 - * cdef public object name, data - * - * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< -@@ -5086,16 +5086,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_init", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":251 -+ /* "vidcutter/libs/pympv/mpv.pyx":253 - * - * cdef _init(self, mpv_event_property* prop): - * self.name = _strdec(prop.name) # <<<<<<<<<<<<<< - * self.data = _convert_value(prop.data, prop.format) - * return self - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 253, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_prop->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_prop->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 253, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -5110,7 +5110,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 253, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); -@@ -5119,14 +5119,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ - __pyx_v_self->name = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":252 -+ /* "vidcutter/libs/pympv/mpv.pyx":254 - * cdef _init(self, mpv_event_property* prop): - * self.name = _strdec(prop.name) - * self.data = _convert_value(prop.data, prop.format) # <<<<<<<<<<<<<< - * return self - * - */ -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_prop->data, __pyx_v_prop->format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_value(__pyx_v_prop->data, __pyx_v_prop->format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->data); -@@ -5134,7 +5134,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ - __pyx_v_self->data = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":253 -+ /* "vidcutter/libs/pympv/mpv.pyx":255 - * self.name = _strdec(prop.name) - * self.data = _convert_value(prop.data, prop.format) - * return self # <<<<<<<<<<<<<< -@@ -5146,7 +5146,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":250 -+ /* "vidcutter/libs/pympv/mpv.pyx":252 - * cdef public object name, data - * - * cdef _init(self, mpv_event_property* prop): # <<<<<<<<<<<<<< -@@ -5168,7 +5168,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_8Property__init(struct __pyx_obj_ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":248 -+/* "vidcutter/libs/pympv/mpv.pyx":250 - * Wraps: mpv_event_property - * """ - * cdef public object name, data # <<<<<<<<<<<<<< -@@ -5657,7 +5657,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8Property_2__setstate_cython__(s - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":263 -+/* "vidcutter/libs/pympv/mpv.pyx":265 - * - * @property - * def error_str(self): # <<<<<<<<<<<<<< -@@ -5691,7 +5691,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":266 -+ /* "vidcutter/libs/pympv/mpv.pyx":268 - * """mpv_error_string of the error proeprty""" - * cdef const char* err_c - * with nogil: # <<<<<<<<<<<<<< -@@ -5706,7 +5706,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":267 -+ /* "vidcutter/libs/pympv/mpv.pyx":269 - * cdef const char* err_c - * with nogil: - * err_c = mpv_error_string(self.error) # <<<<<<<<<<<<<< -@@ -5716,7 +5716,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct - __pyx_v_err_c = mpv_error_string(__pyx_v_self->error); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":266 -+ /* "vidcutter/libs/pympv/mpv.pyx":268 - * """mpv_error_string of the error proeprty""" - * cdef const char* err_c - * with nogil: # <<<<<<<<<<<<<< -@@ -5735,7 +5735,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":268 -+ /* "vidcutter/libs/pympv/mpv.pyx":270 - * with nogil: - * err_c = mpv_error_string(self.error) - * return _strdec(err_c) # <<<<<<<<<<<<<< -@@ -5743,9 +5743,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct - * cdef _data(self, mpv_event* event): - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -5760,14 +5760,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":263 -+ /* "vidcutter/libs/pympv/mpv.pyx":265 - * - * @property - * def error_str(self): # <<<<<<<<<<<<<< -@@ -5789,7 +5789,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_9error_str___get__(struct - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":270 -+/* "vidcutter/libs/pympv/mpv.pyx":272 - * return _strdec(err_c) - * - * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< -@@ -5819,7 +5819,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_data", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":271 -+ /* "vidcutter/libs/pympv/mpv.pyx":273 - * - * cdef _data(self, mpv_event* event): - * cdef void* data = event.data # <<<<<<<<<<<<<< -@@ -5829,7 +5829,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - __pyx_t_1 = __pyx_v_event->data; - __pyx_v_data = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":273 -+ /* "vidcutter/libs/pympv/mpv.pyx":275 - * cdef void* data = event.data - * cdef mpv_event_client_message* climsg - * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< -@@ -5839,7 +5839,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - switch (__pyx_v_self->id) { - case MPV_EVENT_GET_PROPERTY_REPLY: - -- /* "vidcutter/libs/pympv/mpv.pyx":274 -+ /* "vidcutter/libs/pympv/mpv.pyx":276 - * cdef mpv_event_client_message* climsg - * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: - * return Property()._init(data) # <<<<<<<<<<<<<< -@@ -5847,16 +5847,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - * return Property()._init(data) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) -+ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_2), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":273 -+ /* "vidcutter/libs/pympv/mpv.pyx":275 - * cdef void* data = event.data - * cdef mpv_event_client_message* climsg - * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: # <<<<<<<<<<<<<< -@@ -5866,7 +5866,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - break; - case MPV_EVENT_PROPERTY_CHANGE: - -- /* "vidcutter/libs/pympv/mpv.pyx":276 -+ /* "vidcutter/libs/pympv/mpv.pyx":278 - * return Property()._init(data) - * elif self.id == MPV_EVENT_PROPERTY_CHANGE: - * return Property()._init(data) # <<<<<<<<<<<<<< -@@ -5874,16 +5874,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - * return LogMessage()._init(data) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Property)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Property *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Property *)__pyx_t_3), ((struct mpv_event_property *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":275 -+ /* "vidcutter/libs/pympv/mpv.pyx":277 - * if self.id == MPV_EVENT_GET_PROPERTY_REPLY: - * return Property()._init(data) - * elif self.id == MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< -@@ -5893,7 +5893,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - break; - case MPV_EVENT_LOG_MESSAGE: - -- /* "vidcutter/libs/pympv/mpv.pyx":278 -+ /* "vidcutter/libs/pympv/mpv.pyx":280 - * return Property()._init(data) - * elif self.id == MPV_EVENT_LOG_MESSAGE: - * return LogMessage()._init(data) # <<<<<<<<<<<<<< -@@ -5901,16 +5901,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - * # return InputDispatch()._init(data) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_LogMessage)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *)((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2), ((struct mpv_event_log_message *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error) -+ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_LogMessage *)((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *)__pyx_t_2), ((struct mpv_event_log_message *)__pyx_v_data)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 280, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":277 -+ /* "vidcutter/libs/pympv/mpv.pyx":279 - * elif self.id == MPV_EVENT_PROPERTY_CHANGE: - * return Property()._init(data) - * elif self.id == MPV_EVENT_LOG_MESSAGE: # <<<<<<<<<<<<<< -@@ -5920,7 +5920,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - break; - case MPV_EVENT_CLIENT_MESSAGE: - -- /* "vidcutter/libs/pympv/mpv.pyx":282 -+ /* "vidcutter/libs/pympv/mpv.pyx":284 - * # return InputDispatch()._init(data) - * elif self.id == MPV_EVENT_CLIENT_MESSAGE: - * climsg = data # <<<<<<<<<<<<<< -@@ -5929,19 +5929,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - */ - __pyx_v_climsg = ((struct mpv_event_client_message *)__pyx_v_data); - -- /* "vidcutter/libs/pympv/mpv.pyx":283 -+ /* "vidcutter/libs/pympv/mpv.pyx":285 - * elif self.id == MPV_EVENT_CLIENT_MESSAGE: - * climsg = data - * args = [] # <<<<<<<<<<<<<< - * num_args = climsg.num_args - * for i in range(num_args): - */ -- __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 283, __pyx_L1_error) -+ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_args = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":284 -+ /* "vidcutter/libs/pympv/mpv.pyx":286 - * climsg = data - * args = [] - * num_args = climsg.num_args # <<<<<<<<<<<<<< -@@ -5951,7 +5951,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - __pyx_t_4 = __pyx_v_climsg->num_args; - __pyx_v_num_args = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":285 -+ /* "vidcutter/libs/pympv/mpv.pyx":287 - * args = [] - * num_args = climsg.num_args - * for i in range(num_args): # <<<<<<<<<<<<<< -@@ -5963,26 +5963,26 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { - __pyx_v_i = __pyx_t_6; - -- /* "vidcutter/libs/pympv/mpv.pyx":286 -+ /* "vidcutter/libs/pympv/mpv.pyx":288 - * num_args = climsg.num_args - * for i in range(num_args): - * arg = climsg.args[i] # <<<<<<<<<<<<<< - * arg = _strdec(arg) - * args.append(arg) - */ -- __pyx_t_3 = __Pyx_PyBytes_FromString(((char *)(__pyx_v_climsg->args[__pyx_v_i]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(((char *)(__pyx_v_climsg->args[__pyx_v_i]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_3); - __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":287 -+ /* "vidcutter/libs/pympv/mpv.pyx":289 - * for i in range(num_args): - * arg = climsg.args[i] - * arg = _strdec(arg) # <<<<<<<<<<<<<< - * args.append(arg) - * return args - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 287, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -5996,23 +5996,23 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - } - __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_arg) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_arg); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L1_error) -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_arg, __pyx_t_3); - __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":288 -+ /* "vidcutter/libs/pympv/mpv.pyx":290 - * arg = climsg.args[i] - * arg = _strdec(arg) - * args.append(arg) # <<<<<<<<<<<<<< - * return args - * elif self.id == MPV_EVENT_END_FILE: - */ -- __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_args, __pyx_v_arg); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 288, __pyx_L1_error) -+ __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_args, __pyx_v_arg); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 290, __pyx_L1_error) - } - -- /* "vidcutter/libs/pympv/mpv.pyx":289 -+ /* "vidcutter/libs/pympv/mpv.pyx":291 - * arg = _strdec(arg) - * args.append(arg) - * return args # <<<<<<<<<<<<<< -@@ -6024,7 +6024,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - __pyx_r = __pyx_v_args; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":281 -+ /* "vidcutter/libs/pympv/mpv.pyx":283 - * # elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH: - * # return InputDispatch()._init(data) - * elif self.id == MPV_EVENT_CLIENT_MESSAGE: # <<<<<<<<<<<<<< -@@ -6034,7 +6034,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - break; - case MPV_EVENT_END_FILE: - -- /* "vidcutter/libs/pympv/mpv.pyx":291 -+ /* "vidcutter/libs/pympv/mpv.pyx":293 - * return args - * elif self.id == MPV_EVENT_END_FILE: - * return EndOfFileReached()._init(data) # <<<<<<<<<<<<<< -@@ -6042,16 +6042,16 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - * - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *)((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3), ((struct mpv_event_end_file *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error) -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_EndOfFileReached *)((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *)__pyx_t_3), ((struct mpv_event_end_file *)__pyx_v_data)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 293, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":290 -+ /* "vidcutter/libs/pympv/mpv.pyx":292 - * args.append(arg) - * return args - * elif self.id == MPV_EVENT_END_FILE: # <<<<<<<<<<<<<< -@@ -6062,7 +6062,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - default: break; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":292 -+ /* "vidcutter/libs/pympv/mpv.pyx":294 - * elif self.id == MPV_EVENT_END_FILE: - * return EndOfFileReached()._init(data) - * return None # <<<<<<<<<<<<<< -@@ -6073,7 +6073,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":270 -+ /* "vidcutter/libs/pympv/mpv.pyx":272 - * return _strdec(err_c) - * - * cdef _data(self, mpv_event* event): # <<<<<<<<<<<<<< -@@ -6096,7 +6096,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__data(struct __pyx_obj_9vi - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":295 -+/* "vidcutter/libs/pympv/mpv.pyx":297 - * - * @property - * def name(self): # <<<<<<<<<<<<<< -@@ -6130,7 +6130,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":298 -+ /* "vidcutter/libs/pympv/mpv.pyx":300 - * """mpv_event_name of the event id""" - * cdef const char* name_c - * with nogil: # <<<<<<<<<<<<<< -@@ -6145,7 +6145,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":299 -+ /* "vidcutter/libs/pympv/mpv.pyx":301 - * cdef const char* name_c - * with nogil: - * name_c = mpv_event_name(self.id) # <<<<<<<<<<<<<< -@@ -6155,7 +6155,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py - __pyx_v_name_c = mpv_event_name(__pyx_v_self->id); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":298 -+ /* "vidcutter/libs/pympv/mpv.pyx":300 - * """mpv_event_name of the event id""" - * cdef const char* name_c - * with nogil: # <<<<<<<<<<<<<< -@@ -6174,7 +6174,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":300 -+ /* "vidcutter/libs/pympv/mpv.pyx":302 - * with nogil: - * name_c = mpv_event_name(self.id) - * return _strdec(name_c) # <<<<<<<<<<<<<< -@@ -6182,9 +6182,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py - * cdef _init(self, mpv_event* event, ctx): - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name_c); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -6199,14 +6199,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":295 -+ /* "vidcutter/libs/pympv/mpv.pyx":297 - * - * @property - * def name(self): # <<<<<<<<<<<<<< -@@ -6228,7 +6228,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_4name___get__(struct __py - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":302 -+/* "vidcutter/libs/pympv/mpv.pyx":304 - * return _strdec(name_c) - * - * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< -@@ -6257,20 +6257,20 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_init", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":303 -+ /* "vidcutter/libs/pympv/mpv.pyx":305 - * - * cdef _init(self, mpv_event* event, ctx): - * cdef uint64_t ctxid = id(ctx) # <<<<<<<<<<<<<< - * self.id = event.event_id - * self.data = self._data(event) - */ -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 303, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_ctxid = ((uint64_t)__pyx_t_2); - -- /* "vidcutter/libs/pympv/mpv.pyx":304 -+ /* "vidcutter/libs/pympv/mpv.pyx":306 - * cdef _init(self, mpv_event* event, ctx): - * cdef uint64_t ctxid = id(ctx) - * self.id = event.event_id # <<<<<<<<<<<<<< -@@ -6280,14 +6280,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __pyx_t_3 = __pyx_v_event->event_id; - __pyx_v_self->id = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":305 -+ /* "vidcutter/libs/pympv/mpv.pyx":307 - * cdef uint64_t ctxid = id(ctx) - * self.id = event.event_id - * self.data = self._data(event) # <<<<<<<<<<<<<< - * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) - * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)__pyx_v_self->__pyx_vtab)->_data(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)__pyx_v_self->__pyx_vtab)->_data(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 307, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->data); -@@ -6295,19 +6295,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __pyx_v_self->data = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":306 -+ /* "vidcutter/libs/pympv/mpv.pyx":308 - * self.id = event.event_id - * self.data = self._data(event) - * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) # <<<<<<<<<<<<<< - * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: - * userdata.remove() - */ -- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_event->reply_userdata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_event->reply_userdata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = NULL; - __pyx_t_7 = 0; -@@ -6324,7 +6324,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; -- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -@@ -6333,14 +6333,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, Py_None}; -- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { -- __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; -@@ -6351,7 +6351,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, Py_None); - __pyx_t_4 = 0; -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } -@@ -6359,7 +6359,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __pyx_v_userdata = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":307 -+ /* "vidcutter/libs/pympv/mpv.pyx":309 - * self.data = self._data(event) - * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) - * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< -@@ -6378,14 +6378,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __pyx_L4_bool_binop_done:; - if (__pyx_t_9) { - -- /* "vidcutter/libs/pympv/mpv.pyx":308 -+ /* "vidcutter/libs/pympv/mpv.pyx":310 - * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) - * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: - * userdata.remove() # <<<<<<<<<<<<<< - * if not userdata.observed and userdata.counter <= 0: - * del _reply_userdatas[ctxid][event.reply_userdata] - */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -@@ -6399,21 +6399,21 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - } - __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":309 -+ /* "vidcutter/libs/pympv/mpv.pyx":311 - * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: - * userdata.remove() - * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< - * del _reply_userdatas[ctxid][event.reply_userdata] - * if userdata is not None: - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_observed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_observed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 311, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_10 = ((!__pyx_t_11) != 0); - if (__pyx_t_10) { -@@ -6421,29 +6421,29 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __pyx_t_9 = __pyx_t_10; - goto __pyx_L7_bool_binop_done; - } -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 311, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) -+ __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 311, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_9 = __pyx_t_10; - __pyx_L7_bool_binop_done:; - if (__pyx_t_9) { - -- /* "vidcutter/libs/pympv/mpv.pyx":310 -+ /* "vidcutter/libs/pympv/mpv.pyx":312 - * userdata.remove() - * if not userdata.observed and userdata.counter <= 0: - * del _reply_userdatas[ctxid][event.reply_userdata] # <<<<<<<<<<<<<< - * if userdata is not None: - * userdata = userdata.data - */ -- __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 312, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); -- if (unlikely(__Pyx_DelItemInt(__pyx_t_5, __pyx_v_event->reply_userdata, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 310, __pyx_L1_error) -+ if (unlikely(__Pyx_DelItemInt(__pyx_t_5, __pyx_v_event->reply_userdata, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 312, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":309 -+ /* "vidcutter/libs/pympv/mpv.pyx":311 - * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: - * userdata.remove() - * if not userdata.observed and userdata.counter <= 0: # <<<<<<<<<<<<<< -@@ -6452,7 +6452,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":307 -+ /* "vidcutter/libs/pympv/mpv.pyx":309 - * self.data = self._data(event) - * userdata = _reply_userdatas[ctxid].get(event.reply_userdata, None) - * if userdata is not None and self.id != MPV_EVENT_PROPERTY_CHANGE: # <<<<<<<<<<<<<< -@@ -6461,7 +6461,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":311 -+ /* "vidcutter/libs/pympv/mpv.pyx":313 - * if not userdata.observed and userdata.counter <= 0: - * del _reply_userdatas[ctxid][event.reply_userdata] - * if userdata is not None: # <<<<<<<<<<<<<< -@@ -6472,19 +6472,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __pyx_t_10 = (__pyx_t_9 != 0); - if (__pyx_t_10) { - -- /* "vidcutter/libs/pympv/mpv.pyx":312 -+ /* "vidcutter/libs/pympv/mpv.pyx":314 - * del _reply_userdatas[ctxid][event.reply_userdata] - * if userdata is not None: - * userdata = userdata.data # <<<<<<<<<<<<<< - * self.reply_userdata = userdata - * self.error = event.error - */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 312, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdata, __pyx_n_s_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF_SET(__pyx_v_userdata, __pyx_t_5); - __pyx_t_5 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":311 -+ /* "vidcutter/libs/pympv/mpv.pyx":313 - * if not userdata.observed and userdata.counter <= 0: - * del _reply_userdatas[ctxid][event.reply_userdata] - * if userdata is not None: # <<<<<<<<<<<<<< -@@ -6493,7 +6493,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":313 -+ /* "vidcutter/libs/pympv/mpv.pyx":315 - * if userdata is not None: - * userdata = userdata.data - * self.reply_userdata = userdata # <<<<<<<<<<<<<< -@@ -6506,7 +6506,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __Pyx_DECREF(__pyx_v_self->reply_userdata); - __pyx_v_self->reply_userdata = __pyx_v_userdata; - -- /* "vidcutter/libs/pympv/mpv.pyx":314 -+ /* "vidcutter/libs/pympv/mpv.pyx":316 - * userdata = userdata.data - * self.reply_userdata = userdata - * self.error = event.error # <<<<<<<<<<<<<< -@@ -6516,7 +6516,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __pyx_t_7 = __pyx_v_event->error; - __pyx_v_self->error = __pyx_t_7; - -- /* "vidcutter/libs/pympv/mpv.pyx":315 -+ /* "vidcutter/libs/pympv/mpv.pyx":317 - * self.reply_userdata = userdata - * self.error = event.error - * return self # <<<<<<<<<<<<<< -@@ -6528,7 +6528,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":302 -+ /* "vidcutter/libs/pympv/mpv.pyx":304 - * return _strdec(name_c) - * - * cdef _init(self, mpv_event* event, ctx): # <<<<<<<<<<<<<< -@@ -6552,7 +6552,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_5Event__init(struct __pyx_obj_9vi - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":258 -+/* "vidcutter/libs/pympv/mpv.pyx":260 - * cdef class Event(object): - * """Wraps: mpv_event""" - * cdef public mpv_event_id id # <<<<<<<<<<<<<< -@@ -6582,7 +6582,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2id___get__(struct __pyx_ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_event_id(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; -@@ -6620,7 +6620,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(struct __pyx_obj_9 - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__set__", 0); -- __pyx_t_1 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_value)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) -+ __pyx_t_1 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_value)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error) - __pyx_v_self->id = __pyx_t_1; - - /* function exit code */ -@@ -6634,7 +6634,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_2id_2__set__(struct __pyx_obj_9 - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":259 -+/* "vidcutter/libs/pympv/mpv.pyx":261 - * """Wraps: mpv_event""" - * cdef public mpv_event_id id - * cdef public int error # <<<<<<<<<<<<<< -@@ -6664,7 +6664,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_5error___get__(struct __p - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; -@@ -6702,7 +6702,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(struct __pyx_ob - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__set__", 0); -- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 261, __pyx_L1_error) - __pyx_v_self->error = __pyx_t_1; - - /* function exit code */ -@@ -6716,7 +6716,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_5Event_5error_2__set__(struct __pyx_ob - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":260 -+/* "vidcutter/libs/pympv/mpv.pyx":262 - * cdef public mpv_event_id id - * cdef public int error - * cdef public object data, reply_userdata # <<<<<<<<<<<<<< -@@ -7215,7 +7215,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_5Event_2__setstate_cython__(stru - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":318 -+/* "vidcutter/libs/pympv/mpv.pyx":320 - * - * - * def _errors(fn): # <<<<<<<<<<<<<< -@@ -7237,7 +7237,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_5_errors(PyObject *__pyx_self, P - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":319 -+/* "vidcutter/libs/pympv/mpv.pyx":321 - * - * def _errors(fn): - * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -@@ -7285,42 +7285,42 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx - __pyx_outer_scope = (struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *) __Pyx_CyFunction_GetClosure(__pyx_self); - __pyx_cur_scope = __pyx_outer_scope; - -- /* "vidcutter/libs/pympv/mpv.pyx":320 -+ /* "vidcutter/libs/pympv/mpv.pyx":322 - * def _errors(fn): - * def wrapped(*k, **kw): - * v = fn(*k, **kw) # <<<<<<<<<<<<<< - * if v < 0: - * raise MPVError(v) - */ -- if (unlikely(!__pyx_cur_scope->__pyx_v_fn)) { __Pyx_RaiseClosureNameError("fn"); __PYX_ERR(0, 320, __pyx_L1_error) } -- __pyx_t_1 = PyDict_Copy(__pyx_v_kw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) -+ if (unlikely(!__pyx_cur_scope->__pyx_v_fn)) { __Pyx_RaiseClosureNameError("fn"); __PYX_ERR(0, 322, __pyx_L1_error) } -+ __pyx_t_1 = PyDict_Copy(__pyx_v_kw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_fn, __pyx_v_k, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_fn, __pyx_v_k, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_v = __pyx_t_2; - __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":321 -+ /* "vidcutter/libs/pympv/mpv.pyx":323 - * def wrapped(*k, **kw): - * v = fn(*k, **kw) - * if v < 0: # <<<<<<<<<<<<<< - * raise MPVError(v) - * return wrapped - */ -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_v, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error) -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 321, __pyx_L1_error) -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_v, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 323, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":322 -+ /* "vidcutter/libs/pympv/mpv.pyx":324 - * v = fn(*k, **kw) - * if v < 0: - * raise MPVError(v) # <<<<<<<<<<<<<< - * return wrapped - * - */ -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { -@@ -7334,14 +7334,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx - } - __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_v) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_v); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __PYX_ERR(0, 322, __pyx_L1_error) -+ __PYX_ERR(0, 324, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":321 -+ /* "vidcutter/libs/pympv/mpv.pyx":323 - * def wrapped(*k, **kw): - * v = fn(*k, **kw) - * if v < 0: # <<<<<<<<<<<<<< -@@ -7350,7 +7350,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":319 -+ /* "vidcutter/libs/pympv/mpv.pyx":321 - * - * def _errors(fn): - * def wrapped(*k, **kw): # <<<<<<<<<<<<<< -@@ -7374,7 +7374,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7_errors_wrapped(PyObject *__pyx - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":318 -+/* "vidcutter/libs/pympv/mpv.pyx":320 - * - * - * def _errors(fn): # <<<<<<<<<<<<<< -@@ -7396,7 +7396,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject - if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_9vidcutter_4libs_3mpv___pyx_scope_struct___errors *)Py_None); - __Pyx_INCREF(Py_None); -- __PYX_ERR(0, 318, __pyx_L1_error) -+ __PYX_ERR(0, 320, __pyx_L1_error) - } else { - __Pyx_GOTREF(__pyx_cur_scope); - } -@@ -7404,19 +7404,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fn); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fn); - -- /* "vidcutter/libs/pympv/mpv.pyx":319 -+ /* "vidcutter/libs/pympv/mpv.pyx":321 - * - * def _errors(fn): - * def wrapped(*k, **kw): # <<<<<<<<<<<<<< - * v = fn(*k, **kw) - * if v < 0: - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped, 0, __pyx_n_s_errors_locals_wrapped, ((PyObject*)__pyx_cur_scope), __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_7_errors_1wrapped, 0, __pyx_n_s_errors_locals_wrapped, ((PyObject*)__pyx_cur_scope), __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_wrapped = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":323 -+ /* "vidcutter/libs/pympv/mpv.pyx":325 - * if v < 0: - * raise MPVError(v) - * return wrapped # <<<<<<<<<<<<<< -@@ -7428,7 +7428,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject - __pyx_r = __pyx_v_wrapped; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":318 -+ /* "vidcutter/libs/pympv/mpv.pyx":320 - * - * - * def _errors(fn): # <<<<<<<<<<<<<< -@@ -7449,7 +7449,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_4_errors(CYTHON_UNUSED PyObject - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":329 -+/* "vidcutter/libs/pympv/mpv.pyx":331 - * code = None - * - * def __init__(self, e): # <<<<<<<<<<<<<< -@@ -7492,11 +7492,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__ - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_e)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 329, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 331, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 329, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 331, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; -@@ -7509,7 +7509,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_8MPVError_1__init__(PyObject *__ - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 329, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 331, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.MPVError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -7540,16 +7540,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - __Pyx_RefNannySetupContext("__init__", 0); - __Pyx_INCREF(__pyx_v_e); - -- /* "vidcutter/libs/pympv/mpv.pyx":330 -+ /* "vidcutter/libs/pympv/mpv.pyx":332 - * - * def __init__(self, e): - * self.code = e # <<<<<<<<<<<<<< - * cdef const char* err_c - * cdef int e_i - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_e) < 0) __PYX_ERR(0, 330, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_e) < 0) __PYX_ERR(0, 332, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":333 -+ /* "vidcutter/libs/pympv/mpv.pyx":335 - * cdef const char* err_c - * cdef int e_i - * if not isinstance(e, basestring): # <<<<<<<<<<<<<< -@@ -7560,17 +7560,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":334 -+ /* "vidcutter/libs/pympv/mpv.pyx":336 - * cdef int e_i - * if not isinstance(e, basestring): - * e_i = e # <<<<<<<<<<<<<< - * with nogil: - * err_c = mpv_error_string(e_i) - */ -- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_e); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_e); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 336, __pyx_L1_error) - __pyx_v_e_i = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":335 -+ /* "vidcutter/libs/pympv/mpv.pyx":337 - * if not isinstance(e, basestring): - * e_i = e - * with nogil: # <<<<<<<<<<<<<< -@@ -7585,7 +7585,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":336 -+ /* "vidcutter/libs/pympv/mpv.pyx":338 - * e_i = e - * with nogil: - * err_c = mpv_error_string(e_i) # <<<<<<<<<<<<<< -@@ -7595,7 +7595,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - __pyx_v_err_c = mpv_error_string(__pyx_v_e_i); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":335 -+ /* "vidcutter/libs/pympv/mpv.pyx":337 - * if not isinstance(e, basestring): - * e_i = e - * with nogil: # <<<<<<<<<<<<<< -@@ -7614,16 +7614,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":337 -+ /* "vidcutter/libs/pympv/mpv.pyx":339 - * with nogil: - * err_c = mpv_error_string(e_i) - * e = _strdec(err_c) # <<<<<<<<<<<<<< - * Exception.__init__(self, e) - * - */ -- __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_strdec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 337, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_strdec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 339, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_err_c); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 339, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { -@@ -7638,13 +7638,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error) -+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 339, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF_SET(__pyx_v_e, __pyx_t_4); - __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":333 -+ /* "vidcutter/libs/pympv/mpv.pyx":335 - * cdef const char* err_c - * cdef int e_i - * if not isinstance(e, basestring): # <<<<<<<<<<<<<< -@@ -7653,14 +7653,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":338 -+ /* "vidcutter/libs/pympv/mpv.pyx":340 - * err_c = mpv_error_string(e_i) - * e = _strdec(err_c) - * Exception.__init__(self, e) # <<<<<<<<<<<<<< - * - * class PyMPVError(Exception): - */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_n_s_init); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - __pyx_t_3 = 0; -@@ -7677,7 +7677,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; -- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else -@@ -7685,13 +7685,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self, __pyx_v_e}; -- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { -- __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; -@@ -7702,14 +7702,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - __Pyx_INCREF(__pyx_v_e); - __Pyx_GIVEREF(__pyx_v_e); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_v_e); -- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":329 -+ /* "vidcutter/libs/pympv/mpv.pyx":331 - * code = None - * - * def __init__(self, e): # <<<<<<<<<<<<<< -@@ -7734,7 +7734,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_8MPVError___init__(CYTHON_UNUSED - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":347 -+/* "vidcutter/libs/pympv/mpv.pyx":349 - * - * class _ReplyUserData(object): - * def __init__(self, data): # <<<<<<<<<<<<<< -@@ -7777,11 +7777,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObj - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 347, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 349, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 347, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 349, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; -@@ -7794,7 +7794,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__(PyObj - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 347, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 349, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv._ReplyUserData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -7815,34 +7815,34 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__init__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":348 -+ /* "vidcutter/libs/pympv/mpv.pyx":350 - * class _ReplyUserData(object): - * def __init__(self, data): - * self.counter = 0 # <<<<<<<<<<<<<< - * self.data = data - * self.observed = False - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_int_0) < 0) __PYX_ERR(0, 348, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_int_0) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":349 -+ /* "vidcutter/libs/pympv/mpv.pyx":351 - * def __init__(self, data): - * self.counter = 0 - * self.data = data # <<<<<<<<<<<<<< - * self.observed = False - * - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 349, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 351, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":350 -+ /* "vidcutter/libs/pympv/mpv.pyx":352 - * self.counter = 0 - * self.data = data - * self.observed = False # <<<<<<<<<<<<<< - * - * def add(self): - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 350, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 352, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":347 -+ /* "vidcutter/libs/pympv/mpv.pyx":349 - * - * class _ReplyUserData(object): - * def __init__(self, data): # <<<<<<<<<<<<<< -@@ -7862,7 +7862,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData___init__(CYTHON - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":352 -+/* "vidcutter/libs/pympv/mpv.pyx":354 - * self.observed = False - * - * def add(self): # <<<<<<<<<<<<<< -@@ -7894,22 +7894,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(CYTHON_UNU - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("add", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":353 -+ /* "vidcutter/libs/pympv/mpv.pyx":355 - * - * def add(self): - * self.counter += 1 # <<<<<<<<<<<<<< - * - * def remove(self): - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 355, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 353, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 355, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":352 -+ /* "vidcutter/libs/pympv/mpv.pyx":354 - * self.observed = False - * - * def add(self): # <<<<<<<<<<<<<< -@@ -7931,7 +7931,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_2add(CYTHON_UNU - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":355 -+/* "vidcutter/libs/pympv/mpv.pyx":357 - * self.counter += 1 - * - * def remove(self): # <<<<<<<<<<<<<< -@@ -7963,22 +7963,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("remove", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":356 -+ /* "vidcutter/libs/pympv/mpv.pyx":358 - * - * def remove(self): - * self.counter -= 1 # <<<<<<<<<<<<<< - * - * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 356, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_counter, __pyx_t_2) < 0) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":355 -+ /* "vidcutter/libs/pympv/mpv.pyx":357 - * self.counter += 1 - * - * def remove(self): # <<<<<<<<<<<<<< -@@ -8000,7 +8000,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14_ReplyUserData_4remove(CYTHON_ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":370 -+/* "vidcutter/libs/pympv/mpv.pyx":372 - * - * @property - * def api_version(self): # <<<<<<<<<<<<<< -@@ -8033,7 +8033,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(C - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":371 -+ /* "vidcutter/libs/pympv/mpv.pyx":373 - * @property - * def api_version(self): - * return _CAPI_MINOR, _CAPI_MAJOR, _CAPI_VERSION # <<<<<<<<<<<<<< -@@ -8041,13 +8041,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(C - * @property - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 373, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) -+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 373, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); -@@ -8062,7 +8062,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(C - __pyx_t_4 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":370 -+ /* "vidcutter/libs/pympv/mpv.pyx":372 - * - * @property - * def api_version(self): # <<<<<<<<<<<<<< -@@ -8084,7 +8084,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_11api_version___get__(C - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":374 -+/* "vidcutter/libs/pympv/mpv.pyx":376 - * - * @property - * def name(self): # <<<<<<<<<<<<<< -@@ -8118,7 +8118,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":380 -+ /* "vidcutter/libs/pympv/mpv.pyx":382 - * """ - * cdef const char* name - * assert self._ctx # <<<<<<<<<<<<<< -@@ -8129,12 +8129,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 380, __pyx_L1_error) -+ __PYX_ERR(0, 382, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":381 -+ /* "vidcutter/libs/pympv/mpv.pyx":383 - * cdef const char* name - * assert self._ctx - * with nogil: # <<<<<<<<<<<<<< -@@ -8149,7 +8149,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":382 -+ /* "vidcutter/libs/pympv/mpv.pyx":384 - * assert self._ctx - * with nogil: - * name = mpv_client_name(self._ctx) # <<<<<<<<<<<<<< -@@ -8159,7 +8159,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ - __pyx_v_name = mpv_client_name(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":381 -+ /* "vidcutter/libs/pympv/mpv.pyx":383 - * cdef const char* name - * assert self._ctx - * with nogil: # <<<<<<<<<<<<<< -@@ -8178,7 +8178,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":383 -+ /* "vidcutter/libs/pympv/mpv.pyx":385 - * with nogil: - * name = mpv_client_name(self._ctx) - * return _strdec(name) # <<<<<<<<<<<<<< -@@ -8186,9 +8186,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ - * @property - */ - __Pyx_XDECREF(__pyx_r); -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 383, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strdec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 385, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 383, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 385, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -8203,14 +8203,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 383, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":374 -+ /* "vidcutter/libs/pympv/mpv.pyx":376 - * - * @property - * def name(self): # <<<<<<<<<<<<<< -@@ -8232,7 +8232,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4name___get__(struct __ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":386 -+/* "vidcutter/libs/pympv/mpv.pyx":388 - * - * @property - * def time(self): # <<<<<<<<<<<<<< -@@ -8263,7 +8263,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":394 -+ /* "vidcutter/libs/pympv/mpv.pyx":396 - * """ - * cdef int64_t time - * assert self._ctx # <<<<<<<<<<<<<< -@@ -8274,12 +8274,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 394, __pyx_L1_error) -+ __PYX_ERR(0, 396, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":395 -+ /* "vidcutter/libs/pympv/mpv.pyx":397 - * cdef int64_t time - * assert self._ctx - * with nogil: # <<<<<<<<<<<<<< -@@ -8294,7 +8294,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":396 -+ /* "vidcutter/libs/pympv/mpv.pyx":398 - * assert self._ctx - * with nogil: - * time = mpv_get_time_us(self._ctx) # <<<<<<<<<<<<<< -@@ -8304,7 +8304,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ - __pyx_v_time = mpv_get_time_us(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":395 -+ /* "vidcutter/libs/pympv/mpv.pyx":397 - * cdef int64_t time - * assert self._ctx - * with nogil: # <<<<<<<<<<<<<< -@@ -8323,7 +8323,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":397 -+ /* "vidcutter/libs/pympv/mpv.pyx":399 - * with nogil: - * time = mpv_get_time_us(self._ctx) - * return time # <<<<<<<<<<<<<< -@@ -8331,13 +8331,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ - * # def suspend(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_v_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_v_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":386 -+ /* "vidcutter/libs/pympv/mpv.pyx":388 - * - * @property - * def time(self): # <<<<<<<<<<<<<< -@@ -8356,7 +8356,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4time___get__(struct __ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":412 -+/* "vidcutter/libs/pympv/mpv.pyx":414 - * - * @_errors - * def request_event(self, event, enable): # <<<<<<<<<<<<<< -@@ -8399,11 +8399,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event(PyObject - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, 1); __PYX_ERR(0, 412, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, 1); __PYX_ERR(0, 414, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "request_event") < 0)) __PYX_ERR(0, 412, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "request_event") < 0)) __PYX_ERR(0, 414, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; -@@ -8416,7 +8416,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_1request_event(PyObject - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 412, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("request_event", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 414, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.request_event", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -8444,7 +8444,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("request_event", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":421 -+ /* "vidcutter/libs/pympv/mpv.pyx":423 - * Wraps: mpv_request_event - * """ - * assert self._ctx # <<<<<<<<<<<<<< -@@ -8455,19 +8455,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 421, __pyx_L1_error) -+ __PYX_ERR(0, 423, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":422 -+ /* "vidcutter/libs/pympv/mpv.pyx":424 - * """ - * assert self._ctx - * cdef int enable_i = 1 if enable else 0 # <<<<<<<<<<<<<< - * cdef int err - * cdef mpv_event_id event_id = event - */ -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_enable); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 422, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_enable); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 424, __pyx_L1_error) - if (__pyx_t_2) { - __pyx_t_1 = 1; - } else { -@@ -8475,17 +8475,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ - } - __pyx_v_enable_i = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":424 -+ /* "vidcutter/libs/pympv/mpv.pyx":426 - * cdef int enable_i = 1 if enable else 0 - * cdef int err - * cdef mpv_event_id event_id = event # <<<<<<<<<<<<<< - * with nogil: - * err = mpv_request_event(self._ctx, event_id, enable_i) - */ -- __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_event)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 424, __pyx_L1_error) -+ __pyx_t_3 = ((enum mpv_event_id)__Pyx_PyInt_As_enum__mpv_event_id(__pyx_v_event)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 426, __pyx_L1_error) - __pyx_v_event_id = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":425 -+ /* "vidcutter/libs/pympv/mpv.pyx":427 - * cdef int err - * cdef mpv_event_id event_id = event - * with nogil: # <<<<<<<<<<<<<< -@@ -8500,7 +8500,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":426 -+ /* "vidcutter/libs/pympv/mpv.pyx":428 - * cdef mpv_event_id event_id = event - * with nogil: - * err = mpv_request_event(self._ctx, event_id, enable_i) # <<<<<<<<<<<<<< -@@ -8510,7 +8510,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ - __pyx_v_err = mpv_request_event(__pyx_v_self->_ctx, __pyx_v_event_id, __pyx_v_enable_i); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":425 -+ /* "vidcutter/libs/pympv/mpv.pyx":427 - * cdef int err - * cdef mpv_event_id event_id = event - * with nogil: # <<<<<<<<<<<<<< -@@ -8529,7 +8529,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":427 -+ /* "vidcutter/libs/pympv/mpv.pyx":429 - * with nogil: - * err = mpv_request_event(self._ctx, event_id, enable_i) - * return err # <<<<<<<<<<<<<< -@@ -8537,13 +8537,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ - * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":412 -+ /* "vidcutter/libs/pympv/mpv.pyx":414 - * - * @_errors - * def request_event(self, event, enable): # <<<<<<<<<<<<<< -@@ -8562,7 +8562,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_request_event(struct __ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":430 -+/* "vidcutter/libs/pympv/mpv.pyx":432 - * - * @_errors - * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< -@@ -8599,7 +8599,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ - __Pyx_RefNannySetupContext("set_log_level", 0); - __Pyx_INCREF(__pyx_v_loglevel); - -- /* "vidcutter/libs/pympv/mpv.pyx":432 -+ /* "vidcutter/libs/pympv/mpv.pyx":434 - * def set_log_level(self, loglevel): - * """Wraps: mpv_request_log_messages""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -8610,19 +8610,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 432, __pyx_L1_error) -+ __PYX_ERR(0, 434, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":433 -+ /* "vidcutter/libs/pympv/mpv.pyx":435 - * """Wraps: mpv_request_log_messages""" - * assert self._ctx - * loglevel = _strenc(loglevel) # <<<<<<<<<<<<<< - * cdef const char* loglevel_c = loglevel - * cdef int err - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 433, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -8636,23 +8636,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_loglevel) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_loglevel); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_loglevel, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":434 -+ /* "vidcutter/libs/pympv/mpv.pyx":436 - * assert self._ctx - * loglevel = _strenc(loglevel) - * cdef const char* loglevel_c = loglevel # <<<<<<<<<<<<<< - * cdef int err - * with nogil: - */ -- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_loglevel); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 434, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_loglevel); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L1_error) - __pyx_v_loglevel_c = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":436 -+ /* "vidcutter/libs/pympv/mpv.pyx":438 - * cdef const char* loglevel_c = loglevel - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -8667,7 +8667,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":437 -+ /* "vidcutter/libs/pympv/mpv.pyx":439 - * cdef int err - * with nogil: - * err = mpv_request_log_messages(self._ctx, loglevel_c) # <<<<<<<<<<<<<< -@@ -8677,7 +8677,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ - __pyx_v_err = mpv_request_log_messages(__pyx_v_self->_ctx, __pyx_v_loglevel_c); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":436 -+ /* "vidcutter/libs/pympv/mpv.pyx":438 - * cdef const char* loglevel_c = loglevel - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -8696,7 +8696,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":438 -+ /* "vidcutter/libs/pympv/mpv.pyx":440 - * with nogil: - * err = mpv_request_log_messages(self._ctx, loglevel_c) - * return err # <<<<<<<<<<<<<< -@@ -8704,13 +8704,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ - * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":430 -+ /* "vidcutter/libs/pympv/mpv.pyx":432 - * - * @_errors - * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< -@@ -8732,7 +8732,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_2set_log_level(struct _ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":441 -+/* "vidcutter/libs/pympv/mpv.pyx":443 - * - * @_errors - * def load_config(self, filename): # <<<<<<<<<<<<<< -@@ -8769,7 +8769,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p - __Pyx_RefNannySetupContext("load_config", 0); - __Pyx_INCREF(__pyx_v_filename); - -- /* "vidcutter/libs/pympv/mpv.pyx":443 -+ /* "vidcutter/libs/pympv/mpv.pyx":445 - * def load_config(self, filename): - * """Wraps: mpv_load_config_file""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -8780,19 +8780,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 443, __pyx_L1_error) -+ __PYX_ERR(0, 445, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":444 -+ /* "vidcutter/libs/pympv/mpv.pyx":446 - * """Wraps: mpv_load_config_file""" - * assert self._ctx - * filename = _strenc(filename) # <<<<<<<<<<<<<< - * cdef const char* _filename = filename - * cdef int err - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 444, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -8806,23 +8806,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":445 -+ /* "vidcutter/libs/pympv/mpv.pyx":447 - * assert self._ctx - * filename = _strenc(filename) - * cdef const char* _filename = filename # <<<<<<<<<<<<<< - * cdef int err - * with nogil: - */ -- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 445, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_filename); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 447, __pyx_L1_error) - __pyx_v__filename = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":447 -+ /* "vidcutter/libs/pympv/mpv.pyx":449 - * cdef const char* _filename = filename - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -8837,7 +8837,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":448 -+ /* "vidcutter/libs/pympv/mpv.pyx":450 - * cdef int err - * with nogil: - * err = mpv_load_config_file(self._ctx, _filename) # <<<<<<<<<<<<<< -@@ -8847,7 +8847,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p - __pyx_v_err = mpv_load_config_file(__pyx_v_self->_ctx, __pyx_v__filename); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":447 -+ /* "vidcutter/libs/pympv/mpv.pyx":449 - * cdef const char* _filename = filename - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -8866,7 +8866,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":449 -+ /* "vidcutter/libs/pympv/mpv.pyx":451 - * with nogil: - * err = mpv_load_config_file(self._ctx, _filename) - * return err # <<<<<<<<<<<<<< -@@ -8874,13 +8874,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p - * def _format_for(self, value): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 451, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":441 -+ /* "vidcutter/libs/pympv/mpv.pyx":443 - * - * @_errors - * def load_config(self, filename): # <<<<<<<<<<<<<< -@@ -8902,7 +8902,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_4load_config(struct __p - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":451 -+/* "vidcutter/libs/pympv/mpv.pyx":453 - * return err - * - * def _format_for(self, value): # <<<<<<<<<<<<<< -@@ -8935,7 +8935,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_format_for", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":452 -+ /* "vidcutter/libs/pympv/mpv.pyx":454 - * - * def _format_for(self, value): - * if isinstance(value, basestring): # <<<<<<<<<<<<<< -@@ -8946,7 +8946,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":453 -+ /* "vidcutter/libs/pympv/mpv.pyx":455 - * def _format_for(self, value): - * if isinstance(value, basestring): - * return MPV_FORMAT_STRING # <<<<<<<<<<<<<< -@@ -8954,13 +8954,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - * return MPV_FORMAT_FLAG - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":452 -+ /* "vidcutter/libs/pympv/mpv.pyx":454 - * - * def _format_for(self, value): - * if isinstance(value, basestring): # <<<<<<<<<<<<<< -@@ -8969,7 +8969,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":454 -+ /* "vidcutter/libs/pympv/mpv.pyx":456 - * if isinstance(value, basestring): - * return MPV_FORMAT_STRING - * elif isinstance(value, bool): # <<<<<<<<<<<<<< -@@ -8978,12 +8978,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - */ - __pyx_t_3 = ((PyObject*)&PyBool_Type); - __Pyx_INCREF(__pyx_t_3); -- __pyx_t_2 = PyObject_IsInstance(__pyx_v_value, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 454, __pyx_L1_error) -+ __pyx_t_2 = PyObject_IsInstance(__pyx_v_value, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":455 -+ /* "vidcutter/libs/pympv/mpv.pyx":457 - * return MPV_FORMAT_STRING - * elif isinstance(value, bool): - * return MPV_FORMAT_FLAG # <<<<<<<<<<<<<< -@@ -8991,13 +8991,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - * return MPV_FORMAT_INT64 - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":454 -+ /* "vidcutter/libs/pympv/mpv.pyx":456 - * if isinstance(value, basestring): - * return MPV_FORMAT_STRING - * elif isinstance(value, bool): # <<<<<<<<<<<<<< -@@ -9006,7 +9006,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":456 -+ /* "vidcutter/libs/pympv/mpv.pyx":458 - * elif isinstance(value, bool): - * return MPV_FORMAT_FLAG - * elif isinstance(value, int): # <<<<<<<<<<<<<< -@@ -9017,7 +9017,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":457 -+ /* "vidcutter/libs/pympv/mpv.pyx":459 - * return MPV_FORMAT_FLAG - * elif isinstance(value, int): - * return MPV_FORMAT_INT64 # <<<<<<<<<<<<<< -@@ -9025,13 +9025,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - * return MPV_FORMAT_DOUBLE - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":456 -+ /* "vidcutter/libs/pympv/mpv.pyx":458 - * elif isinstance(value, bool): - * return MPV_FORMAT_FLAG - * elif isinstance(value, int): # <<<<<<<<<<<<<< -@@ -9040,7 +9040,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":458 -+ /* "vidcutter/libs/pympv/mpv.pyx":460 - * elif isinstance(value, int): - * return MPV_FORMAT_INT64 - * elif isinstance(value, float): # <<<<<<<<<<<<<< -@@ -9051,7 +9051,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":459 -+ /* "vidcutter/libs/pympv/mpv.pyx":461 - * return MPV_FORMAT_INT64 - * elif isinstance(value, float): - * return MPV_FORMAT_DOUBLE # <<<<<<<<<<<<<< -@@ -9059,13 +9059,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - * return MPV_FORMAT_NODE_ARRAY - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":458 -+ /* "vidcutter/libs/pympv/mpv.pyx":460 - * elif isinstance(value, int): - * return MPV_FORMAT_INT64 - * elif isinstance(value, float): # <<<<<<<<<<<<<< -@@ -9074,7 +9074,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":460 -+ /* "vidcutter/libs/pympv/mpv.pyx":462 - * elif isinstance(value, float): - * return MPV_FORMAT_DOUBLE - * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< -@@ -9095,7 +9095,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":461 -+ /* "vidcutter/libs/pympv/mpv.pyx":463 - * return MPV_FORMAT_DOUBLE - * elif isinstance(value, (tuple, list)): - * return MPV_FORMAT_NODE_ARRAY # <<<<<<<<<<<<<< -@@ -9103,13 +9103,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - * return MPV_FORMAT_NODE_MAP - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":460 -+ /* "vidcutter/libs/pympv/mpv.pyx":462 - * elif isinstance(value, float): - * return MPV_FORMAT_DOUBLE - * elif isinstance(value, (tuple, list)): # <<<<<<<<<<<<<< -@@ -9118,7 +9118,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":462 -+ /* "vidcutter/libs/pympv/mpv.pyx":464 - * elif isinstance(value, (tuple, list)): - * return MPV_FORMAT_NODE_ARRAY - * elif isinstance(value, dict): # <<<<<<<<<<<<<< -@@ -9129,7 +9129,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":463 -+ /* "vidcutter/libs/pympv/mpv.pyx":465 - * return MPV_FORMAT_NODE_ARRAY - * elif isinstance(value, dict): - * return MPV_FORMAT_NODE_MAP # <<<<<<<<<<<<<< -@@ -9137,13 +9137,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - * - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 465, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":462 -+ /* "vidcutter/libs/pympv/mpv.pyx":464 - * elif isinstance(value, (tuple, list)): - * return MPV_FORMAT_NODE_ARRAY - * elif isinstance(value, dict): # <<<<<<<<<<<<<< -@@ -9152,7 +9152,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":464 -+ /* "vidcutter/libs/pympv/mpv.pyx":466 - * elif isinstance(value, dict): - * return MPV_FORMAT_NODE_MAP - * return MPV_FORMAT_NONE # <<<<<<<<<<<<<< -@@ -9160,13 +9160,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - * cdef mpv_node_list* _prep_node_list(self, values): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 464, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":451 -+ /* "vidcutter/libs/pympv/mpv.pyx":453 - * return err - * - * def _format_for(self, value): # <<<<<<<<<<<<<< -@@ -9185,7 +9185,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_6_format_for(CYTHON_UNU - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":466 -+/* "vidcutter/libs/pympv/mpv.pyx":468 - * return MPV_FORMAT_NONE - * - * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< -@@ -9216,7 +9216,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_prep_node_list", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":469 -+ /* "vidcutter/libs/pympv/mpv.pyx":471 - * cdef mpv_node node - * cdef mpv_format format - * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) # <<<<<<<<<<<<<< -@@ -9225,17 +9225,17 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - */ - __pyx_v_node_list = ((struct mpv_node_list *)malloc((sizeof(struct mpv_node_list)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":470 -+ /* "vidcutter/libs/pympv/mpv.pyx":472 - * cdef mpv_format format - * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) - * node_list.num = len(values) # <<<<<<<<<<<<<< - * node_list.values = NULL - * node_list.keys = NULL - */ -- __pyx_t_1 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 470, __pyx_L1_error) -+ __pyx_t_1 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 472, __pyx_L1_error) - __pyx_v_node_list->num = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":471 -+ /* "vidcutter/libs/pympv/mpv.pyx":473 - * cdef mpv_node_list* node_list = malloc(sizeof(mpv_node_list)) - * node_list.num = len(values) - * node_list.values = NULL # <<<<<<<<<<<<<< -@@ -9244,7 +9244,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - */ - __pyx_v_node_list->values = NULL; - -- /* "vidcutter/libs/pympv/mpv.pyx":472 -+ /* "vidcutter/libs/pympv/mpv.pyx":474 - * node_list.num = len(values) - * node_list.values = NULL - * node_list.keys = NULL # <<<<<<<<<<<<<< -@@ -9253,7 +9253,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - */ - __pyx_v_node_list->keys = NULL; - -- /* "vidcutter/libs/pympv/mpv.pyx":473 -+ /* "vidcutter/libs/pympv/mpv.pyx":475 - * node_list.values = NULL - * node_list.keys = NULL - * if node_list.num: # <<<<<<<<<<<<<< -@@ -9263,7 +9263,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - __pyx_t_2 = (__pyx_v_node_list->num != 0); - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":474 -+ /* "vidcutter/libs/pympv/mpv.pyx":476 - * node_list.keys = NULL - * if node_list.num: - * node_list.values = malloc(node_list.num * sizeof(mpv_node)) # <<<<<<<<<<<<<< -@@ -9272,7 +9272,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - */ - __pyx_v_node_list->values = ((struct mpv_node *)malloc((__pyx_v_node_list->num * (sizeof(struct mpv_node))))); - -- /* "vidcutter/libs/pympv/mpv.pyx":473 -+ /* "vidcutter/libs/pympv/mpv.pyx":475 - * node_list.values = NULL - * node_list.keys = NULL - * if node_list.num: # <<<<<<<<<<<<<< -@@ -9281,7 +9281,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":475 -+ /* "vidcutter/libs/pympv/mpv.pyx":477 - * if node_list.num: - * node_list.values = malloc(node_list.num * sizeof(mpv_node)) - * for i, value in enumerate(values): # <<<<<<<<<<<<<< -@@ -9294,26 +9294,26 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - __pyx_t_4 = __pyx_v_values; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0; - __pyx_t_5 = NULL; - } else { -- __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 477, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 477, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_5)) { - if (likely(PyList_CheckExact(__pyx_t_4))) { - if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 477, __pyx_L1_error) - #else -- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - } else { - if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 477, __pyx_L1_error) - #else -- __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - } -@@ -9323,7 +9323,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -- else __PYX_ERR(0, 475, __pyx_L1_error) -+ else __PYX_ERR(0, 477, __pyx_L1_error) - } - break; - } -@@ -9333,20 +9333,20 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - __pyx_t_6 = 0; - __Pyx_INCREF(__pyx_t_3); - __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); -- __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 475, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); - __pyx_t_3 = __pyx_t_6; - __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":476 -+ /* "vidcutter/libs/pympv/mpv.pyx":478 - * node_list.values = malloc(node_list.num * sizeof(mpv_node)) - * for i, value in enumerate(values): - * format = self._format_for(value) # <<<<<<<<<<<<<< - * node = self._prep_native_value(value, format) - * node_list.values[i] = node - */ -- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 476, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 478, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { -@@ -9360,36 +9360,36 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - } - __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error) -+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 478, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __pyx_t_9 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) -+ __pyx_t_9 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_format = __pyx_t_9; - -- /* "vidcutter/libs/pympv/mpv.pyx":477 -+ /* "vidcutter/libs/pympv/mpv.pyx":479 - * for i, value in enumerate(values): - * format = self._format_for(value) - * node = self._prep_native_value(value, format) # <<<<<<<<<<<<<< - * node_list.values[i] = node - * return node_list - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 479, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_6); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":478 -+ /* "vidcutter/libs/pympv/mpv.pyx":480 - * format = self._format_for(value) - * node = self._prep_native_value(value, format) - * node_list.values[i] = node # <<<<<<<<<<<<<< - * return node_list - * - */ -- __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) -+ __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error) - (__pyx_v_node_list->values[__pyx_t_10]) = __pyx_v_node; - -- /* "vidcutter/libs/pympv/mpv.pyx":475 -+ /* "vidcutter/libs/pympv/mpv.pyx":477 - * if node_list.num: - * node_list.values = malloc(node_list.num * sizeof(mpv_node)) - * for i, value in enumerate(values): # <<<<<<<<<<<<<< -@@ -9400,7 +9400,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":479 -+ /* "vidcutter/libs/pympv/mpv.pyx":481 - * node = self._prep_native_value(value, format) - * node_list.values[i] = node - * return node_list # <<<<<<<<<<<<<< -@@ -9410,7 +9410,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - __pyx_r = __pyx_v_node_list; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":466 -+ /* "vidcutter/libs/pympv/mpv.pyx":468 - * return MPV_FORMAT_NONE - * - * cdef mpv_node_list* _prep_node_list(self, values): # <<<<<<<<<<<<<< -@@ -9434,7 +9434,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_l - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":481 -+/* "vidcutter/libs/pympv/mpv.pyx":483 - * return node_list - * - * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< -@@ -9466,14 +9466,14 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_prep_node_map", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":484 -+ /* "vidcutter/libs/pympv/mpv.pyx":486 - * cdef char* ckey - * cdef mpv_node_list* list - * list = self._prep_node_list(map.values()) # <<<<<<<<<<<<<< - * keys = map.keys() - * if not len(keys): - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 484, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 486, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -9487,20 +9487,20 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 486, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":485 -+ /* "vidcutter/libs/pympv/mpv.pyx":487 - * cdef mpv_node_list* list - * list = self._prep_node_list(map.values()) - * keys = map.keys() # <<<<<<<<<<<<<< - * if not len(keys): - * return list - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_map, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 487, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -9514,24 +9514,24 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 487, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_keys = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":486 -+ /* "vidcutter/libs/pympv/mpv.pyx":488 - * list = self._prep_node_list(map.values()) - * keys = map.keys() - * if not len(keys): # <<<<<<<<<<<<<< - * return list - * list.keys = malloc(list.num) - */ -- __pyx_t_4 = PyObject_Length(__pyx_v_keys); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 486, __pyx_L1_error) -+ __pyx_t_4 = PyObject_Length(__pyx_v_keys); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 488, __pyx_L1_error) - __pyx_t_5 = ((!(__pyx_t_4 != 0)) != 0); - if (__pyx_t_5) { - -- /* "vidcutter/libs/pympv/mpv.pyx":487 -+ /* "vidcutter/libs/pympv/mpv.pyx":489 - * keys = map.keys() - * if not len(keys): - * return list # <<<<<<<<<<<<<< -@@ -9541,7 +9541,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - __pyx_r = __pyx_v_list; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":486 -+ /* "vidcutter/libs/pympv/mpv.pyx":488 - * list = self._prep_node_list(map.values()) - * keys = map.keys() - * if not len(keys): # <<<<<<<<<<<<<< -@@ -9550,7 +9550,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":488 -+ /* "vidcutter/libs/pympv/mpv.pyx":490 - * if not len(keys): - * return list - * list.keys = malloc(list.num) # <<<<<<<<<<<<<< -@@ -9559,7 +9559,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - */ - __pyx_v_list->keys = ((char **)malloc(__pyx_v_list->num)); - -- /* "vidcutter/libs/pympv/mpv.pyx":489 -+ /* "vidcutter/libs/pympv/mpv.pyx":491 - * return list - * list.keys = malloc(list.num) - * for i, key in enumerate(keys): # <<<<<<<<<<<<<< -@@ -9572,26 +9572,26 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - __pyx_t_2 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; - __pyx_t_6 = NULL; - } else { -- __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 491, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 491, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_6)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 491, __pyx_L1_error) - #else -- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 491, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } else { - if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 491, __pyx_L1_error) - #else -- __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 491, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } -@@ -9601,7 +9601,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -- else __PYX_ERR(0, 489, __pyx_L1_error) -+ else __PYX_ERR(0, 491, __pyx_L1_error) - } - break; - } -@@ -9611,20 +9611,20 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - __pyx_t_3 = 0; - __Pyx_INCREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); -- __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 491, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); - __pyx_t_1 = __pyx_t_3; - __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":490 -+ /* "vidcutter/libs/pympv/mpv.pyx":492 - * list.keys = malloc(list.num) - * for i, key in enumerate(keys): - * key = _strenc(key) # <<<<<<<<<<<<<< - * ckey = key - * list.keys[i] = malloc(len(key) + 1) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_strenc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_strenc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 492, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { -@@ -9638,44 +9638,44 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - } - __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_key) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error) -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 492, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_3); - __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":491 -+ /* "vidcutter/libs/pympv/mpv.pyx":493 - * for i, key in enumerate(keys): - * key = _strenc(key) - * ckey = key # <<<<<<<<<<<<<< - * list.keys[i] = malloc(len(key) + 1) - * strcpy(list.keys[i], ckey) - */ -- __pyx_t_9 = __Pyx_PyObject_AsWritableString(__pyx_v_key); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 491, __pyx_L1_error) -+ __pyx_t_9 = __Pyx_PyObject_AsWritableString(__pyx_v_key); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error) - __pyx_v_ckey = __pyx_t_9; - -- /* "vidcutter/libs/pympv/mpv.pyx":492 -+ /* "vidcutter/libs/pympv/mpv.pyx":494 - * key = _strenc(key) - * ckey = key - * list.keys[i] = malloc(len(key) + 1) # <<<<<<<<<<<<<< - * strcpy(list.keys[i], ckey) - * return list - */ -- __pyx_t_10 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 492, __pyx_L1_error) -- __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L1_error) -+ __pyx_t_10 = PyObject_Length(__pyx_v_key); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 494, __pyx_L1_error) -+ __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 494, __pyx_L1_error) - (__pyx_v_list->keys[__pyx_t_11]) = ((char *)malloc((__pyx_t_10 + 1))); - -- /* "vidcutter/libs/pympv/mpv.pyx":493 -+ /* "vidcutter/libs/pympv/mpv.pyx":495 - * ckey = key - * list.keys[i] = malloc(len(key) + 1) - * strcpy(list.keys[i], ckey) # <<<<<<<<<<<<<< - * return list - * - */ -- __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error) -+ __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 495, __pyx_L1_error) - (void)(strcpy((__pyx_v_list->keys[__pyx_t_10]), __pyx_v_ckey)); - -- /* "vidcutter/libs/pympv/mpv.pyx":489 -+ /* "vidcutter/libs/pympv/mpv.pyx":491 - * return list - * list.keys = malloc(list.num) - * for i, key in enumerate(keys): # <<<<<<<<<<<<<< -@@ -9686,7 +9686,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":494 -+ /* "vidcutter/libs/pympv/mpv.pyx":496 - * list.keys[i] = malloc(len(key) + 1) - * strcpy(list.keys[i], ckey) - * return list # <<<<<<<<<<<<<< -@@ -9696,7 +9696,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - __pyx_r = __pyx_v_list; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":481 -+ /* "vidcutter/libs/pympv/mpv.pyx":483 - * return node_list - * - * cdef mpv_node_list* _prep_node_map(self, map): # <<<<<<<<<<<<<< -@@ -9721,7 +9721,7 @@ static struct mpv_node_list *__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_m - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":496 -+/* "vidcutter/libs/pympv/mpv.pyx":498 - * return list - * - * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< -@@ -9749,39 +9749,39 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - __Pyx_RefNannySetupContext("_prep_native_value", 0); - __Pyx_INCREF(__pyx_v_value); - -- /* "vidcutter/libs/pympv/mpv.pyx":498 -+ /* "vidcutter/libs/pympv/mpv.pyx":500 - * cdef mpv_node _prep_native_value(self, value, format): - * cdef mpv_node node - * node.format = format # <<<<<<<<<<<<<< - * if format == MPV_FORMAT_STRING: - * value = _strenc(value) - */ -- __pyx_t_1 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L1_error) -+ __pyx_t_1 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 500, __pyx_L1_error) - __pyx_v_node.format = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":499 -+ /* "vidcutter/libs/pympv/mpv.pyx":501 - * cdef mpv_node node - * node.format = format - * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< - * value = _strenc(value) - * node.u.string = malloc(len(value) + 1) - */ -- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_STRING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) -+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 499, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":500 -+ /* "vidcutter/libs/pympv/mpv.pyx":502 - * node.format = format - * if format == MPV_FORMAT_STRING: - * value = _strenc(value) # <<<<<<<<<<<<<< - * node.u.string = malloc(len(value) + 1) - * strcpy(node.u.string, value) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -9795,33 +9795,33 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - } - __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error) -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 502, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3); - __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":501 -+ /* "vidcutter/libs/pympv/mpv.pyx":503 - * if format == MPV_FORMAT_STRING: - * value = _strenc(value) - * node.u.string = malloc(len(value) + 1) # <<<<<<<<<<<<<< - * strcpy(node.u.string, value) - * elif format == MPV_FORMAT_FLAG: - */ -- __pyx_t_6 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 501, __pyx_L1_error) -+ __pyx_t_6 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 503, __pyx_L1_error) - __pyx_v_node.u.string = ((char *)malloc((__pyx_t_6 + 1))); - -- /* "vidcutter/libs/pympv/mpv.pyx":502 -+ /* "vidcutter/libs/pympv/mpv.pyx":504 - * value = _strenc(value) - * node.u.string = malloc(len(value) + 1) - * strcpy(node.u.string, value) # <<<<<<<<<<<<<< - * elif format == MPV_FORMAT_FLAG: - * node.u.flag = 1 if value else 0 - */ -- __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 504, __pyx_L1_error) - (void)(strcpy(__pyx_v_node.u.string, __pyx_t_7)); - -- /* "vidcutter/libs/pympv/mpv.pyx":499 -+ /* "vidcutter/libs/pympv/mpv.pyx":501 - * cdef mpv_node node - * node.format = format - * if format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -@@ -9831,29 +9831,29 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":503 -+ /* "vidcutter/libs/pympv/mpv.pyx":505 - * node.u.string = malloc(len(value) + 1) - * strcpy(node.u.string, value) - * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< - * node.u.flag = 1 if value else 0 - * elif format == MPV_FORMAT_INT64: - */ -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error) -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 503, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 505, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":504 -+ /* "vidcutter/libs/pympv/mpv.pyx":506 - * strcpy(node.u.string, value) - * elif format == MPV_FORMAT_FLAG: - * node.u.flag = 1 if value else 0 # <<<<<<<<<<<<<< - * elif format == MPV_FORMAT_INT64: - * node.u.int64 = value - */ -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 504, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 506, __pyx_L1_error) - if (__pyx_t_4) { - __pyx_t_8 = 1; - } else { -@@ -9861,7 +9861,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - } - __pyx_v_node.u.flag = __pyx_t_8; - -- /* "vidcutter/libs/pympv/mpv.pyx":503 -+ /* "vidcutter/libs/pympv/mpv.pyx":505 - * node.u.string = malloc(len(value) + 1) - * strcpy(node.u.string, value) - * elif format == MPV_FORMAT_FLAG: # <<<<<<<<<<<<<< -@@ -9871,32 +9871,32 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":505 -+ /* "vidcutter/libs/pympv/mpv.pyx":507 - * elif format == MPV_FORMAT_FLAG: - * node.u.flag = 1 if value else 0 - * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< - * node.u.int64 = value - * elif format == MPV_FORMAT_DOUBLE: - */ -- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_INT64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 507, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error) -+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 505, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 507, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":506 -+ /* "vidcutter/libs/pympv/mpv.pyx":508 - * node.u.flag = 1 if value else 0 - * elif format == MPV_FORMAT_INT64: - * node.u.int64 = value # <<<<<<<<<<<<<< - * elif format == MPV_FORMAT_DOUBLE: - * node.u.double_ = value - */ -- __pyx_t_9 = __Pyx_PyInt_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_9 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) -+ __pyx_t_9 = __Pyx_PyInt_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_9 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 508, __pyx_L1_error) - __pyx_v_node.u.int64 = __pyx_t_9; - -- /* "vidcutter/libs/pympv/mpv.pyx":505 -+ /* "vidcutter/libs/pympv/mpv.pyx":507 - * elif format == MPV_FORMAT_FLAG: - * node.u.flag = 1 if value else 0 - * elif format == MPV_FORMAT_INT64: # <<<<<<<<<<<<<< -@@ -9906,32 +9906,32 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":507 -+ /* "vidcutter/libs/pympv/mpv.pyx":509 - * elif format == MPV_FORMAT_INT64: - * node.u.int64 = value - * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< - * node.u.double_ = value - * elif format == MPV_FORMAT_NODE_ARRAY: - */ -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 507, __pyx_L1_error) -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 509, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 507, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 509, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":508 -+ /* "vidcutter/libs/pympv/mpv.pyx":510 - * node.u.int64 = value - * elif format == MPV_FORMAT_DOUBLE: - * node.u.double_ = value # <<<<<<<<<<<<<< - * elif format == MPV_FORMAT_NODE_ARRAY: - * node.u.list = self._prep_node_list(value) - */ -- __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 508, __pyx_L1_error) -+ __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 510, __pyx_L1_error) - __pyx_v_node.u.double_ = __pyx_t_10; - -- /* "vidcutter/libs/pympv/mpv.pyx":507 -+ /* "vidcutter/libs/pympv/mpv.pyx":509 - * elif format == MPV_FORMAT_INT64: - * node.u.int64 = value - * elif format == MPV_FORMAT_DOUBLE: # <<<<<<<<<<<<<< -@@ -9941,22 +9941,22 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":509 -+ /* "vidcutter/libs/pympv/mpv.pyx":511 - * elif format == MPV_FORMAT_DOUBLE: - * node.u.double_ = value - * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< - * node.u.list = self._prep_node_list(value) - * elif format == MPV_FORMAT_NODE_MAP: - */ -- __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 509, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_ARRAY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error) -+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_format, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 509, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":510 -+ /* "vidcutter/libs/pympv/mpv.pyx":512 - * node.u.double_ = value - * elif format == MPV_FORMAT_NODE_ARRAY: - * node.u.list = self._prep_node_list(value) # <<<<<<<<<<<<<< -@@ -9965,7 +9965,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - */ - __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_list(__pyx_v_self, __pyx_v_value); - -- /* "vidcutter/libs/pympv/mpv.pyx":509 -+ /* "vidcutter/libs/pympv/mpv.pyx":511 - * elif format == MPV_FORMAT_DOUBLE: - * node.u.double_ = value - * elif format == MPV_FORMAT_NODE_ARRAY: # <<<<<<<<<<<<<< -@@ -9975,22 +9975,22 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":511 -+ /* "vidcutter/libs/pympv/mpv.pyx":513 - * elif format == MPV_FORMAT_NODE_ARRAY: - * node.u.list = self._prep_node_list(value) - * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< - * node.u.list = self._prep_node_map(value) - * else: - */ -- __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_enum__mpv_format(MPV_FORMAT_NODE_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 511, __pyx_L1_error) -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_format, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 511, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_4) { - -- /* "vidcutter/libs/pympv/mpv.pyx":512 -+ /* "vidcutter/libs/pympv/mpv.pyx":514 - * node.u.list = self._prep_node_list(value) - * elif format == MPV_FORMAT_NODE_MAP: - * node.u.list = self._prep_node_map(value) # <<<<<<<<<<<<<< -@@ -9999,7 +9999,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - */ - __pyx_v_node.u.list = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_node_map(__pyx_v_self, __pyx_v_value); - -- /* "vidcutter/libs/pympv/mpv.pyx":511 -+ /* "vidcutter/libs/pympv/mpv.pyx":513 - * elif format == MPV_FORMAT_NODE_ARRAY: - * node.u.list = self._prep_node_list(value) - * elif format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -@@ -10009,7 +10009,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":514 -+ /* "vidcutter/libs/pympv/mpv.pyx":516 - * node.u.list = self._prep_node_map(value) - * else: - * node.format = MPV_FORMAT_NONE # <<<<<<<<<<<<<< -@@ -10021,7 +10021,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - } - __pyx_L3:; - -- /* "vidcutter/libs/pympv/mpv.pyx":515 -+ /* "vidcutter/libs/pympv/mpv.pyx":517 - * else: - * node.format = MPV_FORMAT_NONE - * return node # <<<<<<<<<<<<<< -@@ -10031,7 +10031,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - __pyx_r = __pyx_v_node; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":496 -+ /* "vidcutter/libs/pympv/mpv.pyx":498 - * return list - * - * cdef mpv_node _prep_native_value(self, value, format): # <<<<<<<<<<<<<< -@@ -10052,7 +10052,7 @@ static struct mpv_node __pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":517 -+/* "vidcutter/libs/pympv/mpv.pyx":519 - * return node - * - * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< -@@ -10074,7 +10074,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_free_native_value", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":518 -+ /* "vidcutter/libs/pympv/mpv.pyx":520 - * - * cdef _free_native_value(self, mpv_node node): - * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< -@@ -10085,7 +10085,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - case MPV_FORMAT_NODE_ARRAY: - case MPV_FORMAT_NODE_MAP: - -- /* "vidcutter/libs/pympv/mpv.pyx":519 -+ /* "vidcutter/libs/pympv/mpv.pyx":521 - * cdef _free_native_value(self, mpv_node node): - * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): - * for i in range(node.u.list.num): # <<<<<<<<<<<<<< -@@ -10097,19 +10097,19 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { - __pyx_v_i = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":520 -+ /* "vidcutter/libs/pympv/mpv.pyx":522 - * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): - * for i in range(node.u.list.num): - * self._free_native_value(node.u.list.values[i]) # <<<<<<<<<<<<<< - * free(node.u.list.values) - * if node.format == MPV_FORMAT_NODE_MAP: - */ -- __pyx_t_4 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, (__pyx_v_node.u.list->values[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error) -+ __pyx_t_4 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, (__pyx_v_node.u.list->values[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":521 -+ /* "vidcutter/libs/pympv/mpv.pyx":523 - * for i in range(node.u.list.num): - * self._free_native_value(node.u.list.values[i]) - * free(node.u.list.values) # <<<<<<<<<<<<<< -@@ -10118,7 +10118,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - */ - free(__pyx_v_node.u.list->values); - -- /* "vidcutter/libs/pympv/mpv.pyx":522 -+ /* "vidcutter/libs/pympv/mpv.pyx":524 - * self._free_native_value(node.u.list.values[i]) - * free(node.u.list.values) - * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -@@ -10128,7 +10128,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - __pyx_t_5 = ((__pyx_v_node.format == MPV_FORMAT_NODE_MAP) != 0); - if (__pyx_t_5) { - -- /* "vidcutter/libs/pympv/mpv.pyx":523 -+ /* "vidcutter/libs/pympv/mpv.pyx":525 - * free(node.u.list.values) - * if node.format == MPV_FORMAT_NODE_MAP: - * for i in range(node.u.list.num): # <<<<<<<<<<<<<< -@@ -10140,7 +10140,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { - __pyx_v_i = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":524 -+ /* "vidcutter/libs/pympv/mpv.pyx":526 - * if node.format == MPV_FORMAT_NODE_MAP: - * for i in range(node.u.list.num): - * free(node.u.list.keys[i]) # <<<<<<<<<<<<<< -@@ -10150,7 +10150,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - free((__pyx_v_node.u.list->keys[__pyx_v_i])); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":525 -+ /* "vidcutter/libs/pympv/mpv.pyx":527 - * for i in range(node.u.list.num): - * free(node.u.list.keys[i]) - * free(node.u.list.keys) # <<<<<<<<<<<<<< -@@ -10159,7 +10159,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - */ - free(__pyx_v_node.u.list->keys); - -- /* "vidcutter/libs/pympv/mpv.pyx":522 -+ /* "vidcutter/libs/pympv/mpv.pyx":524 - * self._free_native_value(node.u.list.values[i]) - * free(node.u.list.values) - * if node.format == MPV_FORMAT_NODE_MAP: # <<<<<<<<<<<<<< -@@ -10168,7 +10168,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":526 -+ /* "vidcutter/libs/pympv/mpv.pyx":528 - * free(node.u.list.keys[i]) - * free(node.u.list.keys) - * free(node.u.list) # <<<<<<<<<<<<<< -@@ -10177,7 +10177,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - */ - free(__pyx_v_node.u.list); - -- /* "vidcutter/libs/pympv/mpv.pyx":518 -+ /* "vidcutter/libs/pympv/mpv.pyx":520 - * - * cdef _free_native_value(self, mpv_node node): - * if node.format in (MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP): # <<<<<<<<<<<<<< -@@ -10187,7 +10187,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - break; - case MPV_FORMAT_STRING: - -- /* "vidcutter/libs/pympv/mpv.pyx":528 -+ /* "vidcutter/libs/pympv/mpv.pyx":530 - * free(node.u.list) - * elif node.format == MPV_FORMAT_STRING: - * free(node.u.string) # <<<<<<<<<<<<<< -@@ -10196,7 +10196,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - */ - free(__pyx_v_node.u.string); - -- /* "vidcutter/libs/pympv/mpv.pyx":527 -+ /* "vidcutter/libs/pympv/mpv.pyx":529 - * free(node.u.list.keys) - * free(node.u.list) - * elif node.format == MPV_FORMAT_STRING: # <<<<<<<<<<<<<< -@@ -10207,7 +10207,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - default: break; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":517 -+ /* "vidcutter/libs/pympv/mpv.pyx":519 - * return node - * - * cdef _free_native_value(self, mpv_node node): # <<<<<<<<<<<<<< -@@ -10228,7 +10228,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value(struc - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":530 -+/* "vidcutter/libs/pympv/mpv.pyx":532 - * free(node.u.string) - * - * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< -@@ -10280,7 +10280,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command(PyObject *__py - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "command") < 0)) __PYX_ERR(0, 530, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "command") < 0)) __PYX_ERR(0, 532, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 0) { - goto __pyx_L5_argtuple_error; -@@ -10291,7 +10291,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_9command(PyObject *__py - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("command", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 530, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("command", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 532, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_cmdlist); __pyx_v_cmdlist = 0; - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.command", __pyx_clineno, __pyx_lineno, __pyx_filename); -@@ -10338,7 +10338,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("command", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":544 -+ /* "vidcutter/libs/pympv/mpv.pyx":546 - * Wraps: mpv_command_node and mpv_command_node_async - * """ - * assert self._ctx # <<<<<<<<<<<<<< -@@ -10349,19 +10349,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 544, __pyx_L1_error) -+ __PYX_ERR(0, 546, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":545 -+ /* "vidcutter/libs/pympv/mpv.pyx":547 - * """ - * assert self._ctx - * cdef mpv_node node = self._prep_native_value(cmdlist, self._format_for(cmdlist)) # <<<<<<<<<<<<<< - * cdef mpv_node noderesult - * cdef int err - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -10375,13 +10375,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_cmdlist) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cmdlist); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_node = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_cmdlist, __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":549 -+ /* "vidcutter/libs/pympv/mpv.pyx":551 - * cdef int err - * cdef uint64_t data_id - * result = None # <<<<<<<<<<<<<< -@@ -10391,7 +10391,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __Pyx_INCREF(Py_None); - __pyx_v_result = Py_None; - -- /* "vidcutter/libs/pympv/mpv.pyx":550 -+ /* "vidcutter/libs/pympv/mpv.pyx":552 - * cdef uint64_t data_id - * result = None - * try: # <<<<<<<<<<<<<< -@@ -10400,31 +10400,31 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - */ - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":551 -+ /* "vidcutter/libs/pympv/mpv.pyx":553 - * result = None - * try: - * data_id = id(data) # <<<<<<<<<<<<<< - * if not asynchronous: - * with nogil: - */ -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L4_error) -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 551, __pyx_L4_error) -+ __pyx_t_4 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 553, __pyx_L4_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_data_id = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":552 -+ /* "vidcutter/libs/pympv/mpv.pyx":554 - * try: - * data_id = id(data) - * if not asynchronous: # <<<<<<<<<<<<<< - * with nogil: - * err = mpv_command_node(self._ctx, &node, &noderesult) - */ -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 552, __pyx_L4_error) -+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 554, __pyx_L4_error) - __pyx_t_6 = ((!__pyx_t_5) != 0); - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":553 -+ /* "vidcutter/libs/pympv/mpv.pyx":555 - * data_id = id(data) - * if not asynchronous: - * with nogil: # <<<<<<<<<<<<<< -@@ -10439,7 +10439,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":554 -+ /* "vidcutter/libs/pympv/mpv.pyx":556 - * if not asynchronous: - * with nogil: - * err = mpv_command_node(self._ctx, &node, &noderesult) # <<<<<<<<<<<<<< -@@ -10449,7 +10449,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_v_err = mpv_command_node(__pyx_v_self->_ctx, (&__pyx_v_node), (&__pyx_v_noderesult)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":553 -+ /* "vidcutter/libs/pympv/mpv.pyx":555 - * data_id = id(data) - * if not asynchronous: - * with nogil: # <<<<<<<<<<<<<< -@@ -10468,7 +10468,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":555 -+ /* "vidcutter/libs/pympv/mpv.pyx":557 - * with nogil: - * err = mpv_command_node(self._ctx, &node, &noderesult) - * try: # <<<<<<<<<<<<<< -@@ -10477,7 +10477,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - */ - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":556 -+ /* "vidcutter/libs/pympv/mpv.pyx":558 - * err = mpv_command_node(self._ctx, &node, &noderesult) - * try: - * result = _convert_node_value(noderesult) if err >= 0 else None # <<<<<<<<<<<<<< -@@ -10485,7 +10485,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - * with nogil: - */ - if (((__pyx_v_err >= 0) != 0)) { -- __pyx_t_2 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_noderesult); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L11_error) -+ __pyx_t_2 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_noderesult); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 558, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; - __pyx_t_2 = 0; -@@ -10497,7 +10497,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_t_1 = 0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":558 -+ /* "vidcutter/libs/pympv/mpv.pyx":560 - * result = _convert_node_value(noderesult) if err >= 0 else None - * finally: - * with nogil: # <<<<<<<<<<<<<< -@@ -10514,7 +10514,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":559 -+ /* "vidcutter/libs/pympv/mpv.pyx":561 - * finally: - * with nogil: - * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< -@@ -10524,7 +10524,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - mpv_free_node_contents((&__pyx_v_noderesult)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":558 -+ /* "vidcutter/libs/pympv/mpv.pyx":560 - * result = _convert_node_value(noderesult) if err >= 0 else None - * finally: - * with nogil: # <<<<<<<<<<<<<< -@@ -10570,7 +10570,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":559 -+ /* "vidcutter/libs/pympv/mpv.pyx":561 - * finally: - * with nogil: - * mpv_free_node_contents(&noderesult) # <<<<<<<<<<<<<< -@@ -10580,7 +10580,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - mpv_free_node_contents((&__pyx_v_noderesult)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":558 -+ /* "vidcutter/libs/pympv/mpv.pyx":560 - * result = _convert_node_value(noderesult) if err >= 0 else None - * finally: - * with nogil: # <<<<<<<<<<<<<< -@@ -10616,7 +10616,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_L12:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":552 -+ /* "vidcutter/libs/pympv/mpv.pyx":554 - * try: - * data_id = id(data) - * if not asynchronous: # <<<<<<<<<<<<<< -@@ -10626,7 +10626,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - goto __pyx_L6; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":561 -+ /* "vidcutter/libs/pympv/mpv.pyx":563 - * mpv_free_node_contents(&noderesult) - * else: - * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< -@@ -10634,9 +10634,9 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) - */ - /*else*/ { -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 563, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_16 = NULL; - __pyx_t_8 = 0; -@@ -10653,7 +10653,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -@@ -10662,14 +10662,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { -- __pyx_t_17 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __pyx_t_17 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 563, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_17); - if (__pyx_t_16) { - __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL; -@@ -10680,7 +10680,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_8, Py_None); - __pyx_t_3 = 0; -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L4_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - } -@@ -10688,7 +10688,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_v_userdatas = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":562 -+ /* "vidcutter/libs/pympv/mpv.pyx":564 - * else: - * userdatas = self.reply_userdata.get(data_id, None) - * if userdatas is None: # <<<<<<<<<<<<<< -@@ -10699,14 +10699,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_t_5 = (__pyx_t_6 != 0); - if (__pyx_t_5) { - -- /* "vidcutter/libs/pympv/mpv.pyx":563 -+ /* "vidcutter/libs/pympv/mpv.pyx":565 - * userdatas = self.reply_userdata.get(data_id, None) - * if userdatas is None: - * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< - * userdatas.add() - * with nogil: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L4_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_17 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -10720,15 +10720,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - } - __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_17, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); - __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L4_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 563, __pyx_L4_error) -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 565, __pyx_L4_error) - __Pyx_INCREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":562 -+ /* "vidcutter/libs/pympv/mpv.pyx":564 - * else: - * userdatas = self.reply_userdata.get(data_id, None) - * if userdatas is None: # <<<<<<<<<<<<<< -@@ -10737,14 +10737,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":564 -+ /* "vidcutter/libs/pympv/mpv.pyx":566 - * if userdatas is None: - * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) - * userdatas.add() # <<<<<<<<<<<<<< - * with nogil: - * err = mpv_command_node_async(self._ctx, data_id, &node) - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L4_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 566, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_17 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -10758,12 +10758,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - } - __pyx_t_1 = (__pyx_t_17) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L4_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":565 -+ /* "vidcutter/libs/pympv/mpv.pyx":567 - * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) - * userdatas.add() - * with nogil: # <<<<<<<<<<<<<< -@@ -10778,7 +10778,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":566 -+ /* "vidcutter/libs/pympv/mpv.pyx":568 - * userdatas.add() - * with nogil: - * err = mpv_command_node_async(self._ctx, data_id, &node) # <<<<<<<<<<<<<< -@@ -10788,7 +10788,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_v_err = mpv_command_node_async(__pyx_v_self->_ctx, __pyx_v_data_id, (&__pyx_v_node)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":565 -+ /* "vidcutter/libs/pympv/mpv.pyx":567 - * _reply_userdatas[data_id] = userdatas = _ReplyUserData(data) - * userdatas.add() - * with nogil: # <<<<<<<<<<<<<< -@@ -10810,7 +10810,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_L6:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":568 -+ /* "vidcutter/libs/pympv/mpv.pyx":570 - * err = mpv_command_node_async(self._ctx, data_id, &node) - * finally: - * self._free_native_value(node) # <<<<<<<<<<<<<< -@@ -10819,7 +10819,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - */ - /*finally:*/ { - /*normal exit:*/{ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L5; -@@ -10844,7 +10844,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __Pyx_XGOTREF(__pyx_t_10); - __pyx_t_8 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_18 = __pyx_filename; - { -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L26_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L26_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } -@@ -10877,7 +10877,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_L5:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":569 -+ /* "vidcutter/libs/pympv/mpv.pyx":571 - * finally: - * self._free_native_value(node) - * if err < 0: # <<<<<<<<<<<<<< -@@ -10887,16 +10887,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_t_5 = ((__pyx_v_err < 0) != 0); - if (unlikely(__pyx_t_5)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":570 -+ /* "vidcutter/libs/pympv/mpv.pyx":572 - * self._free_native_value(node) - * if err < 0: - * raise MPVError(err) # <<<<<<<<<<<<<< - * return result - * - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 570, __pyx_L1_error) -+ __pyx_t_17 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 572, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_17); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -10911,14 +10911,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_17) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_17); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 570, __pyx_L1_error) -+ __PYX_ERR(0, 572, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":569 -+ /* "vidcutter/libs/pympv/mpv.pyx":571 - * finally: - * self._free_native_value(node) - * if err < 0: # <<<<<<<<<<<<<< -@@ -10927,7 +10927,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":571 -+ /* "vidcutter/libs/pympv/mpv.pyx":573 - * if err < 0: - * raise MPVError(err) - * return result # <<<<<<<<<<<<<< -@@ -10939,7 +10939,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - __pyx_r = __pyx_v_result; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":530 -+ /* "vidcutter/libs/pympv/mpv.pyx":532 - * free(node.u.string) - * - * def command(self, *cmdlist, asynchronous=False, data=None): # <<<<<<<<<<<<<< -@@ -10964,7 +10964,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_8command(struct __pyx_o - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":574 -+/* "vidcutter/libs/pympv/mpv.pyx":576 - * - * @_errors - * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< -@@ -11012,7 +11012,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async(Py - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_property_async") < 0)) __PYX_ERR(0, 574, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_property_async") < 0)) __PYX_ERR(0, 576, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -11028,7 +11028,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_11get_property_async(Py - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("get_property_async", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 574, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("get_property_async", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 576, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -11064,7 +11064,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - __Pyx_RefNannySetupContext("get_property_async", 0); - __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":583 -+ /* "vidcutter/libs/pympv/mpv.pyx":585 - * data: Value to be passed into the reply_userdata of the response event. - * Wraps: mpv_get_property_async""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -11075,19 +11075,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 583, __pyx_L1_error) -+ __PYX_ERR(0, 585, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":584 -+ /* "vidcutter/libs/pympv/mpv.pyx":586 - * Wraps: mpv_get_property_async""" - * assert self._ctx - * prop = _strenc(prop) # <<<<<<<<<<<<<< - * cdef uint64_t id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -11101,32 +11101,32 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":585 -+ /* "vidcutter/libs/pympv/mpv.pyx":587 - * assert self._ctx - * prop = _strenc(prop) - * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is None: - */ -- __pyx_t_4 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 585, __pyx_L1_error) -+ __pyx_t_4 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_hash_t)-1))) __PYX_ERR(0, 587, __pyx_L1_error) - __pyx_v_id_data = ((uint64_t)__pyx_t_4); - -- /* "vidcutter/libs/pympv/mpv.pyx":586 -+ /* "vidcutter/libs/pympv/mpv.pyx":588 - * prop = _strenc(prop) - * cdef uint64_t id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< - * if userdatas is None: - * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; -@@ -11143,7 +11143,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -@@ -11152,14 +11152,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { -- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; -@@ -11170,7 +11170,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); - __pyx_t_3 = 0; -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } -@@ -11178,7 +11178,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - __pyx_v_userdatas = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":587 -+ /* "vidcutter/libs/pympv/mpv.pyx":589 - * cdef uint64_t id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is None: # <<<<<<<<<<<<<< -@@ -11189,14 +11189,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - __pyx_t_9 = (__pyx_t_8 != 0); - if (__pyx_t_9) { - -- /* "vidcutter/libs/pympv/mpv.pyx":588 -+ /* "vidcutter/libs/pympv/mpv.pyx":590 - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is None: - * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< - * userdatas.add() - * cdef const char* prop_c = prop - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -11210,15 +11210,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - } - __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 588, __pyx_L1_error) -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_INCREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":587 -+ /* "vidcutter/libs/pympv/mpv.pyx":589 - * cdef uint64_t id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is None: # <<<<<<<<<<<<<< -@@ -11227,14 +11227,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":589 -+ /* "vidcutter/libs/pympv/mpv.pyx":591 - * if userdatas is None: - * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) - * userdatas.add() # <<<<<<<<<<<<<< - * cdef const char* prop_c = prop - * with nogil: - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 589, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 591, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -11248,22 +11248,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - } - __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":590 -+ /* "vidcutter/libs/pympv/mpv.pyx":592 - * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) - * userdatas.add() - * cdef const char* prop_c = prop # <<<<<<<<<<<<<< - * with nogil: - * err = mpv_get_property_async( - */ -- __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L1_error) -+ __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 592, __pyx_L1_error) - __pyx_v_prop_c = __pyx_t_10; - -- /* "vidcutter/libs/pympv/mpv.pyx":591 -+ /* "vidcutter/libs/pympv/mpv.pyx":593 - * userdatas.add() - * cdef const char* prop_c = prop - * with nogil: # <<<<<<<<<<<<<< -@@ -11278,7 +11278,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":592 -+ /* "vidcutter/libs/pympv/mpv.pyx":594 - * cdef const char* prop_c = prop - * with nogil: - * err = mpv_get_property_async( # <<<<<<<<<<<<<< -@@ -11288,7 +11288,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - __pyx_v_err = mpv_get_property_async(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_prop_c, MPV_FORMAT_NODE); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":591 -+ /* "vidcutter/libs/pympv/mpv.pyx":593 - * userdatas.add() - * cdef const char* prop_c = prop - * with nogil: # <<<<<<<<<<<<<< -@@ -11307,7 +11307,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":598 -+ /* "vidcutter/libs/pympv/mpv.pyx":600 - * MPV_FORMAT_NODE, - * ) - * return err # <<<<<<<<<<<<<< -@@ -11315,13 +11315,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - * def try_get_property_async(self, prop, data=None, default=None): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":574 -+ /* "vidcutter/libs/pympv/mpv.pyx":576 - * - * @_errors - * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< -@@ -11346,7 +11346,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_10get_property_async(st - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":600 -+/* "vidcutter/libs/pympv/mpv.pyx":602 - * return err - * - * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< -@@ -11403,7 +11403,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_asyn - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property_async") < 0)) __PYX_ERR(0, 600, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property_async") < 0)) __PYX_ERR(0, 602, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -11422,7 +11422,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_13try_get_property_asyn - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("try_get_property_async", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 600, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("try_get_property_async", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 602, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -11451,7 +11451,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("try_get_property_async", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":601 -+ /* "vidcutter/libs/pympv/mpv.pyx":603 - * - * def try_get_property_async(self, prop, data=None, default=None): - * try: # <<<<<<<<<<<<<< -@@ -11467,7 +11467,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":602 -+ /* "vidcutter/libs/pympv/mpv.pyx":604 - * def try_get_property_async(self, prop, data=None, default=None): - * try: - * return self.get_property_async(prop, data=data) # <<<<<<<<<<<<<< -@@ -11475,17 +11475,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - * return default - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L3_error) -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 604, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 602, __pyx_L3_error) -+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 604, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_prop); - __Pyx_GIVEREF(__pyx_v_prop); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_prop); -- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 602, __pyx_L3_error) -+ __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 604, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 602, __pyx_L3_error) -- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 602, __pyx_L3_error) -+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_v_data) < 0) __PYX_ERR(0, 604, __pyx_L3_error) -+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 604, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -@@ -11494,7 +11494,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - __pyx_t_7 = 0; - goto __pyx_L7_try_return; - -- /* "vidcutter/libs/pympv/mpv.pyx":601 -+ /* "vidcutter/libs/pympv/mpv.pyx":603 - * - * def try_get_property_async(self, prop, data=None, default=None): - * try: # <<<<<<<<<<<<<< -@@ -11508,7 +11508,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":603 -+ /* "vidcutter/libs/pympv/mpv.pyx":605 - * try: - * return self.get_property_async(prop, data=data) - * except MPVError: # <<<<<<<<<<<<<< -@@ -11516,7 +11516,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - * - */ - __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L5_except_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 605, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_7, __pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -@@ -11524,12 +11524,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; - if (__pyx_t_8) { - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property_async", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 603, __pyx_L5_except_error) -+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 605, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - -- /* "vidcutter/libs/pympv/mpv.pyx":604 -+ /* "vidcutter/libs/pympv/mpv.pyx":606 - * return self.get_property_async(prop, data=data) - * except MPVError: - * return default # <<<<<<<<<<<<<< -@@ -11547,7 +11547,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - -- /* "vidcutter/libs/pympv/mpv.pyx":601 -+ /* "vidcutter/libs/pympv/mpv.pyx":603 - * - * def try_get_property_async(self, prop, data=None, default=None): - * try: # <<<<<<<<<<<<<< -@@ -11573,7 +11573,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - goto __pyx_L0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":600 -+ /* "vidcutter/libs/pympv/mpv.pyx":602 - * return err - * - * def try_get_property_async(self, prop, data=None, default=None): # <<<<<<<<<<<<<< -@@ -11595,7 +11595,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_12try_get_property_asyn - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":606 -+/* "vidcutter/libs/pympv/mpv.pyx":608 - * return default - * - * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< -@@ -11642,7 +11642,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property(PyOb - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property") < 0)) __PYX_ERR(0, 606, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "try_get_property") < 0)) __PYX_ERR(0, 608, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -11658,7 +11658,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_15try_get_property(PyOb - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("try_get_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 606, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("try_get_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 608, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -11687,7 +11687,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("try_get_property", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":607 -+ /* "vidcutter/libs/pympv/mpv.pyx":609 - * - * def try_get_property(self, prop, default=None): - * try: # <<<<<<<<<<<<<< -@@ -11703,7 +11703,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":608 -+ /* "vidcutter/libs/pympv/mpv.pyx":610 - * def try_get_property(self, prop, default=None): - * try: - * return self.get_property(prop) # <<<<<<<<<<<<<< -@@ -11711,7 +11711,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - * return default - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L3_error) -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_property); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 610, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { -@@ -11725,14 +11725,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - } - __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L3_error) -+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L7_try_return; - -- /* "vidcutter/libs/pympv/mpv.pyx":607 -+ /* "vidcutter/libs/pympv/mpv.pyx":609 - * - * def try_get_property(self, prop, default=None): - * try: # <<<<<<<<<<<<<< -@@ -11745,7 +11745,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":609 -+ /* "vidcutter/libs/pympv/mpv.pyx":611 - * try: - * return self.get_property(prop) - * except MPVError: # <<<<<<<<<<<<<< -@@ -11753,7 +11753,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - * - */ - __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 609, __pyx_L5_except_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 611, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -@@ -11761,12 +11761,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; - if (__pyx_t_8) { - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.try_get_property", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 609, __pyx_L5_except_error) -+ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 611, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_4); - -- /* "vidcutter/libs/pympv/mpv.pyx":610 -+ /* "vidcutter/libs/pympv/mpv.pyx":612 - * return self.get_property(prop) - * except MPVError: - * return default # <<<<<<<<<<<<<< -@@ -11784,7 +11784,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - -- /* "vidcutter/libs/pympv/mpv.pyx":607 -+ /* "vidcutter/libs/pympv/mpv.pyx":609 - * - * def try_get_property(self, prop, default=None): - * try: # <<<<<<<<<<<<<< -@@ -11810,7 +11810,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - goto __pyx_L0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":606 -+ /* "vidcutter/libs/pympv/mpv.pyx":608 - * return default - * - * def try_get_property(self, prop, default=None): # <<<<<<<<<<<<<< -@@ -11832,7 +11832,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_14try_get_property(stru - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":612 -+/* "vidcutter/libs/pympv/mpv.pyx":614 - * return default - * - * def get_property(self, prop): # <<<<<<<<<<<<<< -@@ -11882,7 +11882,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - __Pyx_RefNannySetupContext("get_property", 0); - __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":614 -+ /* "vidcutter/libs/pympv/mpv.pyx":616 - * def get_property(self, prop): - * """Wraps: mpv_get_property""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -11893,19 +11893,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 614, __pyx_L1_error) -+ __PYX_ERR(0, 616, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":616 -+ /* "vidcutter/libs/pympv/mpv.pyx":618 - * assert self._ctx - * cdef mpv_node result - * prop = _strenc(prop) # <<<<<<<<<<<<<< - * cdef const char* prop_c = prop - * cdef int err - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 618, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -11919,23 +11919,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 618, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":617 -+ /* "vidcutter/libs/pympv/mpv.pyx":619 - * cdef mpv_node result - * prop = _strenc(prop) - * cdef const char* prop_c = prop # <<<<<<<<<<<<<< - * cdef int err - * with nogil: - */ -- __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 617, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 619, __pyx_L1_error) - __pyx_v_prop_c = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":619 -+ /* "vidcutter/libs/pympv/mpv.pyx":621 - * cdef const char* prop_c = prop - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -11950,7 +11950,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":620 -+ /* "vidcutter/libs/pympv/mpv.pyx":622 - * cdef int err - * with nogil: - * err = mpv_get_property( # <<<<<<<<<<<<<< -@@ -11960,7 +11960,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - __pyx_v_err = mpv_get_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_result)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":619 -+ /* "vidcutter/libs/pympv/mpv.pyx":621 - * cdef const char* prop_c = prop - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -11979,7 +11979,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":626 -+ /* "vidcutter/libs/pympv/mpv.pyx":628 - * &result, - * ) - * if err < 0: # <<<<<<<<<<<<<< -@@ -11989,16 +11989,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - __pyx_t_5 = ((__pyx_v_err < 0) != 0); - if (unlikely(__pyx_t_5)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":627 -+ /* "vidcutter/libs/pympv/mpv.pyx":629 - * ) - * if err < 0: - * raise MPVError(err) # <<<<<<<<<<<<<< - * try: - * v = _convert_node_value(result) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 629, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 627, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 629, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -12013,14 +12013,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 627, __pyx_L1_error) -+ __PYX_ERR(0, 629, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":626 -+ /* "vidcutter/libs/pympv/mpv.pyx":628 - * &result, - * ) - * if err < 0: # <<<<<<<<<<<<<< -@@ -12029,7 +12029,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":628 -+ /* "vidcutter/libs/pympv/mpv.pyx":630 - * if err < 0: - * raise MPVError(err) - * try: # <<<<<<<<<<<<<< -@@ -12038,20 +12038,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - */ - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":629 -+ /* "vidcutter/libs/pympv/mpv.pyx":631 - * raise MPVError(err) - * try: - * v = _convert_node_value(result) # <<<<<<<<<<<<<< - * finally: - * with nogil: - */ -- __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L8_error) -+ __pyx_t_1 = __pyx_f_9vidcutter_4libs_3mpv__convert_node_value(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_v = __pyx_t_1; - __pyx_t_1 = 0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":631 -+ /* "vidcutter/libs/pympv/mpv.pyx":633 - * v = _convert_node_value(result) - * finally: - * with nogil: # <<<<<<<<<<<<<< -@@ -12068,7 +12068,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":632 -+ /* "vidcutter/libs/pympv/mpv.pyx":634 - * finally: - * with nogil: - * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< -@@ -12078,7 +12078,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - mpv_free_node_contents((&__pyx_v_result)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":631 -+ /* "vidcutter/libs/pympv/mpv.pyx":633 - * v = _convert_node_value(result) - * finally: - * with nogil: # <<<<<<<<<<<<<< -@@ -12125,7 +12125,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":632 -+ /* "vidcutter/libs/pympv/mpv.pyx":634 - * finally: - * with nogil: - * mpv_free_node_contents(&result) # <<<<<<<<<<<<<< -@@ -12135,7 +12135,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - mpv_free_node_contents((&__pyx_v_result)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":631 -+ /* "vidcutter/libs/pympv/mpv.pyx":633 - * v = _convert_node_value(result) - * finally: - * with nogil: # <<<<<<<<<<<<<< -@@ -12171,7 +12171,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - __pyx_L9:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":633 -+ /* "vidcutter/libs/pympv/mpv.pyx":635 - * with nogil: - * mpv_free_node_contents(&result) - * return v # <<<<<<<<<<<<<< -@@ -12183,7 +12183,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - __pyx_r = __pyx_v_v; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":612 -+ /* "vidcutter/libs/pympv/mpv.pyx":614 - * return default - * - * def get_property(self, prop): # <<<<<<<<<<<<<< -@@ -12207,7 +12207,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_16get_property(struct _ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":636 -+/* "vidcutter/libs/pympv/mpv.pyx":638 - * - * @_errors - * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< -@@ -12275,7 +12275,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property(PyObject - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_property") < 0)) __PYX_ERR(0, 636, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_property") < 0)) __PYX_ERR(0, 638, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -12297,7 +12297,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_19set_property(PyObject - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("set_property", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 636, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("set_property", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 638, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_property", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -12344,7 +12344,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - __Pyx_RefNannySetupContext("set_property", 0); - __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":638 -+ /* "vidcutter/libs/pympv/mpv.pyx":640 - * def set_property(self, prop, value=True, asynchronous=False, data=None): - * """Wraps: mpv_set_property and mpv_set_property_async""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -12355,19 +12355,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 638, __pyx_L1_error) -+ __PYX_ERR(0, 640, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":639 -+ /* "vidcutter/libs/pympv/mpv.pyx":641 - * """Wraps: mpv_set_property and mpv_set_property_async""" - * assert self._ctx - * prop = _strenc(prop) # <<<<<<<<<<<<<< - * cdef mpv_format format = self._format_for(value) - * cdef mpv_node v = self._prep_native_value(value, format) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -12381,20 +12381,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":640 -+ /* "vidcutter/libs/pympv/mpv.pyx":642 - * assert self._ctx - * prop = _strenc(prop) - * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< - * cdef mpv_node v = self._prep_native_value(value, format) - * cdef int err - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -12408,26 +12408,26 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 642, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error) -+ __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 642, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_format = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":641 -+ /* "vidcutter/libs/pympv/mpv.pyx":643 - * prop = _strenc(prop) - * cdef mpv_format format = self._format_for(value) - * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< - * cdef int err - * cdef uint64_t data_id - */ -- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":645 -+ /* "vidcutter/libs/pympv/mpv.pyx":647 - * cdef uint64_t data_id - * cdef const char* prop_c - * try: # <<<<<<<<<<<<<< -@@ -12436,28 +12436,28 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - */ - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":646 -+ /* "vidcutter/libs/pympv/mpv.pyx":648 - * cdef const char* prop_c - * try: - * prop_c = prop # <<<<<<<<<<<<<< - * if not asynchronous: - * with nogil: - */ -- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 646, __pyx_L4_error) -+ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 648, __pyx_L4_error) - __pyx_v_prop_c = __pyx_t_5; - -- /* "vidcutter/libs/pympv/mpv.pyx":647 -+ /* "vidcutter/libs/pympv/mpv.pyx":649 - * try: - * prop_c = prop - * if not asynchronous: # <<<<<<<<<<<<<< - * with nogil: - * err = mpv_set_property( - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 647, __pyx_L4_error) -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asynchronous); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 649, __pyx_L4_error) - __pyx_t_7 = ((!__pyx_t_6) != 0); - if (__pyx_t_7) { - -- /* "vidcutter/libs/pympv/mpv.pyx":648 -+ /* "vidcutter/libs/pympv/mpv.pyx":650 - * prop_c = prop - * if not asynchronous: - * with nogil: # <<<<<<<<<<<<<< -@@ -12472,7 +12472,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":649 -+ /* "vidcutter/libs/pympv/mpv.pyx":651 - * if not asynchronous: - * with nogil: - * err = mpv_set_property( # <<<<<<<<<<<<<< -@@ -12482,7 +12482,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - __pyx_v_err = mpv_set_property(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":648 -+ /* "vidcutter/libs/pympv/mpv.pyx":650 - * prop_c = prop - * if not asynchronous: - * with nogil: # <<<<<<<<<<<<<< -@@ -12501,7 +12501,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":655 -+ /* "vidcutter/libs/pympv/mpv.pyx":657 - * &v - * ) - * return err # <<<<<<<<<<<<<< -@@ -12509,13 +12509,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - * userdatas = self.reply_userdata.get(data_id, None) - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L4_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L3_return; - -- /* "vidcutter/libs/pympv/mpv.pyx":647 -+ /* "vidcutter/libs/pympv/mpv.pyx":649 - * try: - * prop_c = prop - * if not asynchronous: # <<<<<<<<<<<<<< -@@ -12524,26 +12524,26 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":656 -+ /* "vidcutter/libs/pympv/mpv.pyx":658 - * ) - * return err - * data_id = hash(data) # <<<<<<<<<<<<<< - * userdatas = self.reply_userdata.get(data_id, None) - * if userdatas is None: - */ -- __pyx_t_8 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_8 == ((Py_hash_t)-1))) __PYX_ERR(0, 656, __pyx_L4_error) -+ __pyx_t_8 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_8 == ((Py_hash_t)-1))) __PYX_ERR(0, 658, __pyx_L4_error) - __pyx_v_data_id = ((uint64_t)__pyx_t_8); - -- /* "vidcutter/libs/pympv/mpv.pyx":657 -+ /* "vidcutter/libs/pympv/mpv.pyx":659 - * return err - * data_id = hash(data) - * userdatas = self.reply_userdata.get(data_id, None) # <<<<<<<<<<<<<< - * if userdatas is None: - * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_data_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = NULL; - __pyx_t_10 = 0; -@@ -12560,7 +12560,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -@@ -12569,14 +12569,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, Py_None}; -- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { -- __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 659, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_11); - if (__pyx_t_9) { - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; -@@ -12587,7 +12587,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, Py_None); - __pyx_t_3 = 0; -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L4_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } -@@ -12595,7 +12595,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - __pyx_v_userdatas = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":658 -+ /* "vidcutter/libs/pympv/mpv.pyx":660 - * data_id = hash(data) - * userdatas = self.reply_userdata.get(data_id, None) - * if userdatas is None: # <<<<<<<<<<<<<< -@@ -12606,14 +12606,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - __pyx_t_6 = (__pyx_t_7 != 0); - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":659 -+ /* "vidcutter/libs/pympv/mpv.pyx":661 - * userdatas = self.reply_userdata.get(data_id, None) - * if userdatas is None: - * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< - * userdatas.add() - * with nogil: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L4_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_11 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -12627,15 +12627,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - } - __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_11, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L4_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 659, __pyx_L4_error) -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_data_id, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 661, __pyx_L4_error) - __Pyx_INCREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":658 -+ /* "vidcutter/libs/pympv/mpv.pyx":660 - * data_id = hash(data) - * userdatas = self.reply_userdata.get(data_id, None) - * if userdatas is None: # <<<<<<<<<<<<<< -@@ -12644,14 +12644,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":660 -+ /* "vidcutter/libs/pympv/mpv.pyx":662 - * if userdatas is None: - * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) - * userdatas.add() # <<<<<<<<<<<<<< - * with nogil: - * err = mpv_set_property_async( - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L4_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 662, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_11 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -12665,12 +12665,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - } - __pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L4_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":661 -+ /* "vidcutter/libs/pympv/mpv.pyx":663 - * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) - * userdatas.add() - * with nogil: # <<<<<<<<<<<<<< -@@ -12685,7 +12685,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":662 -+ /* "vidcutter/libs/pympv/mpv.pyx":664 - * userdatas.add() - * with nogil: - * err = mpv_set_property_async( # <<<<<<<<<<<<<< -@@ -12695,7 +12695,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - __pyx_v_err = mpv_set_property_async(__pyx_v_self->_ctx, __pyx_v_data_id, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":661 -+ /* "vidcutter/libs/pympv/mpv.pyx":663 - * self.reply_userdata[data_id] = userdatas = _ReplyUserData(data) - * userdatas.add() - * with nogil: # <<<<<<<<<<<<<< -@@ -12715,7 +12715,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":670 -+ /* "vidcutter/libs/pympv/mpv.pyx":672 - * ) - * finally: - * self._free_native_value(v) # <<<<<<<<<<<<<< -@@ -12724,7 +12724,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - */ - /*finally:*/ { - /*normal exit:*/{ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L5; -@@ -12749,7 +12749,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - __Pyx_XGOTREF(__pyx_t_19); - __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; - { -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L15_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L15_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } -@@ -12782,7 +12782,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - __pyx_L3_return: { - __pyx_t_19 = __pyx_r; - __pyx_r = 0; -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_19; -@@ -12792,7 +12792,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - __pyx_L5:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":671 -+ /* "vidcutter/libs/pympv/mpv.pyx":673 - * finally: - * self._free_native_value(v) - * return err # <<<<<<<<<<<<<< -@@ -12800,13 +12800,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":636 -+ /* "vidcutter/libs/pympv/mpv.pyx":638 - * - * @_errors - * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< -@@ -12831,7 +12831,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_18set_property(struct _ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":674 -+/* "vidcutter/libs/pympv/mpv.pyx":676 - * - * @_errors - * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< -@@ -12879,7 +12879,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option(PyObject * - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_option") < 0)) __PYX_ERR(0, 674, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_option") < 0)) __PYX_ERR(0, 676, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -12895,7 +12895,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_21set_option(PyObject * - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("set_option", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 674, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("set_option", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 676, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.set_option", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -12935,7 +12935,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - __Pyx_RefNannySetupContext("set_option", 0); - __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":676 -+ /* "vidcutter/libs/pympv/mpv.pyx":678 - * def set_option(self, prop, value=True): - * """Wraps: mpv_set_option""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -12946,19 +12946,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 676, __pyx_L1_error) -+ __PYX_ERR(0, 678, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":677 -+ /* "vidcutter/libs/pympv/mpv.pyx":679 - * """Wraps: mpv_set_option""" - * assert self._ctx - * prop = _strenc(prop) # <<<<<<<<<<<<<< - * cdef mpv_format format = self._format_for(value) - * cdef mpv_node v = self._prep_native_value(value, format) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_strenc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { -@@ -12972,20 +12972,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":678 -+ /* "vidcutter/libs/pympv/mpv.pyx":680 - * assert self._ctx - * prop = _strenc(prop) - * cdef mpv_format format = self._format_for(value) # <<<<<<<<<<<<<< - * cdef mpv_node v = self._prep_native_value(value, format) - * cdef int err - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -12999,26 +12999,26 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_value); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 678, __pyx_L1_error) -+ __pyx_t_4 = ((enum mpv_format)__Pyx_PyInt_As_enum__mpv_format(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 680, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_format = __pyx_t_4; - -- /* "vidcutter/libs/pympv/mpv.pyx":679 -+ /* "vidcutter/libs/pympv/mpv.pyx":681 - * prop = _strenc(prop) - * cdef mpv_format format = self._format_for(value) - * cdef mpv_node v = self._prep_native_value(value, format) # <<<<<<<<<<<<<< - * cdef int err - * cdef const char* prop_c - */ -- __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_enum__mpv_format(__pyx_v_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_v = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_prep_native_value(__pyx_v_self, __pyx_v_value, __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":682 -+ /* "vidcutter/libs/pympv/mpv.pyx":684 - * cdef int err - * cdef const char* prop_c - * try: # <<<<<<<<<<<<<< -@@ -13027,17 +13027,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - */ - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":683 -+ /* "vidcutter/libs/pympv/mpv.pyx":685 - * cdef const char* prop_c - * try: - * prop_c = prop # <<<<<<<<<<<<<< - * with nogil: - * err = mpv_set_option( - */ -- __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 683, __pyx_L4_error) -+ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_prop); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 685, __pyx_L4_error) - __pyx_v_prop_c = __pyx_t_5; - -- /* "vidcutter/libs/pympv/mpv.pyx":684 -+ /* "vidcutter/libs/pympv/mpv.pyx":686 - * try: - * prop_c = prop - * with nogil: # <<<<<<<<<<<<<< -@@ -13052,7 +13052,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":685 -+ /* "vidcutter/libs/pympv/mpv.pyx":687 - * prop_c = prop - * with nogil: - * err = mpv_set_option( # <<<<<<<<<<<<<< -@@ -13062,7 +13062,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - __pyx_v_err = mpv_set_option(__pyx_v_self->_ctx, __pyx_v_prop_c, MPV_FORMAT_NODE, (&__pyx_v_v)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":684 -+ /* "vidcutter/libs/pympv/mpv.pyx":686 - * try: - * prop_c = prop - * with nogil: # <<<<<<<<<<<<<< -@@ -13082,7 +13082,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":692 -+ /* "vidcutter/libs/pympv/mpv.pyx":694 - * ) - * finally: - * self._free_native_value(v) # <<<<<<<<<<<<<< -@@ -13091,7 +13091,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - */ - /*finally:*/ { - /*normal exit:*/{ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L5; -@@ -13114,7 +13114,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - __Pyx_XGOTREF(__pyx_t_14); - __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; - { -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 692, __pyx_L10_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Context *)__pyx_v_self->__pyx_vtab)->_free_native_value(__pyx_v_self, __pyx_v_v); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } -@@ -13147,7 +13147,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - __pyx_L5:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":693 -+ /* "vidcutter/libs/pympv/mpv.pyx":695 - * finally: - * self._free_native_value(v) - * return err # <<<<<<<<<<<<<< -@@ -13155,13 +13155,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":674 -+ /* "vidcutter/libs/pympv/mpv.pyx":676 - * - * @_errors - * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< -@@ -13183,7 +13183,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_20set_option(struct __p - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":696 -+/* "vidcutter/libs/pympv/mpv.pyx":698 - * - * @_errors - * def initialize(self): # <<<<<<<<<<<<<< -@@ -13215,7 +13215,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("initialize", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":698 -+ /* "vidcutter/libs/pympv/mpv.pyx":700 - * def initialize(self): - * """Wraps: mpv_initialize""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -13226,12 +13226,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 698, __pyx_L1_error) -+ __PYX_ERR(0, 700, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":700 -+ /* "vidcutter/libs/pympv/mpv.pyx":702 - * assert self._ctx - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -13246,7 +13246,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":701 -+ /* "vidcutter/libs/pympv/mpv.pyx":703 - * cdef int err - * with nogil: - * err = mpv_initialize(self._ctx) # <<<<<<<<<<<<<< -@@ -13256,7 +13256,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p - __pyx_v_err = mpv_initialize(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":700 -+ /* "vidcutter/libs/pympv/mpv.pyx":702 - * assert self._ctx - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -13275,7 +13275,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":702 -+ /* "vidcutter/libs/pympv/mpv.pyx":704 - * with nogil: - * err = mpv_initialize(self._ctx) - * return err # <<<<<<<<<<<<<< -@@ -13283,13 +13283,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p - * def wait_event(self, timeout=None): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":696 -+ /* "vidcutter/libs/pympv/mpv.pyx":698 - * - * @_errors - * def initialize(self): # <<<<<<<<<<<<<< -@@ -13308,7 +13308,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_22initialize(struct __p - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":704 -+/* "vidcutter/libs/pympv/mpv.pyx":706 - * return err - * - * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< -@@ -13349,7 +13349,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event(PyObject * - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_event") < 0)) __PYX_ERR(0, 704, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_event") < 0)) __PYX_ERR(0, 706, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -13363,7 +13363,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_25wait_event(PyObject * - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("wait_event", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 704, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("wait_event", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 706, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.wait_event", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -13391,7 +13391,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("wait_event", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":706 -+ /* "vidcutter/libs/pympv/mpv.pyx":708 - * def wait_event(self, timeout=None): - * """Wraps: mpv_wait_event""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -13402,12 +13402,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 706, __pyx_L1_error) -+ __PYX_ERR(0, 708, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":707 -+ /* "vidcutter/libs/pympv/mpv.pyx":709 - * """Wraps: mpv_wait_event""" - * assert self._ctx - * cdef double timeout_d = timeout if timeout is not None else -1 # <<<<<<<<<<<<<< -@@ -13416,14 +13416,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p - */ - __pyx_t_2 = (__pyx_v_timeout != Py_None); - if ((__pyx_t_2 != 0)) { -- __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_timeout); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 707, __pyx_L1_error) -+ __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_timeout); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 709, __pyx_L1_error) - __pyx_t_1 = __pyx_t_3; - } else { - __pyx_t_1 = -1.0; - } - __pyx_v_timeout_d = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":709 -+ /* "vidcutter/libs/pympv/mpv.pyx":711 - * cdef double timeout_d = timeout if timeout is not None else -1 - * cdef mpv_event* event - * with nogil: # <<<<<<<<<<<<<< -@@ -13438,7 +13438,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":710 -+ /* "vidcutter/libs/pympv/mpv.pyx":712 - * cdef mpv_event* event - * with nogil: - * event = mpv_wait_event(self._ctx, timeout_d) # <<<<<<<<<<<<<< -@@ -13448,7 +13448,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p - __pyx_v_event = mpv_wait_event(__pyx_v_self->_ctx, __pyx_v_timeout_d); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":709 -+ /* "vidcutter/libs/pympv/mpv.pyx":711 - * cdef double timeout_d = timeout if timeout is not None else -1 - * cdef mpv_event* event - * with nogil: # <<<<<<<<<<<<<< -@@ -13467,7 +13467,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":711 -+ /* "vidcutter/libs/pympv/mpv.pyx":713 - * with nogil: - * event = mpv_wait_event(self._ctx, timeout_d) - * return Event()._init(event, self) # <<<<<<<<<<<<<< -@@ -13475,16 +13475,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p - * def wakeup(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 711, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Event)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 713, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4), __pyx_v_event, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) -+ __pyx_t_5 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_Event *)((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4)->__pyx_vtab)->_init(((struct __pyx_obj_9vidcutter_4libs_3mpv_Event *)__pyx_t_4), __pyx_v_event, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 713, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":704 -+ /* "vidcutter/libs/pympv/mpv.pyx":706 - * return err - * - * def wait_event(self, timeout=None): # <<<<<<<<<<<<<< -@@ -13504,7 +13504,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_24wait_event(struct __p - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":713 -+/* "vidcutter/libs/pympv/mpv.pyx":715 - * return Event()._init(event, self) - * - * def wakeup(self): # <<<<<<<<<<<<<< -@@ -13534,7 +13534,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("wakeup", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":715 -+ /* "vidcutter/libs/pympv/mpv.pyx":717 - * def wakeup(self): - * """Wraps: mpv_wakeup""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -13545,12 +13545,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 715, __pyx_L1_error) -+ __PYX_ERR(0, 717, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":716 -+ /* "vidcutter/libs/pympv/mpv.pyx":718 - * """Wraps: mpv_wakeup""" - * assert self._ctx - * with nogil: # <<<<<<<<<<<<<< -@@ -13565,7 +13565,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":717 -+ /* "vidcutter/libs/pympv/mpv.pyx":719 - * assert self._ctx - * with nogil: - * mpv_wakeup(self._ctx) # <<<<<<<<<<<<<< -@@ -13575,7 +13575,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o - mpv_wakeup(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":716 -+ /* "vidcutter/libs/pympv/mpv.pyx":718 - * """Wraps: mpv_wakeup""" - * assert self._ctx - * with nogil: # <<<<<<<<<<<<<< -@@ -13594,7 +13594,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":713 -+ /* "vidcutter/libs/pympv/mpv.pyx":715 - * return Event()._init(event, self) - * - * def wakeup(self): # <<<<<<<<<<<<<< -@@ -13614,7 +13614,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_26wakeup(struct __pyx_o - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":719 -+/* "vidcutter/libs/pympv/mpv.pyx":721 - * mpv_wakeup(self._ctx) - * - * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< -@@ -13649,7 +13649,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("set_wakeup_callback", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":721 -+ /* "vidcutter/libs/pympv/mpv.pyx":723 - * def set_wakeup_callback(self, callback): - * """Wraps: mpv_set_wakeup_callback""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -13660,25 +13660,25 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 721, __pyx_L1_error) -+ __PYX_ERR(0, 723, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":722 -+ /* "vidcutter/libs/pympv/mpv.pyx":724 - * """Wraps: mpv_set_wakeup_callback""" - * assert self._ctx - * cdef uint64_t name = id(self) # <<<<<<<<<<<<<< - * self.callback = callback - * self.callbackthread.set(callback) - */ -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 722, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 724, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_name = ((uint64_t)__pyx_t_2); - -- /* "vidcutter/libs/pympv/mpv.pyx":723 -+ /* "vidcutter/libs/pympv/mpv.pyx":725 - * assert self._ctx - * cdef uint64_t name = id(self) - * self.callback = callback # <<<<<<<<<<<<<< -@@ -13691,14 +13691,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s - __Pyx_DECREF(__pyx_v_self->callback); - __pyx_v_self->callback = __pyx_v_callback; - -- /* "vidcutter/libs/pympv/mpv.pyx":724 -+ /* "vidcutter/libs/pympv/mpv.pyx":726 - * cdef uint64_t name = id(self) - * self.callback = callback - * self.callbackthread.set(callback) # <<<<<<<<<<<<<< - * with nogil: - * mpv_set_wakeup_callback(self._ctx, _c_callback, name) - */ -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 726, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { -@@ -13712,12 +13712,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s - } - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_callback) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":725 -+ /* "vidcutter/libs/pympv/mpv.pyx":727 - * self.callback = callback - * self.callbackthread.set(callback) - * with nogil: # <<<<<<<<<<<<<< -@@ -13732,7 +13732,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":726 -+ /* "vidcutter/libs/pympv/mpv.pyx":728 - * self.callbackthread.set(callback) - * with nogil: - * mpv_set_wakeup_callback(self._ctx, _c_callback, name) # <<<<<<<<<<<<<< -@@ -13742,7 +13742,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s - mpv_set_wakeup_callback(__pyx_v_self->_ctx, __pyx_f_9vidcutter_4libs_3mpv__c_callback, ((void *)__pyx_v_name)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":725 -+ /* "vidcutter/libs/pympv/mpv.pyx":727 - * self.callback = callback - * self.callbackthread.set(callback) - * with nogil: # <<<<<<<<<<<<<< -@@ -13761,7 +13761,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":719 -+ /* "vidcutter/libs/pympv/mpv.pyx":721 - * mpv_wakeup(self._ctx) - * - * def set_wakeup_callback(self, callback): # <<<<<<<<<<<<<< -@@ -13784,7 +13784,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_28set_wakeup_callback(s - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":728 -+/* "vidcutter/libs/pympv/mpv.pyx":730 - * mpv_set_wakeup_callback(self._ctx, _c_callback, name) - * - * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< -@@ -13816,7 +13816,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_wakeup_pipe", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":730 -+ /* "vidcutter/libs/pympv/mpv.pyx":732 - * def get_wakeup_pipe(self): - * """Wraps: mpv_get_wakeup_pipe""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -13827,12 +13827,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 730, __pyx_L1_error) -+ __PYX_ERR(0, 732, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":732 -+ /* "vidcutter/libs/pympv/mpv.pyx":734 - * assert self._ctx - * cdef int pipe - * with nogil: # <<<<<<<<<<<<<< -@@ -13847,7 +13847,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":733 -+ /* "vidcutter/libs/pympv/mpv.pyx":735 - * cdef int pipe - * with nogil: - * pipe = mpv_get_wakeup_pipe(self._ctx) # <<<<<<<<<<<<<< -@@ -13857,7 +13857,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc - __pyx_v_pipe = mpv_get_wakeup_pipe(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":732 -+ /* "vidcutter/libs/pympv/mpv.pyx":734 - * assert self._ctx - * cdef int pipe - * with nogil: # <<<<<<<<<<<<<< -@@ -13876,7 +13876,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":734 -+ /* "vidcutter/libs/pympv/mpv.pyx":736 - * with nogil: - * pipe = mpv_get_wakeup_pipe(self._ctx) - * return pipe # <<<<<<<<<<<<<< -@@ -13884,13 +13884,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc - * def __cinit__(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_pipe); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":728 -+ /* "vidcutter/libs/pympv/mpv.pyx":730 - * mpv_set_wakeup_callback(self._ctx, _c_callback, name) - * - * def get_wakeup_pipe(self): # <<<<<<<<<<<<<< -@@ -13909,7 +13909,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_30get_wakeup_pipe(struc - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":736 -+/* "vidcutter/libs/pympv/mpv.pyx":738 - * return pipe - * - * def __cinit__(self): # <<<<<<<<<<<<<< -@@ -13947,20 +13947,20 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":737 -+ /* "vidcutter/libs/pympv/mpv.pyx":739 - * - * def __cinit__(self): - * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< - * with nogil: - * self._ctx = mpv_create() - */ -- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 737, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 737, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 739, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_ctxid = ((uint64_t)__pyx_t_2); - -- /* "vidcutter/libs/pympv/mpv.pyx":738 -+ /* "vidcutter/libs/pympv/mpv.pyx":740 - * def __cinit__(self): - * cdef uint64_t ctxid = id(self) - * with nogil: # <<<<<<<<<<<<<< -@@ -13975,7 +13975,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":739 -+ /* "vidcutter/libs/pympv/mpv.pyx":741 - * cdef uint64_t ctxid = id(self) - * with nogil: - * self._ctx = mpv_create() # <<<<<<<<<<<<<< -@@ -13985,7 +13985,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - __pyx_v_self->_ctx = mpv_create(); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":738 -+ /* "vidcutter/libs/pympv/mpv.pyx":740 - * def __cinit__(self): - * cdef uint64_t ctxid = id(self) - * with nogil: # <<<<<<<<<<<<<< -@@ -14004,7 +14004,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":740 -+ /* "vidcutter/libs/pympv/mpv.pyx":742 - * with nogil: - * self._ctx = mpv_create() - * if not self._ctx: # <<<<<<<<<<<<<< -@@ -14014,14 +14014,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - __pyx_t_3 = ((!(__pyx_v_self->_ctx != 0)) != 0); - if (unlikely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":741 -+ /* "vidcutter/libs/pympv/mpv.pyx":743 - * self._ctx = mpv_create() - * if not self._ctx: - * raise MPVError("Context creation error") # <<<<<<<<<<<<<< - * self.callbackthread = CallbackThread() - * _callbacks[ctxid] = self.callbackthread - */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 741, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -@@ -14035,14 +14035,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - } - __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_Context_creation_error) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Context_creation_error); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 741, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 741, __pyx_L1_error) -+ __PYX_ERR(0, 743, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":740 -+ /* "vidcutter/libs/pympv/mpv.pyx":742 - * with nogil: - * self._ctx = mpv_create() - * if not self._ctx: # <<<<<<<<<<<<<< -@@ -14051,14 +14051,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":742 -+ /* "vidcutter/libs/pympv/mpv.pyx":744 - * if not self._ctx: - * raise MPVError("Context creation error") - * self.callbackthread = CallbackThread() # <<<<<<<<<<<<<< - * _callbacks[ctxid] = self.callbackthread - * self.reply_userdata = dict() - */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CallbackThread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 742, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CallbackThread); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 744, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -@@ -14072,7 +14072,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - } - __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_1); -@@ -14081,7 +14081,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - __pyx_v_self->callbackthread = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":743 -+ /* "vidcutter/libs/pympv/mpv.pyx":745 - * raise MPVError("Context creation error") - * self.callbackthread = CallbackThread() - * _callbacks[ctxid] = self.callbackthread # <<<<<<<<<<<<<< -@@ -14090,17 +14090,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - */ - __pyx_t_1 = __pyx_v_self->callbackthread; - __Pyx_INCREF(__pyx_t_1); -- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 743, __pyx_L1_error) -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 745, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":744 -+ /* "vidcutter/libs/pympv/mpv.pyx":746 - * self.callbackthread = CallbackThread() - * _callbacks[ctxid] = self.callbackthread - * self.reply_userdata = dict() # <<<<<<<<<<<<<< - * _reply_userdatas[ctxid] = self.reply_userdata - * self.callbackthread.start() - */ -- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->reply_userdata); -@@ -14108,7 +14108,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - __pyx_v_self->reply_userdata = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":745 -+ /* "vidcutter/libs/pympv/mpv.pyx":747 - * _callbacks[ctxid] = self.callbackthread - * self.reply_userdata = dict() - * _reply_userdatas[ctxid] = self.reply_userdata # <<<<<<<<<<<<<< -@@ -14117,17 +14117,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - */ - __pyx_t_1 = __pyx_v_self->reply_userdata; - __Pyx_INCREF(__pyx_t_1); -- if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 745, __pyx_L1_error) -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, __pyx_t_1, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 747, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":746 -+ /* "vidcutter/libs/pympv/mpv.pyx":748 - * self.reply_userdata = dict() - * _reply_userdatas[ctxid] = self.reply_userdata - * self.callbackthread.start() # <<<<<<<<<<<<<< - * - * @_errors - */ -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 746, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 748, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { -@@ -14141,12 +14141,12 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - } - __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 748, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":736 -+ /* "vidcutter/libs/pympv/mpv.pyx":738 - * return pipe - * - * def __cinit__(self): # <<<<<<<<<<<<<< -@@ -14168,7 +14168,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_7Context_32__cinit__(struct __pyx_obj_ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":749 -+/* "vidcutter/libs/pympv/mpv.pyx":751 - * - * @_errors - * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< -@@ -14216,7 +14216,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property(PyOb - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "observe_property") < 0)) __PYX_ERR(0, 749, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "observe_property") < 0)) __PYX_ERR(0, 751, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -14232,7 +14232,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_7Context_35observe_property(PyOb - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("observe_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 749, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("observe_property", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 751, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.Context.observe_property", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -14268,7 +14268,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - __Pyx_RefNannySetupContext("observe_property", 0); - __Pyx_INCREF(__pyx_v_prop); - -- /* "vidcutter/libs/pympv/mpv.pyx":751 -+ /* "vidcutter/libs/pympv/mpv.pyx":753 - * def observe_property(self, prop, data=None): - * """Wraps: mpv_observe_property""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -14279,41 +14279,41 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 751, __pyx_L1_error) -+ __PYX_ERR(0, 753, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":752 -+ /* "vidcutter/libs/pympv/mpv.pyx":754 - * """Wraps: mpv_observe_property""" - * assert self._ctx - * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< - * id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) - */ -- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 752, __pyx_L1_error) -+ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 754, __pyx_L1_error) - __pyx_v_id_data = ((uint64_t)__pyx_t_1); - -- /* "vidcutter/libs/pympv/mpv.pyx":753 -+ /* "vidcutter/libs/pympv/mpv.pyx":755 - * assert self._ctx - * cdef uint64_t id_data = hash(data) - * id_data = hash(data) # <<<<<<<<<<<<<< - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is None: - */ -- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 753, __pyx_L1_error) -+ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 755, __pyx_L1_error) - __pyx_v_id_data = ((uint64_t)__pyx_t_1); - -- /* "vidcutter/libs/pympv/mpv.pyx":754 -+ /* "vidcutter/libs/pympv/mpv.pyx":756 - * cdef uint64_t id_data = hash(data) - * id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< - * if userdatas is None: - * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) - */ -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; -@@ -14330,7 +14330,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -@@ -14339,14 +14339,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { -- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; -@@ -14357,7 +14357,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); - __pyx_t_4 = 0; -- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } -@@ -14365,7 +14365,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - __pyx_v_userdatas = __pyx_t_2; - __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":755 -+ /* "vidcutter/libs/pympv/mpv.pyx":757 - * id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is None: # <<<<<<<<<<<<<< -@@ -14376,14 +14376,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - __pyx_t_9 = (__pyx_t_8 != 0); - if (__pyx_t_9) { - -- /* "vidcutter/libs/pympv/mpv.pyx":756 -+ /* "vidcutter/libs/pympv/mpv.pyx":758 - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is None: - * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) # <<<<<<<<<<<<<< - * userdatas.observed = True - * prop = _strenc(prop) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ReplyUserData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -@@ -14397,15 +14397,15 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - } - __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_data); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_2, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 756, __pyx_L1_error) -+ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, __pyx_t_2, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 758, __pyx_L1_error) - __Pyx_INCREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_userdatas, __pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":755 -+ /* "vidcutter/libs/pympv/mpv.pyx":757 - * id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is None: # <<<<<<<<<<<<<< -@@ -14414,23 +14414,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":757 -+ /* "vidcutter/libs/pympv/mpv.pyx":759 - * if userdatas is None: - * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) - * userdatas.observed = True # <<<<<<<<<<<<<< - * prop = _strenc(prop) - * cdef char* propc = prop - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_True) < 0) __PYX_ERR(0, 757, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_True) < 0) __PYX_ERR(0, 759, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":758 -+ /* "vidcutter/libs/pympv/mpv.pyx":760 - * self.reply_userdata[id_data] = userdatas = _ReplyUserData(data) - * userdatas.observed = True - * prop = _strenc(prop) # <<<<<<<<<<<<<< - * cdef char* propc = prop - * cdef int err - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strenc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_strenc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 760, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -@@ -14444,23 +14444,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - } - __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_v_prop) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_prop); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 760, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF_SET(__pyx_v_prop, __pyx_t_2); - __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":759 -+ /* "vidcutter/libs/pympv/mpv.pyx":761 - * userdatas.observed = True - * prop = _strenc(prop) - * cdef char* propc = prop # <<<<<<<<<<<<<< - * cdef int err - * with nogil: - */ -- __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 759, __pyx_L1_error) -+ __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_v_prop); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 761, __pyx_L1_error) - __pyx_v_propc = __pyx_t_10; - -- /* "vidcutter/libs/pympv/mpv.pyx":761 -+ /* "vidcutter/libs/pympv/mpv.pyx":763 - * cdef char* propc = prop - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -14475,7 +14475,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":762 -+ /* "vidcutter/libs/pympv/mpv.pyx":764 - * cdef int err - * with nogil: - * err = mpv_observe_property( # <<<<<<<<<<<<<< -@@ -14485,7 +14485,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - __pyx_v_err = mpv_observe_property(__pyx_v_self->_ctx, __pyx_v_id_data, __pyx_v_propc, MPV_FORMAT_NODE); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":761 -+ /* "vidcutter/libs/pympv/mpv.pyx":763 - * cdef char* propc = prop - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -14504,7 +14504,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":768 -+ /* "vidcutter/libs/pympv/mpv.pyx":770 - * MPV_FORMAT_NODE, - * ) - * return err # <<<<<<<<<<<<<< -@@ -14512,13 +14512,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 770, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":749 -+ /* "vidcutter/libs/pympv/mpv.pyx":751 - * - * @_errors - * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< -@@ -14543,7 +14543,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_34observe_property(stru - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":771 -+/* "vidcutter/libs/pympv/mpv.pyx":773 - * - * @_errors - * def unobserve_property(self, data): # <<<<<<<<<<<<<< -@@ -14585,7 +14585,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("unobserve_property", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":773 -+ /* "vidcutter/libs/pympv/mpv.pyx":775 - * def unobserve_property(self, data): - * """Wraps: mpv_unobserve_property""" - * assert self._ctx # <<<<<<<<<<<<<< -@@ -14596,31 +14596,31 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_self->_ctx != 0))) { - PyErr_SetNone(PyExc_AssertionError); -- __PYX_ERR(0, 773, __pyx_L1_error) -+ __PYX_ERR(0, 775, __pyx_L1_error) - } - } - #endif - -- /* "vidcutter/libs/pympv/mpv.pyx":774 -+ /* "vidcutter/libs/pympv/mpv.pyx":776 - * """Wraps: mpv_unobserve_property""" - * assert self._ctx - * cdef uint64_t id_data = hash(data) # <<<<<<<<<<<<<< - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is not None: - */ -- __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 774, __pyx_L1_error) -+ __pyx_t_1 = PyObject_Hash(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 776, __pyx_L1_error) - __pyx_v_id_data = ((uint64_t)__pyx_t_1); - -- /* "vidcutter/libs/pympv/mpv.pyx":775 -+ /* "vidcutter/libs/pympv/mpv.pyx":777 - * assert self._ctx - * cdef uint64_t id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) # <<<<<<<<<<<<<< - * if userdatas is not None: - * userdatas.observed = False - */ -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->reply_userdata, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_id_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; -@@ -14637,7 +14637,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -@@ -14646,14 +14646,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, Py_None}; -- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { -- __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; -@@ -14664,7 +14664,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, Py_None); - __pyx_t_4 = 0; -- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } -@@ -14672,7 +14672,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - __pyx_v_userdatas = __pyx_t_2; - __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":776 -+ /* "vidcutter/libs/pympv/mpv.pyx":778 - * cdef uint64_t id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is not None: # <<<<<<<<<<<<<< -@@ -14683,40 +14683,40 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - __pyx_t_9 = (__pyx_t_8 != 0); - if (__pyx_t_9) { - -- /* "vidcutter/libs/pympv/mpv.pyx":777 -+ /* "vidcutter/libs/pympv/mpv.pyx":779 - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is not None: - * userdatas.observed = False # <<<<<<<<<<<<<< - * if userdatas.counter <= 0: - * del self.reply_userdata[id_data] - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 777, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_userdatas, __pyx_n_s_observed, Py_False) < 0) __PYX_ERR(0, 779, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":778 -+ /* "vidcutter/libs/pympv/mpv.pyx":780 - * if userdatas is not None: - * userdatas.observed = False - * if userdatas.counter <= 0: # <<<<<<<<<<<<<< - * del self.reply_userdata[id_data] - * cdef int err - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_counter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 778, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_userdatas, __pyx_n_s_counter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 780, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 778, __pyx_L1_error) -+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 780, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 778, __pyx_L1_error) -+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 780, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_9) { - -- /* "vidcutter/libs/pympv/mpv.pyx":779 -+ /* "vidcutter/libs/pympv/mpv.pyx":781 - * userdatas.observed = False - * if userdatas.counter <= 0: - * del self.reply_userdata[id_data] # <<<<<<<<<<<<<< - * cdef int err - * with nogil: - */ -- if (unlikely(__Pyx_DelItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 779, __pyx_L1_error) -+ if (unlikely(__Pyx_DelItemInt(__pyx_v_self->reply_userdata, __pyx_v_id_data, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 781, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":778 -+ /* "vidcutter/libs/pympv/mpv.pyx":780 - * if userdatas is not None: - * userdatas.observed = False - * if userdatas.counter <= 0: # <<<<<<<<<<<<<< -@@ -14725,7 +14725,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":776 -+ /* "vidcutter/libs/pympv/mpv.pyx":778 - * cdef uint64_t id_data = hash(data) - * userdatas = self.reply_userdata.get(id_data, None) - * if userdatas is not None: # <<<<<<<<<<<<<< -@@ -14734,7 +14734,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":781 -+ /* "vidcutter/libs/pympv/mpv.pyx":783 - * del self.reply_userdata[id_data] - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -14749,7 +14749,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":782 -+ /* "vidcutter/libs/pympv/mpv.pyx":784 - * cdef int err - * with nogil: - * err = mpv_unobserve_property( # <<<<<<<<<<<<<< -@@ -14759,7 +14759,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - __pyx_v_err = mpv_unobserve_property(__pyx_v_self->_ctx, __pyx_v_id_data); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":781 -+ /* "vidcutter/libs/pympv/mpv.pyx":783 - * del self.reply_userdata[id_data] - * cdef int err - * with nogil: # <<<<<<<<<<<<<< -@@ -14778,7 +14778,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":786 -+ /* "vidcutter/libs/pympv/mpv.pyx":788 - * id_data, - * ) - * return err # <<<<<<<<<<<<<< -@@ -14786,13 +14786,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - * def shutdown(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 786, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 788, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":771 -+ /* "vidcutter/libs/pympv/mpv.pyx":773 - * - * @_errors - * def unobserve_property(self, data): # <<<<<<<<<<<<<< -@@ -14816,7 +14816,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_36unobserve_property(st - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":788 -+/* "vidcutter/libs/pympv/mpv.pyx":790 - * return err - * - * def shutdown(self): # <<<<<<<<<<<<<< -@@ -14851,7 +14851,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("shutdown", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":789 -+ /* "vidcutter/libs/pympv/mpv.pyx":791 - * - * def shutdown(self): - * if self._ctx == NULL: # <<<<<<<<<<<<<< -@@ -14861,7 +14861,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - __pyx_t_1 = ((__pyx_v_self->_ctx == NULL) != 0); - if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":790 -+ /* "vidcutter/libs/pympv/mpv.pyx":792 - * def shutdown(self): - * if self._ctx == NULL: - * return # <<<<<<<<<<<<<< -@@ -14872,7 +14872,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":789 -+ /* "vidcutter/libs/pympv/mpv.pyx":791 - * - * def shutdown(self): - * if self._ctx == NULL: # <<<<<<<<<<<<<< -@@ -14881,20 +14881,20 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":791 -+ /* "vidcutter/libs/pympv/mpv.pyx":793 - * if self._ctx == NULL: - * return - * cdef uint64_t ctxid = id(self) # <<<<<<<<<<<<<< - * with nogil: - * mpv_terminate_destroy(self._ctx) - */ -- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 793, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 791, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_3 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 793, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_ctxid = ((uint64_t)__pyx_t_3); - -- /* "vidcutter/libs/pympv/mpv.pyx":792 -+ /* "vidcutter/libs/pympv/mpv.pyx":794 - * return - * cdef uint64_t ctxid = id(self) - * with nogil: # <<<<<<<<<<<<<< -@@ -14909,7 +14909,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":793 -+ /* "vidcutter/libs/pympv/mpv.pyx":795 - * cdef uint64_t ctxid = id(self) - * with nogil: - * mpv_terminate_destroy(self._ctx) # <<<<<<<<<<<<<< -@@ -14919,7 +14919,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - mpv_terminate_destroy(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":792 -+ /* "vidcutter/libs/pympv/mpv.pyx":794 - * return - * cdef uint64_t ctxid = id(self) - * with nogil: # <<<<<<<<<<<<<< -@@ -14938,14 +14938,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":794 -+ /* "vidcutter/libs/pympv/mpv.pyx":796 - * with nogil: - * mpv_terminate_destroy(self._ctx) - * self.callbackthread.shutdown() # <<<<<<<<<<<<<< - * del _callbacks[ctxid] - * del _reply_userdatas[ctxid] - */ -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 794, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->callbackthread, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 796, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { -@@ -14959,30 +14959,30 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - } - __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error) -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":795 -+ /* "vidcutter/libs/pympv/mpv.pyx":797 - * mpv_terminate_destroy(self._ctx) - * self.callbackthread.shutdown() - * del _callbacks[ctxid] # <<<<<<<<<<<<<< - * del _reply_userdatas[ctxid] - * self.callback = None - */ -- if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 795, __pyx_L1_error) -+ if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 797, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":796 -+ /* "vidcutter/libs/pympv/mpv.pyx":798 - * self.callbackthread.shutdown() - * del _callbacks[ctxid] - * del _reply_userdatas[ctxid] # <<<<<<<<<<<<<< - * self.callback = None - * self.reply_userdata = None - */ -- if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 796, __pyx_L1_error) -+ if (unlikely(__Pyx_DelItemInt(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_v_ctxid, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 798, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":797 -+ /* "vidcutter/libs/pympv/mpv.pyx":799 - * del _callbacks[ctxid] - * del _reply_userdatas[ctxid] - * self.callback = None # <<<<<<<<<<<<<< -@@ -14995,7 +14995,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - __Pyx_DECREF(__pyx_v_self->callback); - __pyx_v_self->callback = Py_None; - -- /* "vidcutter/libs/pympv/mpv.pyx":798 -+ /* "vidcutter/libs/pympv/mpv.pyx":800 - * del _reply_userdatas[ctxid] - * self.callback = None - * self.reply_userdata = None # <<<<<<<<<<<<<< -@@ -15008,7 +15008,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - __Pyx_DECREF(__pyx_v_self->reply_userdata); - __pyx_v_self->reply_userdata = Py_None; - -- /* "vidcutter/libs/pympv/mpv.pyx":799 -+ /* "vidcutter/libs/pympv/mpv.pyx":801 - * self.callback = None - * self.reply_userdata = None - * self._ctx = NULL # <<<<<<<<<<<<<< -@@ -15017,7 +15017,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - */ - __pyx_v_self->_ctx = NULL; - -- /* "vidcutter/libs/pympv/mpv.pyx":788 -+ /* "vidcutter/libs/pympv/mpv.pyx":790 - * return err - * - * def shutdown(self): # <<<<<<<<<<<<<< -@@ -15040,7 +15040,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_38shutdown(struct __pyx - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":813 -+/* "vidcutter/libs/pympv/mpv.pyx":815 - * # return ctx - * - * def __dealloc__(self): # <<<<<<<<<<<<<< -@@ -15069,14 +15069,14 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(struct __pyx_o - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__dealloc__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":814 -+ /* "vidcutter/libs/pympv/mpv.pyx":816 - * - * def __dealloc__(self): - * self.shutdown() # <<<<<<<<<<<<<< - * - * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 814, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -15090,12 +15090,12 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_7Context_40__dealloc__(struct __pyx_o - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":813 -+ /* "vidcutter/libs/pympv/mpv.pyx":815 - * # return ctx - * - * def __dealloc__(self): # <<<<<<<<<<<<<< -@@ -15227,7 +15227,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_7Context_44__setstate_cython__(C - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":816 -+/* "vidcutter/libs/pympv/mpv.pyx":818 - * self.shutdown() - * - * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< -@@ -15251,14 +15251,14 @@ static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, - #endif - __Pyx_RefNannySetupContext("_c_getprocaddress", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":817 -+ /* "vidcutter/libs/pympv/mpv.pyx":819 - * - * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: - * return (ctx)(name) # <<<<<<<<<<<<<< - * - * cdef void _c_updatecb(void *ctx) with gil: - */ -- __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 819, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_ctx)); - __pyx_t_3 = ((PyObject *)__pyx_v_ctx); __pyx_t_4 = NULL; -@@ -15274,15 +15274,15 @@ static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 819, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 817, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 819, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = ((void *)((intptr_t)__pyx_t_5)); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":816 -+ /* "vidcutter/libs/pympv/mpv.pyx":818 - * self.shutdown() - * - * cdef void *_c_getprocaddress(void *ctx, const char *name) with gil: # <<<<<<<<<<<<<< -@@ -15306,7 +15306,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress(void *__pyx_v_ctx, - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":819 -+/* "vidcutter/libs/pympv/mpv.pyx":821 - * return (ctx)(name) - * - * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< -@@ -15327,7 +15327,7 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { - #endif - __Pyx_RefNannySetupContext("_c_updatecb", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":820 -+ /* "vidcutter/libs/pympv/mpv.pyx":822 - * - * cdef void _c_updatecb(void *ctx) with gil: - * (ctx)() # <<<<<<<<<<<<<< -@@ -15347,12 +15347,12 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 820, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 822, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":819 -+ /* "vidcutter/libs/pympv/mpv.pyx":821 - * return (ctx)(name) - * - * cdef void _c_updatecb(void *ctx) with gil: # <<<<<<<<<<<<<< -@@ -15374,7 +15374,7 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_updatecb(void *__pyx_v_ctx) { - #endif - } - --/* "vidcutter/libs/pympv/mpv.pyx":886 -+/* "vidcutter/libs/pympv/mpv.pyx":888 - * object owned - * - * def __init__(self): # <<<<<<<<<<<<<< -@@ -15407,14 +15407,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__init__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":887 -+ /* "vidcutter/libs/pympv/mpv.pyx":889 - * - * def __init__(self): - * self.owned = [] # <<<<<<<<<<<<<< - * self.params[0].type = MPV_RENDER_PARAM_INVALID - * - */ -- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error) -+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 889, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->owned); -@@ -15422,7 +15422,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_ - __pyx_v_self->owned = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":888 -+ /* "vidcutter/libs/pympv/mpv.pyx":890 - * def __init__(self): - * self.owned = [] - * self.params[0].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< -@@ -15431,7 +15431,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_ - */ - (__pyx_v_self->params[0]).type = MPV_RENDER_PARAM_INVALID; - -- /* "vidcutter/libs/pympv/mpv.pyx":886 -+ /* "vidcutter/libs/pympv/mpv.pyx":888 - * object owned - * - * def __init__(self): # <<<<<<<<<<<<<< -@@ -15451,7 +15451,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams___init__(struct __pyx_ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":890 -+/* "vidcutter/libs/pympv/mpv.pyx":892 - * self.params[0].type = MPV_RENDER_PARAM_INVALID - * - * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< -@@ -15480,7 +15480,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":891 -+ /* "vidcutter/libs/pympv/mpv.pyx":893 - * - * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): - * count = len(self.owned) # <<<<<<<<<<<<<< -@@ -15489,26 +15489,26 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct - */ - __pyx_t_1 = __pyx_v_self->owned; - __Pyx_INCREF(__pyx_t_1); -- __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 891, __pyx_L1_error) -+ __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 893, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error) -+ __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 893, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_count = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":892 -+ /* "vidcutter/libs/pympv/mpv.pyx":894 - * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): - * count = len(self.owned) - * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< - * if owned: - * free(p) - */ -- __pyx_t_1 = PyObject_RichCompare(__pyx_v_count, __pyx_int_32, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 892, __pyx_L1_error) -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 892, __pyx_L1_error) -+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_count, __pyx_int_32, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 894, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_3) { - -- /* "vidcutter/libs/pympv/mpv.pyx":893 -+ /* "vidcutter/libs/pympv/mpv.pyx":895 - * count = len(self.owned) - * if count >= MAX_RENDER_PARAMS: - * if owned: # <<<<<<<<<<<<<< -@@ -15518,7 +15518,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct - __pyx_t_3 = (__pyx_v_owned != 0); - if (__pyx_t_3) { - -- /* "vidcutter/libs/pympv/mpv.pyx":894 -+ /* "vidcutter/libs/pympv/mpv.pyx":896 - * if count >= MAX_RENDER_PARAMS: - * if owned: - * free(p) # <<<<<<<<<<<<<< -@@ -15527,7 +15527,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct - */ - free(__pyx_v_p); - -- /* "vidcutter/libs/pympv/mpv.pyx":893 -+ /* "vidcutter/libs/pympv/mpv.pyx":895 - * count = len(self.owned) - * if count >= MAX_RENDER_PARAMS: - * if owned: # <<<<<<<<<<<<<< -@@ -15536,14 +15536,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":895 -+ /* "vidcutter/libs/pympv/mpv.pyx":897 - * if owned: - * free(p) - * raise PyMPVError("RenderParams overflow") # <<<<<<<<<<<<<< - * - * self.params[count].type = t - */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 895, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -@@ -15557,14 +15557,14 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct - } - __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_RenderParams_overflow) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_RenderParams_overflow); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 897, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __PYX_ERR(0, 895, __pyx_L1_error) -+ __PYX_ERR(0, 897, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":892 -+ /* "vidcutter/libs/pympv/mpv.pyx":894 - * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): - * count = len(self.owned) - * if count >= MAX_RENDER_PARAMS: # <<<<<<<<<<<<<< -@@ -15573,52 +15573,52 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":897 -+ /* "vidcutter/libs/pympv/mpv.pyx":899 - * raise PyMPVError("RenderParams overflow") - * - * self.params[count].type = t # <<<<<<<<<<<<<< - * self.params[count].data = p - * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID - */ -- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 897, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 899, __pyx_L1_error) - (__pyx_v_self->params[__pyx_t_2]).type = __pyx_v_t; - -- /* "vidcutter/libs/pympv/mpv.pyx":898 -+ /* "vidcutter/libs/pympv/mpv.pyx":900 - * - * self.params[count].type = t - * self.params[count].data = p # <<<<<<<<<<<<<< - * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID - * self.owned.append(owned) - */ -- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 898, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_count); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 900, __pyx_L1_error) - (__pyx_v_self->params[__pyx_t_2]).data = __pyx_v_p; - -- /* "vidcutter/libs/pympv/mpv.pyx":899 -+ /* "vidcutter/libs/pympv/mpv.pyx":901 - * self.params[count].type = t - * self.params[count].data = p - * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID # <<<<<<<<<<<<<< - * self.owned.append(owned) - * - */ -- __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_count, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_count, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 901, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 899, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 901, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - (__pyx_v_self->params[__pyx_t_2]).type = MPV_RENDER_PARAM_INVALID; - -- /* "vidcutter/libs/pympv/mpv.pyx":900 -+ /* "vidcutter/libs/pympv/mpv.pyx":902 - * self.params[count].data = p - * self.params[count + 1].type = MPV_RENDER_PARAM_INVALID - * self.owned.append(owned) # <<<<<<<<<<<<<< - * - * cdef add_int(self, mpv_render_param_type t, int val): - */ -- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_owned); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 900, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_owned); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->owned, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 900, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->owned, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 902, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":890 -+ /* "vidcutter/libs/pympv/mpv.pyx":892 - * self.params[0].type = MPV_RENDER_PARAM_INVALID - * - * cdef add_voidp(self, mpv_render_param_type t, void *p, bint owned=False): # <<<<<<<<<<<<<< -@@ -15642,7 +15642,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp(struct - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":902 -+/* "vidcutter/libs/pympv/mpv.pyx":904 - * self.owned.append(owned) - * - * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< -@@ -15660,7 +15660,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("add_int", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":903 -+ /* "vidcutter/libs/pympv/mpv.pyx":905 - * - * cdef add_int(self, mpv_render_param_type t, int val): - * cdef int *p = malloc(sizeof(int)) # <<<<<<<<<<<<<< -@@ -15669,7 +15669,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __ - */ - __pyx_v_p = ((int *)malloc((sizeof(int)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":904 -+ /* "vidcutter/libs/pympv/mpv.pyx":906 - * cdef add_int(self, mpv_render_param_type t, int val): - * cdef int *p = malloc(sizeof(int)) - * p[0] = val # <<<<<<<<<<<<<< -@@ -15678,18 +15678,18 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __ - */ - (__pyx_v_p[0]) = __pyx_v_val; - -- /* "vidcutter/libs/pympv/mpv.pyx":905 -+ /* "vidcutter/libs/pympv/mpv.pyx":907 - * cdef int *p = malloc(sizeof(int)) - * p[0] = val - * self.add_voidp(t, p) # <<<<<<<<<<<<<< - * - * cdef add_string(self, mpv_render_param_type t, char *s): - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 907, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":902 -+ /* "vidcutter/libs/pympv/mpv.pyx":904 - * self.owned.append(owned) - * - * cdef add_int(self, mpv_render_param_type t, int val): # <<<<<<<<<<<<<< -@@ -15710,7 +15710,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int(struct __ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":907 -+/* "vidcutter/libs/pympv/mpv.pyx":909 - * self.add_voidp(t, p) - * - * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< -@@ -15728,7 +15728,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("add_string", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":908 -+ /* "vidcutter/libs/pympv/mpv.pyx":910 - * - * cdef add_string(self, mpv_render_param_type t, char *s): - * cdef char *p = malloc(strlen(s) + 1) # <<<<<<<<<<<<<< -@@ -15737,7 +15737,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct - */ - __pyx_v_p = ((char *)malloc((strlen(__pyx_v_s) + 1))); - -- /* "vidcutter/libs/pympv/mpv.pyx":909 -+ /* "vidcutter/libs/pympv/mpv.pyx":911 - * cdef add_string(self, mpv_render_param_type t, char *s): - * cdef char *p = malloc(strlen(s) + 1) - * strcpy(p, s) # <<<<<<<<<<<<<< -@@ -15746,18 +15746,18 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct - */ - (void)(strcpy(__pyx_v_p, __pyx_v_s)); - -- /* "vidcutter/libs/pympv/mpv.pyx":910 -+ /* "vidcutter/libs/pympv/mpv.pyx":912 - * cdef char *p = malloc(strlen(s) + 1) - * strcpy(p, s) - * self.add_voidp(t, p) # <<<<<<<<<<<<<< - * - * def __dealloc__(self): - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_self->__pyx_vtab)->add_voidp(__pyx_v_self, __pyx_v_t, __pyx_v_p, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 912, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":907 -+ /* "vidcutter/libs/pympv/mpv.pyx":909 - * self.add_voidp(t, p) - * - * cdef add_string(self, mpv_render_param_type t, char *s): # <<<<<<<<<<<<<< -@@ -15778,7 +15778,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string(struct - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":912 -+/* "vidcutter/libs/pympv/mpv.pyx":914 - * self.add_voidp(t, p) - * - * def __dealloc__(self): # <<<<<<<<<<<<<< -@@ -15813,7 +15813,7 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__dealloc__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":913 -+ /* "vidcutter/libs/pympv/mpv.pyx":915 - * - * def __dealloc__(self): - * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< -@@ -15826,26 +15826,26 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ - __pyx_t_2 = __pyx_v_self->owned; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; - __pyx_t_4 = NULL; - } else { -- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->owned); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->owned); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_4)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 915, __pyx_L1_error) - #else -- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 915, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } else { - if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 915, __pyx_L1_error) - #else -- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 915, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } -@@ -15855,7 +15855,7 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); -- else __PYX_ERR(0, 913, __pyx_L1_error) -+ else __PYX_ERR(0, 915, __pyx_L1_error) - } - break; - } -@@ -15865,33 +15865,33 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); -- __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 915, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); - __pyx_t_1 = __pyx_t_5; - __pyx_t_5 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":914 -+ /* "vidcutter/libs/pympv/mpv.pyx":916 - * def __dealloc__(self): - * for i, j in enumerate(self.owned): - * if j: # <<<<<<<<<<<<<< - * free(self.params[i].data) - * - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_j); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 914, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_j); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 916, __pyx_L1_error) - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":915 -+ /* "vidcutter/libs/pympv/mpv.pyx":917 - * for i, j in enumerate(self.owned): - * if j: - * free(self.params[i].data) # <<<<<<<<<<<<<< - * - * cdef void *get_pointer(const char *name, object obj): - */ -- __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 917, __pyx_L1_error) - free((__pyx_v_self->params[__pyx_t_7]).data); - -- /* "vidcutter/libs/pympv/mpv.pyx":914 -+ /* "vidcutter/libs/pympv/mpv.pyx":916 - * def __dealloc__(self): - * for i, j in enumerate(self.owned): - * if j: # <<<<<<<<<<<<<< -@@ -15900,7 +15900,7 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":913 -+ /* "vidcutter/libs/pympv/mpv.pyx":915 - * - * def __dealloc__(self): - * for i, j in enumerate(self.owned): # <<<<<<<<<<<<<< -@@ -15911,7 +15911,7 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_2__dealloc__(struct _ - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":912 -+ /* "vidcutter/libs/pympv/mpv.pyx":914 - * self.add_voidp(t, p) - * - * def __dealloc__(self): # <<<<<<<<<<<<<< -@@ -16045,7 +16045,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13_RenderParams_6__setstate_cyth - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":917 -+/* "vidcutter/libs/pympv/mpv.pyx":919 - * free(self.params[i].data) - * - * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< -@@ -16071,7 +16071,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_pointer", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":919 -+ /* "vidcutter/libs/pympv/mpv.pyx":921 - * cdef void *get_pointer(const char *name, object obj): - * cdef void *p - * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< -@@ -16081,17 +16081,17 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, - __pyx_t_1 = (PyCapsule_IsValid(__pyx_v_obj, __pyx_v_name) != 0); - if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":920 -+ /* "vidcutter/libs/pympv/mpv.pyx":922 - * cdef void *p - * if PyCapsule_IsValid(obj, name): - * p = PyCapsule_GetPointer(obj, name) # <<<<<<<<<<<<<< - * elif isinstance(obj, int) or isinstance(obj, long) and obj: - * p = obj - */ -- __pyx_t_2 = PyCapsule_GetPointer(__pyx_v_obj, __pyx_v_name); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 920, __pyx_L1_error) -+ __pyx_t_2 = PyCapsule_GetPointer(__pyx_v_obj, __pyx_v_name); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) - __pyx_v_p = __pyx_t_2; - -- /* "vidcutter/libs/pympv/mpv.pyx":919 -+ /* "vidcutter/libs/pympv/mpv.pyx":921 - * cdef void *get_pointer(const char *name, object obj): - * cdef void *p - * if PyCapsule_IsValid(obj, name): # <<<<<<<<<<<<<< -@@ -16101,7 +16101,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, - goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":921 -+ /* "vidcutter/libs/pympv/mpv.pyx":923 - * if PyCapsule_IsValid(obj, name): - * p = PyCapsule_GetPointer(obj, name) - * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< -@@ -16122,22 +16122,22 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, - __pyx_t_1 = __pyx_t_3; - goto __pyx_L4_bool_binop_done; - } -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 921, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 923, __pyx_L1_error) - __pyx_t_1 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (likely(__pyx_t_1)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":922 -+ /* "vidcutter/libs/pympv/mpv.pyx":924 - * p = PyCapsule_GetPointer(obj, name) - * elif isinstance(obj, int) or isinstance(obj, long) and obj: - * p = obj # <<<<<<<<<<<<<< - * else: - * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) - */ -- __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_v_obj); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 922, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyInt_As_intptr_t(__pyx_v_obj); if (unlikely((__pyx_t_5 == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 924, __pyx_L1_error) - __pyx_v_p = ((void *)((intptr_t)__pyx_t_5)); - -- /* "vidcutter/libs/pympv/mpv.pyx":921 -+ /* "vidcutter/libs/pympv/mpv.pyx":923 - * if PyCapsule_IsValid(obj, name): - * p = PyCapsule_GetPointer(obj, name) - * elif isinstance(obj, int) or isinstance(obj, long) and obj: # <<<<<<<<<<<<<< -@@ -16147,7 +16147,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, - goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":924 -+ /* "vidcutter/libs/pympv/mpv.pyx":926 - * p = obj - * else: - * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) # <<<<<<<<<<<<<< -@@ -16155,9 +16155,9 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, - * - */ - /*else*/ { -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_v_obj); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 924, __pyx_L1_error) -+ __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_or_invalid_pointer_objec, __pyx_v_obj); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 926, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { -@@ -16172,16 +16172,16 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, - __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -- if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 924, __pyx_L1_error) -+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 926, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_Raise(__pyx_t_6, 0, 0, 0); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- __PYX_ERR(0, 924, __pyx_L1_error) -+ __PYX_ERR(0, 926, __pyx_L1_error) - } - __pyx_L3:; - -- /* "vidcutter/libs/pympv/mpv.pyx":925 -+ /* "vidcutter/libs/pympv/mpv.pyx":927 - * else: - * raise PyMPVError("Unknown or invalid pointer object: %r" % obj) - * return p # <<<<<<<<<<<<<< -@@ -16191,7 +16191,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, - __pyx_r = __pyx_v_p; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":917 -+ /* "vidcutter/libs/pympv/mpv.pyx":919 - * free(self.params[i].data) - * - * cdef void *get_pointer(const char *name, object obj): # <<<<<<<<<<<<<< -@@ -16212,7 +16212,7 @@ static void *__pyx_f_9vidcutter_4libs_3mpv_get_pointer(char const *__pyx_v_name, - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":929 -+/* "vidcutter/libs/pympv/mpv.pyx":931 - * @cython.internal - * cdef class RenderFrameInfo(object): - * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< -@@ -16230,83 +16230,83 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(st - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_from_struct", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":930 -+ /* "vidcutter/libs/pympv/mpv.pyx":932 - * cdef class RenderFrameInfo(object): - * cdef _from_struct(self, mpv_render_frame_info *info): - * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) # <<<<<<<<<<<<<< - * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) - * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) - */ -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_PRESENT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_PRESENT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 930, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 932, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_present, __pyx_t_1) < 0) __PYX_ERR(0, 930, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_present, __pyx_t_1) < 0) __PYX_ERR(0, 932, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":931 -+ /* "vidcutter/libs/pympv/mpv.pyx":933 - * cdef _from_struct(self, mpv_render_frame_info *info): - * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) - * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) # <<<<<<<<<<<<<< - * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) - * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) - */ -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REDRAW)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REDRAW)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 931, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redraw, __pyx_t_1) < 0) __PYX_ERR(0, 931, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redraw, __pyx_t_1) < 0) __PYX_ERR(0, 933, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":932 -+ /* "vidcutter/libs/pympv/mpv.pyx":934 - * self.present = bool(info[0].flags & MPV_RENDER_FRAME_INFO_PRESENT) - * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) - * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) # <<<<<<<<<<<<<< - * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) - * self.target_time = info[0].target_time - */ -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REPEAT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_REPEAT)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 932, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 934, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repeat, __pyx_t_1) < 0) __PYX_ERR(0, 932, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repeat, __pyx_t_1) < 0) __PYX_ERR(0, 934, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":933 -+ /* "vidcutter/libs/pympv/mpv.pyx":935 - * self.redraw = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REDRAW) - * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) - * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) # <<<<<<<<<<<<<< - * self.target_time = info[0].target_time - * return self - */ -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(((__pyx_v_info[0]).flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 935, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 935, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 935, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_block_vsync, __pyx_t_1) < 0) __PYX_ERR(0, 933, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_block_vsync, __pyx_t_1) < 0) __PYX_ERR(0, 935, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":934 -+ /* "vidcutter/libs/pympv/mpv.pyx":936 - * self.repeat = bool(info[0].flags & MPV_RENDER_FRAME_INFO_REPEAT) - * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) - * self.target_time = info[0].target_time # <<<<<<<<<<<<<< - * return self - * - */ -- __pyx_t_1 = __Pyx_PyInt_From_int64_t((__pyx_v_info[0]).target_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int64_t((__pyx_v_info[0]).target_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target_time, __pyx_t_1) < 0) __PYX_ERR(0, 934, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target_time, __pyx_t_1) < 0) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":935 -+ /* "vidcutter/libs/pympv/mpv.pyx":937 - * self.block_vsync = bool(info[0].flags & MPV_RENDER_FRAME_INFO_BLOCK_VSYNC) - * self.target_time = info[0].target_time - * return self # <<<<<<<<<<<<<< -@@ -16318,7 +16318,7 @@ static PyObject *__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct(st - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":929 -+ /* "vidcutter/libs/pympv/mpv.pyx":931 - * @cython.internal - * cdef class RenderFrameInfo(object): - * cdef _from_struct(self, mpv_render_frame_info *info): # <<<<<<<<<<<<<< -@@ -16624,7 +16624,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_15RenderFrameInfo_2__setstate_cy - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":950 -+/* "vidcutter/libs/pympv/mpv.pyx":952 - * bint inited - * - * def __init__(self, mpv, # <<<<<<<<<<<<<< -@@ -16653,7 +16653,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mpv,&__pyx_n_s_api_type,&__pyx_n_s_opengl_init_params,&__pyx_n_s_advanced_control,&__pyx_n_s_x11_display,&__pyx_n_s_wl_display,&__pyx_n_s_drm_display,&__pyx_n_s_drm_osd_size,0}; - PyObject* values[8] = {0,0,0,0,0,0,0,0}; - -- /* "vidcutter/libs/pympv/mpv.pyx":952 -+ /* "vidcutter/libs/pympv/mpv.pyx":954 - * def __init__(self, mpv, - * api_type, - * opengl_init_params=None, # <<<<<<<<<<<<<< -@@ -16662,7 +16662,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - */ - values[2] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":953 -+ /* "vidcutter/libs/pympv/mpv.pyx":955 - * api_type, - * opengl_init_params=None, - * advanced_control=False, # <<<<<<<<<<<<<< -@@ -16671,7 +16671,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - */ - values[3] = ((PyObject *)Py_False); - -- /* "vidcutter/libs/pympv/mpv.pyx":954 -+ /* "vidcutter/libs/pympv/mpv.pyx":956 - * opengl_init_params=None, - * advanced_control=False, - * x11_display=None, # <<<<<<<<<<<<<< -@@ -16680,7 +16680,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - */ - values[4] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":955 -+ /* "vidcutter/libs/pympv/mpv.pyx":957 - * advanced_control=False, - * x11_display=None, - * wl_display=None, # <<<<<<<<<<<<<< -@@ -16689,7 +16689,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - */ - values[5] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":956 -+ /* "vidcutter/libs/pympv/mpv.pyx":958 - * x11_display=None, - * wl_display=None, - * drm_display=None, # <<<<<<<<<<<<<< -@@ -16698,7 +16698,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - */ - values[6] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":957 -+ /* "vidcutter/libs/pympv/mpv.pyx":959 - * wl_display=None, - * drm_display=None, - * drm_osd_size=None # <<<<<<<<<<<<<< -@@ -16738,7 +16738,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_api_type)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, 1); __PYX_ERR(0, 950, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, 1); __PYX_ERR(0, 952, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: -@@ -16778,7 +16778,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 950, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 952, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -16811,7 +16811,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 950, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 952, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -16819,7 +16819,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_1__init__(PyObject *__ - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_mpv, __pyx_v_api_type, __pyx_v_opengl_init_params, __pyx_v_advanced_control, __pyx_v_x11_display, __pyx_v_wl_display, __pyx_v_drm_display, __pyx_v_drm_osd_size); - -- /* "vidcutter/libs/pympv/mpv.pyx":950 -+ /* "vidcutter/libs/pympv/mpv.pyx":952 - * bint inited - * - * def __init__(self, mpv, # <<<<<<<<<<<<<< -@@ -16856,14 +16856,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__init__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":965 -+ /* "vidcutter/libs/pympv/mpv.pyx":967 - * mpv_opengl_drm_osd_size _drm_osd_size - * - * self._mpv = mpv # <<<<<<<<<<<<<< - * - * memset(&gl_params, 0, sizeof(gl_params)) - */ -- if (!(likely(((__pyx_v_mpv) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_mpv, __pyx_ptype_9vidcutter_4libs_3mpv_Context))))) __PYX_ERR(0, 965, __pyx_L1_error) -+ if (!(likely(((__pyx_v_mpv) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_mpv, __pyx_ptype_9vidcutter_4libs_3mpv_Context))))) __PYX_ERR(0, 967, __pyx_L1_error) - __pyx_t_1 = __pyx_v_mpv; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); -@@ -16872,7 +16872,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __pyx_v_self->_mpv = ((struct __pyx_obj_9vidcutter_4libs_3mpv_Context *)__pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":967 -+ /* "vidcutter/libs/pympv/mpv.pyx":969 - * self._mpv = mpv - * - * memset(&gl_params, 0, sizeof(gl_params)) # <<<<<<<<<<<<<< -@@ -16881,7 +16881,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - (void)(memset((&__pyx_v_gl_params), 0, (sizeof(__pyx_v_gl_params)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":968 -+ /* "vidcutter/libs/pympv/mpv.pyx":970 - * - * memset(&gl_params, 0, sizeof(gl_params)) - * memset(&drm_params, 0, sizeof(drm_params)) # <<<<<<<<<<<<<< -@@ -16890,7 +16890,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - (void)(memset((&__pyx_v_drm_params), 0, (sizeof(__pyx_v_drm_params)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":969 -+ /* "vidcutter/libs/pympv/mpv.pyx":971 - * memset(&gl_params, 0, sizeof(gl_params)) - * memset(&drm_params, 0, sizeof(drm_params)) - * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) # <<<<<<<<<<<<<< -@@ -16899,45 +16899,45 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - (void)(memset((&__pyx_v__drm_osd_size), 0, (sizeof(__pyx_v__drm_osd_size)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":971 -+ /* "vidcutter/libs/pympv/mpv.pyx":973 - * memset(&_drm_osd_size, 0, sizeof(_drm_osd_size)) - * - * params = _RenderParams() # <<<<<<<<<<<<<< - * - * if api_type == self.API_OPENGL: - */ -- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":973 -+ /* "vidcutter/libs/pympv/mpv.pyx":975 - * params = _RenderParams() - * - * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< - * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) - * else: - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_RichCompare(__pyx_v_api_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error) -+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_api_type, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 973, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 975, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (likely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":974 -+ /* "vidcutter/libs/pympv/mpv.pyx":976 - * - * if api_type == self.API_OPENGL: - * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) # <<<<<<<<<<<<<< - * else: - * raise PyMPVError("Unknown api_type %r" % api_type) - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_string(__pyx_v_params, MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_string(__pyx_v_params, MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":973 -+ /* "vidcutter/libs/pympv/mpv.pyx":975 - * params = _RenderParams() - * - * if api_type == self.API_OPENGL: # <<<<<<<<<<<<<< -@@ -16947,7 +16947,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - goto __pyx_L3; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":976 -+ /* "vidcutter/libs/pympv/mpv.pyx":978 - * params.add_string(MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL) - * else: - * raise PyMPVError("Unknown api_type %r" % api_type) # <<<<<<<<<<<<<< -@@ -16955,9 +16955,9 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - * if opengl_init_params is not None: - */ - /*else*/ { -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 978, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_api_type_r, __pyx_v_api_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 976, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unknown_api_type_r, __pyx_v_api_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 978, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { -@@ -16972,16 +16972,16 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 978, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __PYX_ERR(0, 976, __pyx_L1_error) -+ __PYX_ERR(0, 978, __pyx_L1_error) - } - __pyx_L3:; - -- /* "vidcutter/libs/pympv/mpv.pyx":978 -+ /* "vidcutter/libs/pympv/mpv.pyx":980 - * raise PyMPVError("Unknown api_type %r" % api_type) - * - * if opengl_init_params is not None: # <<<<<<<<<<<<<< -@@ -16992,14 +16992,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __pyx_t_6 = (__pyx_t_3 != 0); - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":979 -+ /* "vidcutter/libs/pympv/mpv.pyx":981 - * - * if opengl_init_params is not None: - * self._get_proc_address = opengl_init_params["get_proc_address"] # <<<<<<<<<<<<<< - * gl_params.get_proc_address = &_c_getprocaddress - * gl_params.get_proc_address_ctx = self._get_proc_address - */ -- __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_init_params, __pyx_n_s_get_proc_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_init_params, __pyx_n_s_get_proc_address); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 981, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_v_self->_get_proc_address); -@@ -17007,7 +17007,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __pyx_v_self->_get_proc_address = __pyx_t_2; - __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":980 -+ /* "vidcutter/libs/pympv/mpv.pyx":982 - * if opengl_init_params is not None: - * self._get_proc_address = opengl_init_params["get_proc_address"] - * gl_params.get_proc_address = &_c_getprocaddress # <<<<<<<<<<<<<< -@@ -17016,7 +17016,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - __pyx_v_gl_params.get_proc_address = (&__pyx_f_9vidcutter_4libs_3mpv__c_getprocaddress); - -- /* "vidcutter/libs/pympv/mpv.pyx":981 -+ /* "vidcutter/libs/pympv/mpv.pyx":983 - * self._get_proc_address = opengl_init_params["get_proc_address"] - * gl_params.get_proc_address = &_c_getprocaddress - * gl_params.get_proc_address_ctx = self._get_proc_address # <<<<<<<<<<<<<< -@@ -17025,18 +17025,18 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - __pyx_v_gl_params.get_proc_address_ctx = ((void *)__pyx_v_self->_get_proc_address); - -- /* "vidcutter/libs/pympv/mpv.pyx":982 -+ /* "vidcutter/libs/pympv/mpv.pyx":984 - * gl_params.get_proc_address = &_c_getprocaddress - * gl_params.get_proc_address_ctx = self._get_proc_address - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) # <<<<<<<<<<<<<< - * if advanced_control: - * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, (&__pyx_v_gl_params), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 982, __pyx_L1_error) -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, (&__pyx_v_gl_params), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 984, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":978 -+ /* "vidcutter/libs/pympv/mpv.pyx":980 - * raise PyMPVError("Unknown api_type %r" % api_type) - * - * if opengl_init_params is not None: # <<<<<<<<<<<<<< -@@ -17045,28 +17045,28 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":983 -+ /* "vidcutter/libs/pympv/mpv.pyx":985 - * gl_params.get_proc_address_ctx = self._get_proc_address - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) - * if advanced_control: # <<<<<<<<<<<<<< - * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) - * if x11_display: - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_advanced_control); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 983, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_advanced_control); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 985, __pyx_L1_error) - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":984 -+ /* "vidcutter/libs/pympv/mpv.pyx":986 - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) - * if advanced_control: - * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) # <<<<<<<<<<<<<< - * if x11_display: - * self._x11_display = x11_display - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_ADVANCED_CONTROL, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 984, __pyx_L1_error) -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_ADVANCED_CONTROL, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":983 -+ /* "vidcutter/libs/pympv/mpv.pyx":985 - * gl_params.get_proc_address_ctx = self._get_proc_address - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_params) - * if advanced_control: # <<<<<<<<<<<<<< -@@ -17075,17 +17075,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":985 -+ /* "vidcutter/libs/pympv/mpv.pyx":987 - * if advanced_control: - * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) - * if x11_display: # <<<<<<<<<<<<<< - * self._x11_display = x11_display - * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_x11_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 985, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_x11_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 987, __pyx_L1_error) - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":986 -+ /* "vidcutter/libs/pympv/mpv.pyx":988 - * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) - * if x11_display: - * self._x11_display = x11_display # <<<<<<<<<<<<<< -@@ -17098,18 +17098,18 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __Pyx_DECREF(__pyx_v_self->_x11_display); - __pyx_v_self->_x11_display = __pyx_v_x11_display; - -- /* "vidcutter/libs/pympv/mpv.pyx":987 -+ /* "vidcutter/libs/pympv/mpv.pyx":989 - * if x11_display: - * self._x11_display = x11_display - * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) # <<<<<<<<<<<<<< - * if wl_display: - * self._wl_display = wl_display - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_X11_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"Display"), __pyx_v_x11_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 987, __pyx_L1_error) -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_X11_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"Display"), __pyx_v_x11_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":985 -+ /* "vidcutter/libs/pympv/mpv.pyx":987 - * if advanced_control: - * params.add_int(MPV_RENDER_PARAM_ADVANCED_CONTROL, 1) - * if x11_display: # <<<<<<<<<<<<<< -@@ -17118,17 +17118,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":988 -+ /* "vidcutter/libs/pympv/mpv.pyx":990 - * self._x11_display = x11_display - * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) - * if wl_display: # <<<<<<<<<<<<<< - * self._wl_display = wl_display - * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_wl_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 988, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_wl_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 990, __pyx_L1_error) - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":989 -+ /* "vidcutter/libs/pympv/mpv.pyx":991 - * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) - * if wl_display: - * self._wl_display = wl_display # <<<<<<<<<<<<<< -@@ -17141,18 +17141,18 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __Pyx_DECREF(__pyx_v_self->_wl_display); - __pyx_v_self->_wl_display = __pyx_v_wl_display; - -- /* "vidcutter/libs/pympv/mpv.pyx":990 -+ /* "vidcutter/libs/pympv/mpv.pyx":992 - * if wl_display: - * self._wl_display = wl_display - * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) # <<<<<<<<<<<<<< - * if drm_display: - * drm_params.fd = drm_display.get("fd", -1) - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_WL_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"wl_display"), __pyx_v_wl_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_WL_DISPLAY, __pyx_f_9vidcutter_4libs_3mpv_get_pointer(((char const *)"wl_display"), __pyx_v_wl_display), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":988 -+ /* "vidcutter/libs/pympv/mpv.pyx":990 - * self._x11_display = x11_display - * params.add_voidp(MPV_RENDER_PARAM_X11_DISPLAY, get_pointer("Display", x11_display)) - * if wl_display: # <<<<<<<<<<<<<< -@@ -17161,80 +17161,80 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":991 -+ /* "vidcutter/libs/pympv/mpv.pyx":993 - * self._wl_display = wl_display - * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) - * if drm_display: # <<<<<<<<<<<<<< - * drm_params.fd = drm_display.get("fd", -1) - * drm_params.crtc_id = drm_display.get("crtc_id", -1) - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_drm_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 991, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_drm_display); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 993, __pyx_L1_error) - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":992 -+ /* "vidcutter/libs/pympv/mpv.pyx":994 - * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) - * if drm_display: - * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< - * drm_params.crtc_id = drm_display.get("crtc_id", -1) - * drm_params.connector_id = drm_display.get("connector_id", -1) - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 992, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 994, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_drm_params.fd = __pyx_t_7; - -- /* "vidcutter/libs/pympv/mpv.pyx":993 -+ /* "vidcutter/libs/pympv/mpv.pyx":995 - * if drm_display: - * drm_params.fd = drm_display.get("fd", -1) - * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< - * drm_params.connector_id = drm_display.get("connector_id", -1) - * arp = drm_display.get("atomic_request_ptr", None) - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 993, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 995, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_drm_params.crtc_id = __pyx_t_7; - -- /* "vidcutter/libs/pympv/mpv.pyx":994 -+ /* "vidcutter/libs/pympv/mpv.pyx":996 - * drm_params.fd = drm_display.get("fd", -1) - * drm_params.crtc_id = drm_display.get("crtc_id", -1) - * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< - * arp = drm_display.get("atomic_request_ptr", None) - * if arp is not None: - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 996, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 996, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 994, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 996, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_drm_params.connector_id = __pyx_t_7; - -- /* "vidcutter/libs/pympv/mpv.pyx":995 -+ /* "vidcutter/libs/pympv/mpv.pyx":997 - * drm_params.crtc_id = drm_display.get("crtc_id", -1) - * drm_params.connector_id = drm_display.get("connector_id", -1) - * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< - * if arp is not None: - * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 997, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 997, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_arp = __pyx_t_2; - __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":996 -+ /* "vidcutter/libs/pympv/mpv.pyx":998 - * drm_params.connector_id = drm_display.get("connector_id", -1) - * arp = drm_display.get("atomic_request_ptr", None) - * if arp is not None: # <<<<<<<<<<<<<< -@@ -17245,17 +17245,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __pyx_t_3 = (__pyx_t_6 != 0); - if (__pyx_t_3) { - -- /* "vidcutter/libs/pympv/mpv.pyx":997 -+ /* "vidcutter/libs/pympv/mpv.pyx":999 - * arp = drm_display.get("atomic_request_ptr", None) - * if arp is not None: - * 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) - */ -- __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_arp); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 997, __pyx_L1_error) -+ __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_arp); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 999, __pyx_L1_error) - __pyx_v_drm_params.atomic_request_ptr = ((struct _drmModeAtomicReq **)__pyx_f_9vidcutter_4libs_3mpv_get_pointer(__pyx_t_8, __pyx_kp_s_drmModeAtomicReq)); - -- /* "vidcutter/libs/pympv/mpv.pyx":996 -+ /* "vidcutter/libs/pympv/mpv.pyx":998 - * drm_params.connector_id = drm_display.get("connector_id", -1) - * arp = drm_display.get("atomic_request_ptr", None) - * if arp is not None: # <<<<<<<<<<<<<< -@@ -17264,34 +17264,34 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":998 -+ /* "vidcutter/libs/pympv/mpv.pyx":1000 - * if arp is not None: - * 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: - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 998, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_drm_display, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1000, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 998, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1000, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_drm_params.render_fd = __pyx_t_7; - -- /* "vidcutter/libs/pympv/mpv.pyx":999 -+ /* "vidcutter/libs/pympv/mpv.pyx":1001 - * 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 - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_DISPLAY, (&__pyx_v_drm_params), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_DISPLAY, (&__pyx_v_drm_params), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":991 -+ /* "vidcutter/libs/pympv/mpv.pyx":993 - * self._wl_display = wl_display - * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) - * if drm_display: # <<<<<<<<<<<<<< -@@ -17300,17 +17300,17 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1000 -+ /* "vidcutter/libs/pympv/mpv.pyx":1002 - * 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) - */ -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_drm_osd_size); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1000, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_drm_osd_size); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1002, __pyx_L1_error) - if (__pyx_t_3) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1001 -+ /* "vidcutter/libs/pympv/mpv.pyx":1003 - * 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 # <<<<<<<<<<<<<< -@@ -17323,7 +17323,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); -- __PYX_ERR(0, 1001, __pyx_L1_error) -+ __PYX_ERR(0, 1003, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { -@@ -17336,21 +17336,21 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_2); - #else -- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1003, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1003, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - #endif - } else { - Py_ssize_t index = -1; -- __pyx_t_4 = PyObject_GetIter(__pyx_v_drm_osd_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __pyx_t_4 = PyObject_GetIter(__pyx_v_drm_osd_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1003, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; - index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed; - __Pyx_GOTREF(__pyx_t_1); - index = 1; __pyx_t_2 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; - __Pyx_GOTREF(__pyx_t_2); -- if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1001, __pyx_L1_error) -+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1003, __pyx_L1_error) - __pyx_t_9 = NULL; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L12_unpacking_done; -@@ -17358,28 +17358,28 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_9 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); -- __PYX_ERR(0, 1001, __pyx_L1_error) -+ __PYX_ERR(0, 1003, __pyx_L1_error) - __pyx_L12_unpacking_done:; - } -- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1003, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1001, __pyx_L1_error) -+ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1003, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v__drm_osd_size.width = __pyx_t_7; - __pyx_v__drm_osd_size.height = __pyx_t_10; - -- /* "vidcutter/libs/pympv/mpv.pyx":1002 -+ /* "vidcutter/libs/pympv/mpv.pyx":1004 - * 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) # <<<<<<<<<<<<<< - * - * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) - */ -- __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_OSD_SIZE, (&__pyx_v__drm_osd_size), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1002, __pyx_L1_error) -+ __pyx_t_2 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_DRM_OSD_SIZE, (&__pyx_v__drm_osd_size), NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1004, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1000 -+ /* "vidcutter/libs/pympv/mpv.pyx":1002 - * drm_params.render_fd = drm_display.get("render_fd", -1) - * params.add_voidp(MPV_RENDER_PARAM_DRM_DISPLAY, &drm_params) - * if drm_osd_size: # <<<<<<<<<<<<<< -@@ -17388,7 +17388,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1004 -+ /* "vidcutter/libs/pympv/mpv.pyx":1006 - * params.add_voidp(MPV_RENDER_PARAM_DRM_OSD_SIZE, &_drm_osd_size) - * - * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) # <<<<<<<<<<<<<< -@@ -17397,7 +17397,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - __pyx_v_err = mpv_render_context_create((&__pyx_v_self->_ctx), __pyx_v_self->_mpv->_ctx, __pyx_v_params->params); - -- /* "vidcutter/libs/pympv/mpv.pyx":1005 -+ /* "vidcutter/libs/pympv/mpv.pyx":1007 - * - * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) - * if err < 0: # <<<<<<<<<<<<<< -@@ -17407,16 +17407,16 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __pyx_t_3 = ((__pyx_v_err < 0) != 0); - if (unlikely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1006 -+ /* "vidcutter/libs/pympv/mpv.pyx":1008 - * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) - * if err < 0: - * raise MPVError(err) # <<<<<<<<<<<<<< - * self.inited = True - * - */ -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1006, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1008, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1006, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1008, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { -@@ -17431,14 +17431,14 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1006, __pyx_L1_error) -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1008, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __PYX_ERR(0, 1006, __pyx_L1_error) -+ __PYX_ERR(0, 1008, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1005 -+ /* "vidcutter/libs/pympv/mpv.pyx":1007 - * - * err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params) - * if err < 0: # <<<<<<<<<<<<<< -@@ -17447,7 +17447,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1007 -+ /* "vidcutter/libs/pympv/mpv.pyx":1009 - * if err < 0: - * raise MPVError(err) - * self.inited = True # <<<<<<<<<<<<<< -@@ -17456,7 +17456,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - */ - __pyx_v_self->inited = 1; - -- /* "vidcutter/libs/pympv/mpv.pyx":950 -+ /* "vidcutter/libs/pympv/mpv.pyx":952 - * bint inited - * - * def __init__(self, mpv, # <<<<<<<<<<<<<< -@@ -17481,7 +17481,7 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext___init__(struct __pyx_ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1010 -+/* "vidcutter/libs/pympv/mpv.pyx":1012 - * - * @_errors - * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< -@@ -17520,7 +17520,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("set_icc_profile", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1016 -+ /* "vidcutter/libs/pympv/mpv.pyx":1018 - * int err - * - * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< -@@ -17531,14 +17531,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); - if (unlikely(__pyx_t_2)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1017 -+ /* "vidcutter/libs/pympv/mpv.pyx":1019 - * - * if not isinstance(icc_blob, bytes): - * raise PyMPVError("icc_blob should be a bytes instance") # <<<<<<<<<<<<<< - * val.data = icc_blob - * val.size = len(icc_blob) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1017, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PyMPVError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1019, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { -@@ -17552,14 +17552,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - } - __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_icc_blob_should_be_a_bytes_insta) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_icc_blob_should_be_a_bytes_insta); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; -- if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1017, __pyx_L1_error) -+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1019, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- __PYX_ERR(0, 1017, __pyx_L1_error) -+ __PYX_ERR(0, 1019, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1016 -+ /* "vidcutter/libs/pympv/mpv.pyx":1018 - * int err - * - * if not isinstance(icc_blob, bytes): # <<<<<<<<<<<<<< -@@ -17568,27 +17568,27 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1018 -+ /* "vidcutter/libs/pympv/mpv.pyx":1020 - * if not isinstance(icc_blob, bytes): - * raise PyMPVError("icc_blob should be a bytes instance") - * val.data = icc_blob # <<<<<<<<<<<<<< - * val.size = len(icc_blob) - * - */ -- __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_icc_blob); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1018, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_icc_blob); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1020, __pyx_L1_error) - __pyx_v_val.data = ((void *)((char *)__pyx_t_6)); - -- /* "vidcutter/libs/pympv/mpv.pyx":1019 -+ /* "vidcutter/libs/pympv/mpv.pyx":1021 - * raise PyMPVError("icc_blob should be a bytes instance") - * val.data = icc_blob - * val.size = len(icc_blob) # <<<<<<<<<<<<<< - * - * param.type = MPV_RENDER_PARAM_ICC_PROFILE - */ -- __pyx_t_7 = PyObject_Length(__pyx_v_icc_blob); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1019, __pyx_L1_error) -+ __pyx_t_7 = PyObject_Length(__pyx_v_icc_blob); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1021, __pyx_L1_error) - __pyx_v_val.size = __pyx_t_7; - -- /* "vidcutter/libs/pympv/mpv.pyx":1021 -+ /* "vidcutter/libs/pympv/mpv.pyx":1023 - * val.size = len(icc_blob) - * - * param.type = MPV_RENDER_PARAM_ICC_PROFILE # <<<<<<<<<<<<<< -@@ -17597,7 +17597,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - */ - __pyx_v_param.type = MPV_RENDER_PARAM_ICC_PROFILE; - -- /* "vidcutter/libs/pympv/mpv.pyx":1022 -+ /* "vidcutter/libs/pympv/mpv.pyx":1024 - * - * param.type = MPV_RENDER_PARAM_ICC_PROFILE - * param.data = &val # <<<<<<<<<<<<<< -@@ -17606,7 +17606,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - */ - __pyx_v_param.data = (&__pyx_v_val); - -- /* "vidcutter/libs/pympv/mpv.pyx":1024 -+ /* "vidcutter/libs/pympv/mpv.pyx":1026 - * param.data = &val - * - * with nogil: # <<<<<<<<<<<<<< -@@ -17621,7 +17621,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1025 -+ /* "vidcutter/libs/pympv/mpv.pyx":1027 - * - * with nogil: - * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< -@@ -17631,7 +17631,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1024 -+ /* "vidcutter/libs/pympv/mpv.pyx":1026 - * param.data = &val - * - * with nogil: # <<<<<<<<<<<<<< -@@ -17650,7 +17650,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1026 -+ /* "vidcutter/libs/pympv/mpv.pyx":1028 - * with nogil: - * err = mpv_render_context_set_parameter(self._ctx, param) - * return err # <<<<<<<<<<<<<< -@@ -17658,13 +17658,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1026, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1028, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1010 -+ /* "vidcutter/libs/pympv/mpv.pyx":1012 - * - * @_errors - * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< -@@ -17685,7 +17685,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_2set_icc_profile - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1029 -+/* "vidcutter/libs/pympv/mpv.pyx":1031 - * - * @_errors - * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< -@@ -17719,17 +17719,17 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("set_ambient_light", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1035 -+ /* "vidcutter/libs/pympv/mpv.pyx":1037 - * int err - * - * val = lux # <<<<<<<<<<<<<< - * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT - * param.data = &val - */ -- __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_lux); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1035, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_lux); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1037, __pyx_L1_error) - __pyx_v_val = __pyx_t_1; - -- /* "vidcutter/libs/pympv/mpv.pyx":1036 -+ /* "vidcutter/libs/pympv/mpv.pyx":1038 - * - * val = lux - * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT # <<<<<<<<<<<<<< -@@ -17738,7 +17738,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig - */ - __pyx_v_param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT; - -- /* "vidcutter/libs/pympv/mpv.pyx":1037 -+ /* "vidcutter/libs/pympv/mpv.pyx":1039 - * val = lux - * param.type = MPV_RENDER_PARAM_AMBIENT_LIGHT - * param.data = &val # <<<<<<<<<<<<<< -@@ -17747,7 +17747,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig - */ - __pyx_v_param.data = (&__pyx_v_val); - -- /* "vidcutter/libs/pympv/mpv.pyx":1039 -+ /* "vidcutter/libs/pympv/mpv.pyx":1041 - * param.data = &val - * - * with nogil: # <<<<<<<<<<<<<< -@@ -17762,7 +17762,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1040 -+ /* "vidcutter/libs/pympv/mpv.pyx":1042 - * - * with nogil: - * err = mpv_render_context_set_parameter(self._ctx, param) # <<<<<<<<<<<<<< -@@ -17772,7 +17772,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig - __pyx_v_err = mpv_render_context_set_parameter(__pyx_v_self->_ctx, __pyx_v_param); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1039 -+ /* "vidcutter/libs/pympv/mpv.pyx":1041 - * param.data = &val - * - * with nogil: # <<<<<<<<<<<<<< -@@ -17791,7 +17791,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1041 -+ /* "vidcutter/libs/pympv/mpv.pyx":1043 - * with nogil: - * err = mpv_render_context_set_parameter(self._ctx, param) - * return err # <<<<<<<<<<<<<< -@@ -17799,13 +17799,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig - * def get_next_frame_info(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1043, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1029 -+ /* "vidcutter/libs/pympv/mpv.pyx":1031 - * - * @_errors - * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< -@@ -17824,7 +17824,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_4set_ambient_lig - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1043 -+/* "vidcutter/libs/pympv/mpv.pyx":1045 - * return err - * - * def get_next_frame_info(self): # <<<<<<<<<<<<<< -@@ -17861,7 +17861,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_next_frame_info", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1048 -+ /* "vidcutter/libs/pympv/mpv.pyx":1050 - * mpv_render_param param - * - * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO # <<<<<<<<<<<<<< -@@ -17870,7 +17870,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - */ - __pyx_v_param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO; - -- /* "vidcutter/libs/pympv/mpv.pyx":1049 -+ /* "vidcutter/libs/pympv/mpv.pyx":1051 - * - * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO - * param.data = &info # <<<<<<<<<<<<<< -@@ -17879,7 +17879,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - */ - __pyx_v_param.data = (&__pyx_v_info); - -- /* "vidcutter/libs/pympv/mpv.pyx":1050 -+ /* "vidcutter/libs/pympv/mpv.pyx":1052 - * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO - * param.data = &info - * with nogil: # <<<<<<<<<<<<<< -@@ -17894,7 +17894,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1051 -+ /* "vidcutter/libs/pympv/mpv.pyx":1053 - * param.data = &info - * with nogil: - * err = mpv_render_context_get_info(self._ctx, param) # <<<<<<<<<<<<<< -@@ -17904,7 +17904,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - __pyx_v_err = mpv_render_context_get_info(__pyx_v_self->_ctx, __pyx_v_param); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1050 -+ /* "vidcutter/libs/pympv/mpv.pyx":1052 - * param.type = MPV_RENDER_PARAM_NEXT_FRAME_INFO - * param.data = &info - * with nogil: # <<<<<<<<<<<<<< -@@ -17923,7 +17923,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1052 -+ /* "vidcutter/libs/pympv/mpv.pyx":1054 - * with nogil: - * err = mpv_render_context_get_info(self._ctx, param) - * if err < 0: # <<<<<<<<<<<<<< -@@ -17933,16 +17933,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - __pyx_t_1 = ((__pyx_v_err < 0) != 0); - if (unlikely(__pyx_t_1)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1053 -+ /* "vidcutter/libs/pympv/mpv.pyx":1055 - * err = mpv_render_context_get_info(self._ctx, param) - * if err < 0: - * raise MPVError(err) # <<<<<<<<<<<<<< - * - * return RenderFrameInfo()._from_struct(&info) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MPVError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1053, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1055, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -@@ -17957,14 +17957,14 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error) -+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -- __PYX_ERR(0, 1053, __pyx_L1_error) -+ __PYX_ERR(0, 1055, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1052 -+ /* "vidcutter/libs/pympv/mpv.pyx":1054 - * with nogil: - * err = mpv_render_context_get_info(self._ctx, param) - * if err < 0: # <<<<<<<<<<<<<< -@@ -17973,7 +17973,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1055 -+ /* "vidcutter/libs/pympv/mpv.pyx":1057 - * raise MPVError(err) - * - * return RenderFrameInfo()._from_struct(&info) # <<<<<<<<<<<<<< -@@ -17981,16 +17981,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - * def set_update_callback(self, cb): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1057, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo *)((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2)->__pyx_vtab)->_from_struct(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2), (&__pyx_v_info)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error) -+ __pyx_t_3 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv_RenderFrameInfo *)((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2)->__pyx_vtab)->_from_struct(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *)__pyx_t_2), (&__pyx_v_info)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1057, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1043 -+ /* "vidcutter/libs/pympv/mpv.pyx":1045 - * return err - * - * def get_next_frame_info(self): # <<<<<<<<<<<<<< -@@ -18012,7 +18012,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_6get_next_frame_ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1057 -+/* "vidcutter/libs/pympv/mpv.pyx":1059 - * return RenderFrameInfo()._from_struct(&info) - * - * def set_update_callback(self, cb): # <<<<<<<<<<<<<< -@@ -18038,7 +18038,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_update_callback", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1058 -+ /* "vidcutter/libs/pympv/mpv.pyx":1060 - * - * def set_update_callback(self, cb): - * with nogil: # <<<<<<<<<<<<<< -@@ -18053,7 +18053,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1059 -+ /* "vidcutter/libs/pympv/mpv.pyx":1061 - * def set_update_callback(self, cb): - * with nogil: - * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) # <<<<<<<<<<<<<< -@@ -18063,7 +18063,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call - mpv_render_context_set_update_callback(__pyx_v_self->_ctx, (&__pyx_f_9vidcutter_4libs_3mpv__c_updatecb), ((void *)__pyx_v_cb)); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1058 -+ /* "vidcutter/libs/pympv/mpv.pyx":1060 - * - * def set_update_callback(self, cb): - * with nogil: # <<<<<<<<<<<<<< -@@ -18082,7 +18082,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1060 -+ /* "vidcutter/libs/pympv/mpv.pyx":1062 - * with nogil: - * mpv_render_context_set_update_callback(self._ctx, &_c_updatecb, cb) - * self.update_cb = cb # <<<<<<<<<<<<<< -@@ -18095,7 +18095,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call - __Pyx_DECREF(__pyx_v_self->update_cb); - __pyx_v_self->update_cb = __pyx_v_cb; - -- /* "vidcutter/libs/pympv/mpv.pyx":1057 -+ /* "vidcutter/libs/pympv/mpv.pyx":1059 - * return RenderFrameInfo()._from_struct(&info) - * - * def set_update_callback(self, cb): # <<<<<<<<<<<<<< -@@ -18110,7 +18110,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_8set_update_call - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1062 -+/* "vidcutter/libs/pympv/mpv.pyx":1064 - * self.update_cb = cb - * - * def update(self): # <<<<<<<<<<<<<< -@@ -18141,7 +18141,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("update", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1064 -+ /* "vidcutter/libs/pympv/mpv.pyx":1066 - * def update(self): - * cdef uint64_t ret - * with nogil: # <<<<<<<<<<<<<< -@@ -18156,7 +18156,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1065 -+ /* "vidcutter/libs/pympv/mpv.pyx":1067 - * cdef uint64_t ret - * with nogil: - * ret = mpv_render_context_update(self._ctx) # <<<<<<<<<<<<<< -@@ -18166,7 +18166,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct - __pyx_v_ret = mpv_render_context_update(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1064 -+ /* "vidcutter/libs/pympv/mpv.pyx":1066 - * def update(self): - * cdef uint64_t ret - * with nogil: # <<<<<<<<<<<<<< -@@ -18185,7 +18185,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1066 -+ /* "vidcutter/libs/pympv/mpv.pyx":1068 - * with nogil: - * ret = mpv_render_context_update(self._ctx) - * return ret # <<<<<<<<<<<<<< -@@ -18193,13 +18193,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct - * @_errors - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1068, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1062 -+ /* "vidcutter/libs/pympv/mpv.pyx":1064 - * self.update_cb = cb - * - * def update(self): # <<<<<<<<<<<<<< -@@ -18218,7 +18218,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_10update(struct - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1069 -+/* "vidcutter/libs/pympv/mpv.pyx":1071 - * - * @_errors - * def render(self, # <<<<<<<<<<<<<< -@@ -18244,7 +18244,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_opengl_fbo,&__pyx_n_s_flip_y,&__pyx_n_s_depth,&__pyx_n_s_block_for_target_time,&__pyx_n_s_skip_rendering,0}; - PyObject* values[5] = {0,0,0,0,0}; - -- /* "vidcutter/libs/pympv/mpv.pyx":1070 -+ /* "vidcutter/libs/pympv/mpv.pyx":1072 - * @_errors - * def render(self, - * opengl_fbo=None, # <<<<<<<<<<<<<< -@@ -18253,7 +18253,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec - */ - values[0] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":1071 -+ /* "vidcutter/libs/pympv/mpv.pyx":1073 - * def render(self, - * opengl_fbo=None, - * flip_y=False, # <<<<<<<<<<<<<< -@@ -18262,7 +18262,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec - */ - values[1] = ((PyObject *)Py_False); - -- /* "vidcutter/libs/pympv/mpv.pyx":1072 -+ /* "vidcutter/libs/pympv/mpv.pyx":1074 - * opengl_fbo=None, - * flip_y=False, - * depth=None, # <<<<<<<<<<<<<< -@@ -18271,7 +18271,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec - */ - values[2] = ((PyObject *)Py_None); - -- /* "vidcutter/libs/pympv/mpv.pyx":1073 -+ /* "vidcutter/libs/pympv/mpv.pyx":1075 - * flip_y=False, - * depth=None, - * block_for_target_time=True, # <<<<<<<<<<<<<< -@@ -18280,7 +18280,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec - */ - values[3] = ((PyObject *)Py_True); - -- /* "vidcutter/libs/pympv/mpv.pyx":1074 -+ /* "vidcutter/libs/pympv/mpv.pyx":1076 - * depth=None, - * block_for_target_time=True, - * skip_rendering=False): # <<<<<<<<<<<<<< -@@ -18338,7 +18338,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(0, 1069, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "render") < 0)) __PYX_ERR(0, 1071, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { -@@ -18364,7 +18364,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("render", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1069, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("render", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1071, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.RenderContext.render", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -18372,7 +18372,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_13RenderContext_13render(PyObjec - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(((struct __pyx_obj_9vidcutter_4libs_3mpv_RenderContext *)__pyx_v_self), __pyx_v_opengl_fbo, __pyx_v_flip_y, __pyx_v_depth, __pyx_v_block_for_target_time, __pyx_v_skip_rendering); - -- /* "vidcutter/libs/pympv/mpv.pyx":1069 -+ /* "vidcutter/libs/pympv/mpv.pyx":1071 - * - * @_errors - * def render(self, # <<<<<<<<<<<<<< -@@ -18402,29 +18402,29 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("render", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1079 -+ /* "vidcutter/libs/pympv/mpv.pyx":1081 - * mpv_opengl_fbo fbo - * - * params = _RenderParams() # <<<<<<<<<<<<<< - * - * if opengl_fbo: - */ -- __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv__RenderParams)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1081, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_params = ((struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *)__pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1081 -+ /* "vidcutter/libs/pympv/mpv.pyx":1083 - * params = _RenderParams() - * - * if opengl_fbo: # <<<<<<<<<<<<<< - * memset(&fbo, 0, sizeof(fbo)) - * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 - */ -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_opengl_fbo); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1081, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_opengl_fbo); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1083, __pyx_L1_error) - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1082 -+ /* "vidcutter/libs/pympv/mpv.pyx":1084 - * - * if opengl_fbo: - * memset(&fbo, 0, sizeof(fbo)) # <<<<<<<<<<<<<< -@@ -18433,23 +18433,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - */ - (void)(memset((&__pyx_v_fbo), 0, (sizeof(__pyx_v_fbo)))); - -- /* "vidcutter/libs/pympv/mpv.pyx":1083 -+ /* "vidcutter/libs/pympv/mpv.pyx":1085 - * if opengl_fbo: - * memset(&fbo, 0, sizeof(fbo)) - * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< - * fbo.w = opengl_fbo["w"] - * fbo.h = opengl_fbo["h"] - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1083, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1085, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1083, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1085, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1083, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1085, __pyx_L1_error) - if (!__pyx_t_2) { - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { -- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1083, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1085, __pyx_L1_error) - __pyx_t_3 = __pyx_t_5; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L4_bool_binop_done; -@@ -18458,49 +18458,49 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - __pyx_L4_bool_binop_done:; - __pyx_v_fbo.fbo = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":1084 -+ /* "vidcutter/libs/pympv/mpv.pyx":1086 - * memset(&fbo, 0, sizeof(fbo)) - * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 - * fbo.w = opengl_fbo["w"] # <<<<<<<<<<<<<< - * fbo.h = opengl_fbo["h"] - * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 - */ -- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1084, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1086, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1084, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1086, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_fbo.w = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":1085 -+ /* "vidcutter/libs/pympv/mpv.pyx":1087 - * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 - * fbo.w = opengl_fbo["w"] - * fbo.h = opengl_fbo["h"] # <<<<<<<<<<<<<< - * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) - */ -- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1085, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_v_opengl_fbo, __pyx_n_s_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1087, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1085, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1087, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_fbo.h = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":1086 -+ /* "vidcutter/libs/pympv/mpv.pyx":1088 - * fbo.w = opengl_fbo["w"] - * fbo.h = opengl_fbo["h"] - * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) - * if flip_y: - */ -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1086, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_opengl_fbo, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1088, __pyx_L1_error) - if (!__pyx_t_2) { - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { -- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1086, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1088, __pyx_L1_error) - __pyx_t_3 = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L6_bool_binop_done; -@@ -18509,18 +18509,18 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - __pyx_L6_bool_binop_done:; - __pyx_v_fbo.internal_format = __pyx_t_3; - -- /* "vidcutter/libs/pympv/mpv.pyx":1087 -+ /* "vidcutter/libs/pympv/mpv.pyx":1089 - * fbo.h = opengl_fbo["h"] - * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) # <<<<<<<<<<<<<< - * if flip_y: - * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_FBO, (&__pyx_v_fbo), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_voidp(__pyx_v_params, MPV_RENDER_PARAM_OPENGL_FBO, (&__pyx_v_fbo), NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1081 -+ /* "vidcutter/libs/pympv/mpv.pyx":1083 - * params = _RenderParams() - * - * if opengl_fbo: # <<<<<<<<<<<<<< -@@ -18529,28 +18529,28 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1088 -+ /* "vidcutter/libs/pympv/mpv.pyx":1090 - * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) - * if flip_y: # <<<<<<<<<<<<<< - * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) - * if depth is not None: - */ -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_flip_y); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1088, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_flip_y); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1090, __pyx_L1_error) - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1089 -+ /* "vidcutter/libs/pympv/mpv.pyx":1091 - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) - * if flip_y: - * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) # <<<<<<<<<<<<<< - * if depth is not None: - * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_FLIP_Y, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_FLIP_Y, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1088 -+ /* "vidcutter/libs/pympv/mpv.pyx":1090 - * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) - * if flip_y: # <<<<<<<<<<<<<< -@@ -18559,7 +18559,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1090 -+ /* "vidcutter/libs/pympv/mpv.pyx":1092 - * if flip_y: - * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) - * if depth is not None: # <<<<<<<<<<<<<< -@@ -18570,19 +18570,19 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - __pyx_t_6 = (__pyx_t_2 != 0); - if (__pyx_t_6) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1091 -+ /* "vidcutter/libs/pympv/mpv.pyx":1093 - * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) - * if depth is not None: - * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) # <<<<<<<<<<<<<< - * if not block_for_target_time: - * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) - */ -- __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_depth); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1091, __pyx_L1_error) -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_DEPTH, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_depth); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1093, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_DEPTH, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1090 -+ /* "vidcutter/libs/pympv/mpv.pyx":1092 - * if flip_y: - * params.add_int(MPV_RENDER_PARAM_FLIP_Y, 1) - * if depth is not None: # <<<<<<<<<<<<<< -@@ -18591,29 +18591,29 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1092 -+ /* "vidcutter/libs/pympv/mpv.pyx":1094 - * if depth is not None: - * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) - * if not block_for_target_time: # <<<<<<<<<<<<<< - * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) - * if skip_rendering: - */ -- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_block_for_target_time); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1092, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_block_for_target_time); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error) - __pyx_t_2 = ((!__pyx_t_6) != 0); - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1093 -+ /* "vidcutter/libs/pympv/mpv.pyx":1095 - * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) - * if not block_for_target_time: - * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) # <<<<<<<<<<<<<< - * if skip_rendering: - * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1095, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1092 -+ /* "vidcutter/libs/pympv/mpv.pyx":1094 - * if depth is not None: - * params.add_int(MPV_RENDER_PARAM_DEPTH, depth) - * if not block_for_target_time: # <<<<<<<<<<<<<< -@@ -18622,28 +18622,28 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1094 -+ /* "vidcutter/libs/pympv/mpv.pyx":1096 - * if not block_for_target_time: - * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) - * if skip_rendering: # <<<<<<<<<<<<<< - * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) - * - */ -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skip_rendering); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1094, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_skip_rendering); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1096, __pyx_L1_error) - if (__pyx_t_2) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1095 -+ /* "vidcutter/libs/pympv/mpv.pyx":1097 - * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) - * if skip_rendering: - * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) # <<<<<<<<<<<<<< - * - * with nogil: - */ -- __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_SKIP_RENDERING, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1095, __pyx_L1_error) -+ __pyx_t_1 = ((struct __pyx_vtabstruct_9vidcutter_4libs_3mpv__RenderParams *)__pyx_v_params->__pyx_vtab)->add_int(__pyx_v_params, MPV_RENDER_PARAM_SKIP_RENDERING, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1097, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1094 -+ /* "vidcutter/libs/pympv/mpv.pyx":1096 - * if not block_for_target_time: - * params.add_int(MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME, 0) - * if skip_rendering: # <<<<<<<<<<<<<< -@@ -18652,7 +18652,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1097 -+ /* "vidcutter/libs/pympv/mpv.pyx":1099 - * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) - * - * with nogil: # <<<<<<<<<<<<<< -@@ -18667,7 +18667,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1098 -+ /* "vidcutter/libs/pympv/mpv.pyx":1100 - * - * with nogil: - * ret = mpv_render_context_render(self._ctx, params.params) # <<<<<<<<<<<<<< -@@ -18677,7 +18677,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - __pyx_v_ret = mpv_render_context_render(__pyx_v_self->_ctx, __pyx_v_params->params); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1097 -+ /* "vidcutter/libs/pympv/mpv.pyx":1099 - * params.add_int(MPV_RENDER_PARAM_SKIP_RENDERING, 1) - * - * with nogil: # <<<<<<<<<<<<<< -@@ -18696,7 +18696,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1099 -+ /* "vidcutter/libs/pympv/mpv.pyx":1101 - * with nogil: - * ret = mpv_render_context_render(self._ctx, params.params) - * return ret # <<<<<<<<<<<<<< -@@ -18704,13 +18704,13 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - * def report_swap(self): - */ - __Pyx_XDECREF(__pyx_r); -- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1069 -+ /* "vidcutter/libs/pympv/mpv.pyx":1071 - * - * @_errors - * def render(self, # <<<<<<<<<<<<<< -@@ -18731,7 +18731,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_12render(struct - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1101 -+/* "vidcutter/libs/pympv/mpv.pyx":1103 - * return ret - * - * def report_swap(self): # <<<<<<<<<<<<<< -@@ -18757,7 +18757,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("report_swap", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1102 -+ /* "vidcutter/libs/pympv/mpv.pyx":1104 - * - * def report_swap(self): - * with nogil: # <<<<<<<<<<<<<< -@@ -18772,7 +18772,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1103 -+ /* "vidcutter/libs/pympv/mpv.pyx":1105 - * def report_swap(self): - * with nogil: - * mpv_render_context_report_swap(self._ctx) # <<<<<<<<<<<<<< -@@ -18782,7 +18782,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st - mpv_render_context_report_swap(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1102 -+ /* "vidcutter/libs/pympv/mpv.pyx":1104 - * - * def report_swap(self): - * with nogil: # <<<<<<<<<<<<<< -@@ -18801,7 +18801,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1101 -+ /* "vidcutter/libs/pympv/mpv.pyx":1103 - * return ret - * - * def report_swap(self): # <<<<<<<<<<<<<< -@@ -18816,7 +18816,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_14report_swap(st - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1105 -+/* "vidcutter/libs/pympv/mpv.pyx":1107 - * mpv_render_context_report_swap(self._ctx) - * - * def free(self): # <<<<<<<<<<<<<< -@@ -18843,7 +18843,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ - int __pyx_t_1; - __Pyx_RefNannySetupContext("free", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1106 -+ /* "vidcutter/libs/pympv/mpv.pyx":1108 - * - * def free(self): - * if not self.inited: # <<<<<<<<<<<<<< -@@ -18853,7 +18853,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ - __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); - if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1107 -+ /* "vidcutter/libs/pympv/mpv.pyx":1109 - * def free(self): - * if not self.inited: - * return # <<<<<<<<<<<<<< -@@ -18864,7 +18864,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1106 -+ /* "vidcutter/libs/pympv/mpv.pyx":1108 - * - * def free(self): - * if not self.inited: # <<<<<<<<<<<<<< -@@ -18873,7 +18873,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1108 -+ /* "vidcutter/libs/pympv/mpv.pyx":1110 - * if not self.inited: - * return - * with nogil: # <<<<<<<<<<<<<< -@@ -18888,7 +18888,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1109 -+ /* "vidcutter/libs/pympv/mpv.pyx":1111 - * return - * with nogil: - * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< -@@ -18898,7 +18898,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ - mpv_render_context_free(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1108 -+ /* "vidcutter/libs/pympv/mpv.pyx":1110 - * if not self.inited: - * return - * with nogil: # <<<<<<<<<<<<<< -@@ -18917,7 +18917,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1110 -+ /* "vidcutter/libs/pympv/mpv.pyx":1112 - * with nogil: - * mpv_render_context_free(self._ctx) - * self.inited = False # <<<<<<<<<<<<<< -@@ -18926,7 +18926,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ - */ - __pyx_v_self->inited = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1105 -+ /* "vidcutter/libs/pympv/mpv.pyx":1107 - * mpv_render_context_report_swap(self._ctx) - * - * def free(self): # <<<<<<<<<<<<<< -@@ -18942,7 +18942,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_16free(struct __ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1112 -+/* "vidcutter/libs/pympv/mpv.pyx":1114 - * self.inited = False - * - * def close(self): # <<<<<<<<<<<<<< -@@ -18969,7 +18969,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ - int __pyx_t_1; - __Pyx_RefNannySetupContext("close", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1113 -+ /* "vidcutter/libs/pympv/mpv.pyx":1115 - * - * def close(self): - * if not self.inited: # <<<<<<<<<<<<<< -@@ -18979,7 +18979,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ - __pyx_t_1 = ((!(__pyx_v_self->inited != 0)) != 0); - if (__pyx_t_1) { - -- /* "vidcutter/libs/pympv/mpv.pyx":1114 -+ /* "vidcutter/libs/pympv/mpv.pyx":1116 - * def close(self): - * if not self.inited: - * return # <<<<<<<<<<<<<< -@@ -18990,7 +18990,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1113 -+ /* "vidcutter/libs/pympv/mpv.pyx":1115 - * - * def close(self): - * if not self.inited: # <<<<<<<<<<<<<< -@@ -18999,7 +18999,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1115 -+ /* "vidcutter/libs/pympv/mpv.pyx":1117 - * if not self.inited: - * return - * with nogil: # <<<<<<<<<<<<<< -@@ -19014,7 +19014,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1116 -+ /* "vidcutter/libs/pympv/mpv.pyx":1118 - * return - * with nogil: - * mpv_render_context_free(self._ctx) # <<<<<<<<<<<<<< -@@ -19024,7 +19024,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ - mpv_render_context_free(__pyx_v_self->_ctx); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1115 -+ /* "vidcutter/libs/pympv/mpv.pyx":1117 - * if not self.inited: - * return - * with nogil: # <<<<<<<<<<<<<< -@@ -19043,7 +19043,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1117 -+ /* "vidcutter/libs/pympv/mpv.pyx":1119 - * with nogil: - * mpv_render_context_free(self._ctx) - * self.inited = False # <<<<<<<<<<<<<< -@@ -19052,7 +19052,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ - */ - __pyx_v_self->inited = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1112 -+ /* "vidcutter/libs/pympv/mpv.pyx":1114 - * self.inited = False - * - * def close(self): # <<<<<<<<<<<<<< -@@ -19068,7 +19068,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_18close(struct _ - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1119 -+/* "vidcutter/libs/pympv/mpv.pyx":1121 - * self.inited = False - * - * def __dealloc__(self): # <<<<<<<<<<<<<< -@@ -19097,14 +19097,14 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__dealloc__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1120 -+ /* "vidcutter/libs/pympv/mpv.pyx":1122 - * - * def __dealloc__(self): - * self.close() # <<<<<<<<<<<<<< - * - * cdef class OpenGLRenderContext(RenderContext): - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1120, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -19118,12 +19118,12 @@ static void __pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_20__dealloc__(struct - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1120, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1119 -+ /* "vidcutter/libs/pympv/mpv.pyx":1121 - * self.inited = False - * - * def __dealloc__(self): # <<<<<<<<<<<<<< -@@ -19255,7 +19255,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_13RenderContext_24__setstate_cyt - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1123 -+/* "vidcutter/libs/pympv/mpv.pyx":1125 - * - * cdef class OpenGLRenderContext(RenderContext): - * def __init__(self, mpv, # <<<<<<<<<<<<<< -@@ -19312,12 +19312,12 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObje - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_get_proc_address)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, 1); __PYX_ERR(0, 1123, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, 1); __PYX_ERR(0, 1125, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2; -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 1123, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 1125, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 2) { - goto __pyx_L5_argtuple_error; -@@ -19330,7 +19330,7 @@ static int __pyx_pw_9vidcutter_4libs_3mpv_19OpenGLRenderContext_1__init__(PyObje - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1123, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1125, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; -@@ -19360,39 +19360,39 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(struct - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__init__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1127 -+ /* "vidcutter/libs/pympv/mpv.pyx":1129 - * *args, **kwargs): - * init_params = { - * "get_proc_address": get_proc_address # <<<<<<<<<<<<<< - * } - * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, - */ -- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1127, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_get_proc_address, __pyx_v_get_proc_address) < 0) __PYX_ERR(0, 1127, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_get_proc_address, __pyx_v_get_proc_address) < 0) __PYX_ERR(0, 1129, __pyx_L1_error) - __pyx_v_init_params = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1129 -+ /* "vidcutter/libs/pympv/mpv.pyx":1131 - * "get_proc_address": get_proc_address - * } - * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< - * init_params, *args, **kwargs) - * - */ -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1131, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext), __pyx_n_s_API_OPENGL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1131, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - -- /* "vidcutter/libs/pympv/mpv.pyx":1130 -+ /* "vidcutter/libs/pympv/mpv.pyx":1132 - * } - * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, - * init_params, *args, **kwargs) # <<<<<<<<<<<<<< - * - * class CallbackThread(Thread): - */ -- __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1131, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); -@@ -19407,42 +19407,42 @@ static int __pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext___init__(struct - PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_init_params); - __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1129 -+ /* "vidcutter/libs/pympv/mpv.pyx":1131 - * "get_proc_address": get_proc_address - * } - * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< - * init_params, *args, **kwargs) - * - */ -- __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1131, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1130 -+ /* "vidcutter/libs/pympv/mpv.pyx":1132 - * } - * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, - * init_params, *args, **kwargs) # <<<<<<<<<<<<<< - * - * class CallbackThread(Thread): - */ -- __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1130, __pyx_L1_error) -+ __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1132, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - -- /* "vidcutter/libs/pympv/mpv.pyx":1129 -+ /* "vidcutter/libs/pympv/mpv.pyx":1131 - * "get_proc_address": get_proc_address - * } - * RenderContext.__init__(self, mpv, RenderContext.API_OPENGL, # <<<<<<<<<<<<<< - * init_params, *args, **kwargs) - * - */ -- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1129, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1131, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1123 -+ /* "vidcutter/libs/pympv/mpv.pyx":1125 - * - * cdef class OpenGLRenderContext(RenderContext): - * def __init__(self, mpv, # <<<<<<<<<<<<<< -@@ -19579,7 +19579,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_19OpenGLRenderContext_4__setstat - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1133 -+/* "vidcutter/libs/pympv/mpv.pyx":1135 - * - * class CallbackThread(Thread): - * def __init__(self): # <<<<<<<<<<<<<< -@@ -19612,16 +19612,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__init__", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1134 -+ /* "vidcutter/libs/pympv/mpv.pyx":1136 - * class CallbackThread(Thread): - * def __init__(self): - * Thread.__init__(self) # <<<<<<<<<<<<<< - * self.daemon = True - * self.lock = Semaphore() - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1134, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1134, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; -@@ -19636,28 +19636,28 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON - } - __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_self) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1135 -+ /* "vidcutter/libs/pympv/mpv.pyx":1137 - * def __init__(self): - * Thread.__init__(self) - * self.daemon = True # <<<<<<<<<<<<<< - * self.lock = Semaphore() - * self.lock.acquire(True) - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(0, 1137, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1136 -+ /* "vidcutter/libs/pympv/mpv.pyx":1138 - * Thread.__init__(self) - * self.daemon = True - * self.lock = Semaphore() # <<<<<<<<<<<<<< - * self.lock.acquire(True) - * self.callback = None - */ -- __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1136, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { -@@ -19671,22 +19671,22 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON - } - __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1136, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lock, __pyx_t_1) < 0) __PYX_ERR(0, 1136, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_lock, __pyx_t_1) < 0) __PYX_ERR(0, 1138, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1137 -+ /* "vidcutter/libs/pympv/mpv.pyx":1139 - * self.daemon = True - * self.lock = Semaphore() - * self.lock.acquire(True) # <<<<<<<<<<<<<< - * self.callback = None - * self.isshutdown = False - */ -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; -@@ -19701,30 +19701,30 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_2, Py_True); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1137, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1138 -+ /* "vidcutter/libs/pympv/mpv.pyx":1140 - * self.lock = Semaphore() - * self.lock.acquire(True) - * self.callback = None # <<<<<<<<<<<<<< - * self.isshutdown = False - * - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1138, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1140, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1139 -+ /* "vidcutter/libs/pympv/mpv.pyx":1141 - * self.lock.acquire(True) - * self.callback = None - * self.isshutdown = False # <<<<<<<<<<<<<< - * - * def shutdown(self): - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_False) < 0) __PYX_ERR(0, 1139, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_False) < 0) __PYX_ERR(0, 1141, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1133 -+ /* "vidcutter/libs/pympv/mpv.pyx":1135 - * - * class CallbackThread(Thread): - * def __init__(self): # <<<<<<<<<<<<<< -@@ -19747,7 +19747,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread___init__(CYTHON - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1141 -+/* "vidcutter/libs/pympv/mpv.pyx":1143 - * self.isshutdown = False - * - * def shutdown(self): # <<<<<<<<<<<<<< -@@ -19780,34 +19780,34 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHO - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("shutdown", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1142 -+ /* "vidcutter/libs/pympv/mpv.pyx":1144 - * - * def shutdown(self): - * self.isshutdown = True # <<<<<<<<<<<<<< - * self.callback = None - * self.lock.release() - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_True) < 0) __PYX_ERR(0, 1142, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown, Py_True) < 0) __PYX_ERR(0, 1144, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1143 -+ /* "vidcutter/libs/pympv/mpv.pyx":1145 - * def shutdown(self): - * self.isshutdown = True - * self.callback = None # <<<<<<<<<<<<<< - * self.lock.release() - * - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1143, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, Py_None) < 0) __PYX_ERR(0, 1145, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1144 -+ /* "vidcutter/libs/pympv/mpv.pyx":1146 - * self.isshutdown = True - * self.callback = None - * self.lock.release() # <<<<<<<<<<<<<< - * - * def call(self): - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1144, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1144, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; -@@ -19822,12 +19822,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHO - } - __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1144, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1141 -+ /* "vidcutter/libs/pympv/mpv.pyx":1143 - * self.isshutdown = False - * - * def shutdown(self): # <<<<<<<<<<<<<< -@@ -19850,7 +19850,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_2shutdown(CYTHO - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1146 -+/* "vidcutter/libs/pympv/mpv.pyx":1148 - * self.lock.release() - * - * def call(self): # <<<<<<<<<<<<<< -@@ -19883,16 +19883,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UN - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("call", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1147 -+ /* "vidcutter/libs/pympv/mpv.pyx":1149 - * - * def call(self): - * self.lock.release() # <<<<<<<<<<<<<< - * - * def set(self, callback): - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1147, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; -@@ -19907,12 +19907,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UN - } - __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1146 -+ /* "vidcutter/libs/pympv/mpv.pyx":1148 - * self.lock.release() - * - * def call(self): # <<<<<<<<<<<<<< -@@ -19935,7 +19935,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_4call(CYTHON_UN - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1149 -+/* "vidcutter/libs/pympv/mpv.pyx":1151 - * self.lock.release() - * - * def set(self, callback): # <<<<<<<<<<<<<< -@@ -19978,11 +19978,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject * - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1149, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1151, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1149, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1151, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; -@@ -19995,7 +19995,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_7set(PyObject * - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1149, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1151, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -20016,16 +20016,16 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNU - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("set", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1150 -+ /* "vidcutter/libs/pympv/mpv.pyx":1152 - * - * def set(self, callback): - * self.callback = callback # <<<<<<<<<<<<<< - * - * def run(self): - */ -- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 1150, __pyx_L1_error) -+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 1152, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1149 -+ /* "vidcutter/libs/pympv/mpv.pyx":1151 - * self.lock.release() - * - * def set(self, callback): # <<<<<<<<<<<<<< -@@ -20045,7 +20045,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_6set(CYTHON_UNU - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1152 -+/* "vidcutter/libs/pympv/mpv.pyx":1154 - * self.callback = callback - * - * def run(self): # <<<<<<<<<<<<<< -@@ -20082,7 +20082,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("run", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1153 -+ /* "vidcutter/libs/pympv/mpv.pyx":1155 - * - * def run(self): - * while not self.isshutdown: # <<<<<<<<<<<<<< -@@ -20090,23 +20090,23 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU - * self.mpv_callback(self.callback) if self.callback else None - */ - while (1) { -- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isshutdown); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1153, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1155, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = ((!__pyx_t_2) != 0); - if (!__pyx_t_3) break; - -- /* "vidcutter/libs/pympv/mpv.pyx":1154 -+ /* "vidcutter/libs/pympv/mpv.pyx":1156 - * def run(self): - * while not self.isshutdown: - * self.lock.acquire(True) # <<<<<<<<<<<<<< - * self.mpv_callback(self.callback) if self.callback else None - * - */ -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_lock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1156, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_acquire); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1154, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_acquire); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1156, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; -@@ -20121,26 +20121,26 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU - } - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_5, Py_True); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1155 -+ /* "vidcutter/libs/pympv/mpv.pyx":1157 - * while not self.isshutdown: - * self.lock.acquire(True) - * self.mpv_callback(self.callback) if self.callback else None # <<<<<<<<<<<<<< - * - * def mpv_callback(self, callback): - */ -- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1157, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_3) { -- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mpv_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mpv_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_callback); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { -@@ -20155,7 +20155,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU - __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error) -+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __pyx_t_5; -@@ -20167,7 +20167,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1152 -+ /* "vidcutter/libs/pympv/mpv.pyx":1154 - * self.callback = callback - * - * def run(self): # <<<<<<<<<<<<<< -@@ -20192,7 +20192,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_8run(CYTHON_UNU - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1157 -+/* "vidcutter/libs/pympv/mpv.pyx":1159 - * self.mpv_callback(self.callback) if self.callback else None - * - * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -@@ -20235,11 +20235,11 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback( - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else { -- __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, 1); __PYX_ERR(0, 1157, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, 1); __PYX_ERR(0, 1159, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { -- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mpv_callback") < 0)) __PYX_ERR(0, 1157, __pyx_L3_error) -+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mpv_callback") < 0)) __PYX_ERR(0, 1159, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; -@@ -20252,7 +20252,7 @@ static PyObject *__pyx_pw_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback( - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; -- __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1157, __pyx_L3_error) -+ __Pyx_RaiseArgtupleInvalid("mpv_callback", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1159, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); -@@ -20285,7 +20285,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("mpv_callback", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1158 -+ /* "vidcutter/libs/pympv/mpv.pyx":1160 - * - * def mpv_callback(self, callback): - * try: # <<<<<<<<<<<<<< -@@ -20301,7 +20301,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":1159 -+ /* "vidcutter/libs/pympv/mpv.pyx":1161 - * def mpv_callback(self, callback): - * try: - * callback() # <<<<<<<<<<<<<< -@@ -20321,12 +20321,12 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( - } - __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1159, __pyx_L3_error) -+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1161, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1158 -+ /* "vidcutter/libs/pympv/mpv.pyx":1160 - * - * def mpv_callback(self, callback): - * try: # <<<<<<<<<<<<<< -@@ -20343,7 +20343,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1160 -+ /* "vidcutter/libs/pympv/mpv.pyx":1162 - * try: - * callback() - * except Exception as e: # <<<<<<<<<<<<<< -@@ -20353,29 +20353,29 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( - __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_7) { - __Pyx_AddTraceback("vidcutter.libs.mpv.CallbackThread.mpv_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); -- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 1160, __pyx_L5_except_error) -+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 1162, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_INCREF(__pyx_t_5); - __pyx_v_e = __pyx_t_5; - -- /* "vidcutter/libs/pympv/mpv.pyx":1161 -+ /* "vidcutter/libs/pympv/mpv.pyx":1163 - * callback() - * except Exception as e: - * sys.stderr.write("pympv error during callback: %s\n" % e) # <<<<<<<<<<<<<< - * - * cdef void _c_callback(void* d) with gil: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1163, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); -- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_stderr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_stderr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1163, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_write); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_write); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1163, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -- __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_pympv_error_during_callback_s, __pyx_v_e); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_pympv_error_during_callback_s, __pyx_v_e); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1163, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_11 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { -@@ -20390,7 +20390,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( - __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -- if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1161, __pyx_L5_except_error) -+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1163, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -@@ -20402,7 +20402,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - -- /* "vidcutter/libs/pympv/mpv.pyx":1158 -+ /* "vidcutter/libs/pympv/mpv.pyx":1160 - * - * def mpv_callback(self, callback): - * try: # <<<<<<<<<<<<<< -@@ -20422,7 +20422,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( - __pyx_L8_try_end:; - } - -- /* "vidcutter/libs/pympv/mpv.pyx":1157 -+ /* "vidcutter/libs/pympv/mpv.pyx":1159 - * self.mpv_callback(self.callback) if self.callback else None - * - * def mpv_callback(self, callback): # <<<<<<<<<<<<<< -@@ -20450,7 +20450,7 @@ static PyObject *__pyx_pf_9vidcutter_4libs_3mpv_14CallbackThread_10mpv_callback( - return __pyx_r; - } - --/* "vidcutter/libs/pympv/mpv.pyx":1163 -+/* "vidcutter/libs/pympv/mpv.pyx":1165 - * sys.stderr.write("pympv error during callback: %s\n" % e) - * - * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< -@@ -20474,7 +20474,7 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { - #endif - __Pyx_RefNannySetupContext("_c_callback", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":1164 -+ /* "vidcutter/libs/pympv/mpv.pyx":1166 - * - * cdef void _c_callback(void* d) with gil: - * cdef uint64_t name = d # <<<<<<<<<<<<<< -@@ -20483,15 +20483,15 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { - */ - __pyx_v_name = ((uint64_t)__pyx_v_d); - -- /* "vidcutter/libs/pympv/mpv.pyx":1165 -+ /* "vidcutter/libs/pympv/mpv.pyx":1167 - * cdef void _c_callback(void* d) with gil: - * cdef uint64_t name = d - * callback = _callbacks.get(name) # <<<<<<<<<<<<<< - * callback.call() - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1165, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1165, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -20506,18 +20506,18 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_callback = __pyx_t_1; - __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1166 -+ /* "vidcutter/libs/pympv/mpv.pyx":1168 - * cdef uint64_t name = d - * callback = _callbacks.get(name) - * callback.call() # <<<<<<<<<<<<<< - */ -- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_callback, __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1166, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_callback, __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1168, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { -@@ -20531,12 +20531,12 @@ static void __pyx_f_9vidcutter_4libs_3mpv__c_callback(void *__pyx_v_d) { - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -- if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error) -+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1163 -+ /* "vidcutter/libs/pympv/mpv.pyx":1165 - * sys.stderr.write("pympv error during callback: %s\n" % e) - * - * cdef void _c_callback(void* d) with gil: # <<<<<<<<<<<<<< -@@ -24444,13 +24444,13 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { - {0, 0, 0, 0, 0, 0, 0} - }; - static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { -- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 44, __pyx_L1_error) -- __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 346, __pyx_L1_error) -- __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(0, 58, __pyx_L1_error) -- __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(0, 66, __pyx_L1_error) -- __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 222, __pyx_L1_error) -- __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 303, __pyx_L1_error) -- __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 475, __pyx_L1_error) -+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 46, __pyx_L1_error) -+ __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 348, __pyx_L1_error) -+ __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(0, 60, __pyx_L1_error) -+ __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(0, 68, __pyx_L1_error) -+ __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 224, __pyx_L1_error) -+ __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 305, __pyx_L1_error) -+ __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 477, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) - return 0; - __pyx_L1_error:; -@@ -24461,17 +24461,17 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - -- /* "vidcutter/libs/pympv/mpv.pyx":319 -+ /* "vidcutter/libs/pympv/mpv.pyx":321 - * - * def _errors(fn): - * def wrapped(*k, **kw): # <<<<<<<<<<<<<< - * v = fn(*k, **kw) - * if v < 0: - */ -- __pyx_tuple_ = PyTuple_Pack(3, __pyx_n_s_k, __pyx_n_s_kw, __pyx_n_s_v); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 319, __pyx_L1_error) -+ __pyx_tuple_ = PyTuple_Pack(3, __pyx_n_s_k, __pyx_n_s_kw, __pyx_n_s_v); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 321, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); -- __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_wrapped, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 319, __pyx_L1_error) -+ __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_wrapped, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 321, __pyx_L1_error) - - /* "(tree fragment)":2 - * def __reduce_cython__(self): -@@ -24511,80 +24511,80 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); - -- /* "vidcutter/libs/pympv/mpv.pyx":992 -+ /* "vidcutter/libs/pympv/mpv.pyx":994 - * params.add_voidp(MPV_RENDER_PARAM_WL_DISPLAY, get_pointer("wl_display", wl_display)) - * if drm_display: - * drm_params.fd = drm_display.get("fd", -1) # <<<<<<<<<<<<<< - * drm_params.crtc_id = drm_display.get("crtc_id", -1) - * drm_params.connector_id = drm_display.get("connector_id", -1) - */ -- __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 992, __pyx_L1_error) -+ __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 994, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); - -- /* "vidcutter/libs/pympv/mpv.pyx":993 -+ /* "vidcutter/libs/pympv/mpv.pyx":995 - * if drm_display: - * drm_params.fd = drm_display.get("fd", -1) - * drm_params.crtc_id = drm_display.get("crtc_id", -1) # <<<<<<<<<<<<<< - * drm_params.connector_id = drm_display.get("connector_id", -1) - * arp = drm_display.get("atomic_request_ptr", None) - */ -- __pyx_tuple__8 = PyTuple_Pack(2, __pyx_n_s_crtc_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 993, __pyx_L1_error) -+ __pyx_tuple__8 = PyTuple_Pack(2, __pyx_n_s_crtc_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 995, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); - -- /* "vidcutter/libs/pympv/mpv.pyx":994 -+ /* "vidcutter/libs/pympv/mpv.pyx":996 - * drm_params.fd = drm_display.get("fd", -1) - * drm_params.crtc_id = drm_display.get("crtc_id", -1) - * drm_params.connector_id = drm_display.get("connector_id", -1) # <<<<<<<<<<<<<< - * arp = drm_display.get("atomic_request_ptr", None) - * if arp is not None: - */ -- __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_s_connector_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 994, __pyx_L1_error) -+ __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_s_connector_id, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 996, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - -- /* "vidcutter/libs/pympv/mpv.pyx":995 -+ /* "vidcutter/libs/pympv/mpv.pyx":997 - * drm_params.crtc_id = drm_display.get("crtc_id", -1) - * drm_params.connector_id = drm_display.get("connector_id", -1) - * arp = drm_display.get("atomic_request_ptr", None) # <<<<<<<<<<<<<< - * if arp is not None: - * drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*") - */ -- __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_atomic_request_ptr, Py_None); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 995, __pyx_L1_error) -+ __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_atomic_request_ptr, Py_None); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 997, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - -- /* "vidcutter/libs/pympv/mpv.pyx":998 -+ /* "vidcutter/libs/pympv/mpv.pyx":1000 - * if arp is not None: - * 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: - */ -- __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_render_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 998, __pyx_L1_error) -+ __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_render_fd, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 1000, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - -- /* "vidcutter/libs/pympv/mpv.pyx":1083 -+ /* "vidcutter/libs/pympv/mpv.pyx":1085 - * if opengl_fbo: - * memset(&fbo, 0, sizeof(fbo)) - * fbo.fbo = opengl_fbo.get("fbo", 0) or 0 # <<<<<<<<<<<<<< - * fbo.w = opengl_fbo["w"] - * fbo.h = opengl_fbo["h"] - */ -- __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_fbo, __pyx_int_0); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1083, __pyx_L1_error) -+ __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_fbo, __pyx_int_0); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1085, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__12); - __Pyx_GIVEREF(__pyx_tuple__12); - -- /* "vidcutter/libs/pympv/mpv.pyx":1086 -+ /* "vidcutter/libs/pympv/mpv.pyx":1088 - * fbo.w = opengl_fbo["w"] - * fbo.h = opengl_fbo["h"] - * fbo.internal_format = opengl_fbo.get("internal_format", 0) or 0 # <<<<<<<<<<<<<< - * params.add_voidp(MPV_RENDER_PARAM_OPENGL_FBO, &fbo) - * if flip_y: - */ -- __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_internal_format, __pyx_int_0); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 1086, __pyx_L1_error) -+ __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_internal_format, __pyx_int_0); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - -@@ -24626,183 +24626,183 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); - -- /* "vidcutter/libs/pympv/mpv.pyx":52 -+ /* "vidcutter/libs/pympv/mpv.pyx":54 - * void Py_Initialize() - * - * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< - * _strdec_err = "surrogateescape" if _is_py3 else "strict" - * # mpv -> Python - */ -- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 52, __pyx_L1_error) -+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); - -- /* "vidcutter/libs/pympv/mpv.pyx":55 -+ /* "vidcutter/libs/pympv/mpv.pyx":57 - * _strdec_err = "surrogateescape" if _is_py3 else "strict" - * # mpv -> Python - * def _strdec(s): # <<<<<<<<<<<<<< - * try: - * return s.decode("utf-8", _strdec_err) - */ -- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 55, __pyx_L1_error) -+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 57, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); -- __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strdec, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 55, __pyx_L1_error) -+ __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strdec, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 57, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":63 -+ /* "vidcutter/libs/pympv/mpv.pyx":65 - * - * # Python -> mpv - * def _strenc(s): # <<<<<<<<<<<<<< - * try: - * return s.encode("utf-8", _strdec_err) - */ -- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 63, __pyx_L1_error) -+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); -- __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strenc, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 63, __pyx_L1_error) -+ __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_strenc, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 65, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":318 -+ /* "vidcutter/libs/pympv/mpv.pyx":320 - * - * - * def _errors(fn): # <<<<<<<<<<<<<< - * def wrapped(*k, **kw): - * v = fn(*k, **kw) - */ -- __pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_fn, __pyx_n_s_wrapped, __pyx_n_s_wrapped); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 318, __pyx_L1_error) -+ __pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_fn, __pyx_n_s_wrapped, __pyx_n_s_wrapped); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 320, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); -- __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_errors, 318, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 318, __pyx_L1_error) -+ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_errors, 320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 320, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":329 -+ /* "vidcutter/libs/pympv/mpv.pyx":331 - * code = None - * - * def __init__(self, e): # <<<<<<<<<<<<<< - * self.code = e - * cdef const char* err_c - */ -- __pyx_tuple__25 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_e, __pyx_n_s_err_c, __pyx_n_s_e_i); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 329, __pyx_L1_error) -+ __pyx_tuple__25 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_e, __pyx_n_s_err_c, __pyx_n_s_e_i); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 331, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); -- __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 329, __pyx_L1_error) -+ __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 331, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":346 -+ /* "vidcutter/libs/pympv/mpv.pyx":348 - * cdef _reply_userdatas = dict() - * - * class _ReplyUserData(object): # <<<<<<<<<<<<<< - * def __init__(self, data): - * self.counter = 0 - */ -- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 346, __pyx_L1_error) -+ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__27); - __Pyx_GIVEREF(__pyx_tuple__27); - -- /* "vidcutter/libs/pympv/mpv.pyx":347 -+ /* "vidcutter/libs/pympv/mpv.pyx":349 - * - * class _ReplyUserData(object): - * def __init__(self, data): # <<<<<<<<<<<<<< - * self.counter = 0 - * self.data = data - */ -- __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 347, __pyx_L1_error) -+ __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 349, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); -- __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 347, __pyx_L1_error) -+ __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 349, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":352 -+ /* "vidcutter/libs/pympv/mpv.pyx":354 - * self.observed = False - * - * def add(self): # <<<<<<<<<<<<<< - * self.counter += 1 - * - */ -- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 352, __pyx_L1_error) -+ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__30); - __Pyx_GIVEREF(__pyx_tuple__30); -- __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_add, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 352, __pyx_L1_error) -+ __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_add, 354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 354, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":355 -+ /* "vidcutter/libs/pympv/mpv.pyx":357 - * self.counter += 1 - * - * def remove(self): # <<<<<<<<<<<<<< - * self.counter -= 1 - * - */ -- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 355, __pyx_L1_error) -+ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__32); - __Pyx_GIVEREF(__pyx_tuple__32); -- __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_remove, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 355, __pyx_L1_error) -+ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_remove, 357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 357, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1133 -+ /* "vidcutter/libs/pympv/mpv.pyx":1135 - * - * class CallbackThread(Thread): - * def __init__(self): # <<<<<<<<<<<<<< - * Thread.__init__(self) - * self.daemon = True - */ -- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1133, __pyx_L1_error) -+ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1135, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__34); - __Pyx_GIVEREF(__pyx_tuple__34); -- __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 1133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1133, __pyx_L1_error) -+ __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_init, 1135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1135, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1141 -+ /* "vidcutter/libs/pympv/mpv.pyx":1143 - * self.isshutdown = False - * - * def shutdown(self): # <<<<<<<<<<<<<< - * self.isshutdown = True - * self.callback = None - */ -- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1141, __pyx_L1_error) -+ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__36); - __Pyx_GIVEREF(__pyx_tuple__36); -- __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_shutdown, 1141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1141, __pyx_L1_error) -+ __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_shutdown, 1143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1143, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1146 -+ /* "vidcutter/libs/pympv/mpv.pyx":1148 - * self.lock.release() - * - * def call(self): # <<<<<<<<<<<<<< - * self.lock.release() - * - */ -- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1146, __pyx_L1_error) -+ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__38); - __Pyx_GIVEREF(__pyx_tuple__38); -- __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_call, 1146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1146, __pyx_L1_error) -+ __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_call, 1148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1148, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1149 -+ /* "vidcutter/libs/pympv/mpv.pyx":1151 - * self.lock.release() - * - * def set(self, callback): # <<<<<<<<<<<<<< - * self.callback = callback - * - */ -- __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 1149, __pyx_L1_error) -+ __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 1151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__40); - __Pyx_GIVEREF(__pyx_tuple__40); -- __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_set, 1149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 1149, __pyx_L1_error) -+ __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_set, 1151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 1151, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1152 -+ /* "vidcutter/libs/pympv/mpv.pyx":1154 - * self.callback = callback - * - * def run(self): # <<<<<<<<<<<<<< - * while not self.isshutdown: - * self.lock.acquire(True) - */ -- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1152, __pyx_L1_error) -+ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1154, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__42); - __Pyx_GIVEREF(__pyx_tuple__42); -- __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_run, 1152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 1152, __pyx_L1_error) -+ __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_run, 1154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 1154, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":1157 -+ /* "vidcutter/libs/pympv/mpv.pyx":1159 - * self.mpv_callback(self.callback) if self.callback else None - * - * def mpv_callback(self, callback): # <<<<<<<<<<<<<< - * try: - * callback() - */ -- __pyx_tuple__44 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_callback, __pyx_n_s_e); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1157, __pyx_L1_error) -+ __pyx_tuple__44 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_callback, __pyx_n_s_e); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__44); - __Pyx_GIVEREF(__pyx_tuple__44); -- __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_mpv_callback, 1157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 1157, __pyx_L1_error) -+ __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_vidcutter_libs_pympv_mpv_pyx, __pyx_n_s_mpv_callback, 1159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 1159, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __pyx_unpickle_EndOfFileReached(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< -@@ -24840,9 +24840,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) -- __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_32 = PyInt_FromLong(32); if (unlikely(!__pyx_int_32)) __PYX_ERR(0, 1, __pyx_L1_error) -+ __pyx_int_109 = PyInt_FromLong(109); if (unlikely(!__pyx_int_109)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_5713169 = PyInt_FromLong(5713169L); if (unlikely(!__pyx_int_5713169)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_90958262 = PyInt_FromLong(90958262L); if (unlikely(!__pyx_int_90958262)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_142036910 = PyInt_FromLong(142036910L); if (unlikely(!__pyx_int_142036910)) __PYX_ERR(0, 1, __pyx_L1_error) -@@ -24897,122 +24897,122 @@ static int __Pyx_modinit_type_init_code(void) { - /*--- Type init code ---*/ - __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached; - __pyx_vtable_9vidcutter_4libs_3mpv_EndOfFileReached._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_EndOfFileReached *, struct mpv_event_end_file *))__pyx_f_9vidcutter_4libs_3mpv_16EndOfFileReached__init; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 158, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_EndOfFileReached, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 156, __pyx_L1_error) -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 158, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_EndOfFileReached, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 158, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached) < 0) __PYX_ERR(0, 158, __pyx_L1_error) - __pyx_ptype_9vidcutter_4libs_3mpv_EndOfFileReached = &__pyx_type_9vidcutter_4libs_3mpv_EndOfFileReached; - __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage = &__pyx_vtable_9vidcutter_4libs_3mpv_LogMessage; - __pyx_vtable_9vidcutter_4libs_3mpv_LogMessage._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_LogMessage *, struct mpv_event_log_message *))__pyx_f_9vidcutter_4libs_3mpv_10LogMessage__init; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 184, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LogMessage, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 182, __pyx_L1_error) -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_LogMessage.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 184, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LogMessage, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 184, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_LogMessage) < 0) __PYX_ERR(0, 184, __pyx_L1_error) - __pyx_ptype_9vidcutter_4libs_3mpv_LogMessage = &__pyx_type_9vidcutter_4libs_3mpv_LogMessage; - __pyx_vtabptr_9vidcutter_4libs_3mpv_Property = &__pyx_vtable_9vidcutter_4libs_3mpv_Property; - __pyx_vtable_9vidcutter_4libs_3mpv_Property._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Property *, struct mpv_event_property *))__pyx_f_9vidcutter_4libs_3mpv_8Property__init; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 245, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv_Property.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_9vidcutter_4libs_3mpv_Property.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Property, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 243, __pyx_L1_error) -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Property.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 245, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Property, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 245, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Property) < 0) __PYX_ERR(0, 245, __pyx_L1_error) - __pyx_ptype_9vidcutter_4libs_3mpv_Property = &__pyx_type_9vidcutter_4libs_3mpv_Property; - __pyx_vtabptr_9vidcutter_4libs_3mpv_Event = &__pyx_vtable_9vidcutter_4libs_3mpv_Event; - __pyx_vtable_9vidcutter_4libs_3mpv_Event._data = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *))__pyx_f_9vidcutter_4libs_3mpv_5Event__data; - __pyx_vtable_9vidcutter_4libs_3mpv_Event._init = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Event *, struct mpv_event *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_5Event__init; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 258, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv_Event.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_9vidcutter_4libs_3mpv_Event.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Event, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 256, __pyx_L1_error) -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Event.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 258, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Event, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 258, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Event) < 0) __PYX_ERR(0, 258, __pyx_L1_error) - __pyx_ptype_9vidcutter_4libs_3mpv_Event = &__pyx_type_9vidcutter_4libs_3mpv_Event; - __pyx_vtabptr_9vidcutter_4libs_3mpv_Context = &__pyx_vtable_9vidcutter_4libs_3mpv_Context; - __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_list = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_list; - __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_node_map = (struct mpv_node_list *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_node_map; - __pyx_vtable_9vidcutter_4libs_3mpv_Context._prep_native_value = (struct mpv_node (*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, PyObject *, PyObject *))__pyx_f_9vidcutter_4libs_3mpv_7Context__prep_native_value; - __pyx_vtable_9vidcutter_4libs_3mpv_Context._free_native_value = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_Context *, struct mpv_node))__pyx_f_9vidcutter_4libs_3mpv_7Context__free_native_value; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 361, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv_Context.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_9vidcutter_4libs_3mpv_Context.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Context, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 359, __pyx_L1_error) -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_Context.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 361, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Context, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 361, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_Context) < 0) __PYX_ERR(0, 361, __pyx_L1_error) - __pyx_ptype_9vidcutter_4libs_3mpv_Context = &__pyx_type_9vidcutter_4libs_3mpv_Context; - __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams = &__pyx_vtable_9vidcutter_4libs_3mpv__RenderParams; - __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_voidp = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, void *, struct __pyx_opt_args_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp *__pyx_optional_args))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_voidp; - __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_int = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, int))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_int; - __pyx_vtable_9vidcutter_4libs_3mpv__RenderParams.add_string = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv__RenderParams *, enum mpv_render_param_type, char *))__pyx_f_9vidcutter_4libs_3mpv_13_RenderParams_add_string; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 883, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderParams, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 881, __pyx_L1_error) -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv__RenderParams.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 883, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderParams, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 883, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv__RenderParams) < 0) __PYX_ERR(0, 883, __pyx_L1_error) - __pyx_ptype_9vidcutter_4libs_3mpv__RenderParams = &__pyx_type_9vidcutter_4libs_3mpv__RenderParams; - __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo; - __pyx_vtable_9vidcutter_4libs_3mpv_RenderFrameInfo._from_struct = (PyObject *(*)(struct __pyx_obj_9vidcutter_4libs_3mpv_RenderFrameInfo *, struct mpv_render_frame_info *))__pyx_f_9vidcutter_4libs_3mpv_15RenderFrameInfo__from_struct; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 930, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 928, __pyx_L1_error) -+ if (__Pyx_SetVtable(__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo.tp_dict, __pyx_vtabptr_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 930, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo) < 0) __PYX_ERR(0, 930, __pyx_L1_error) - __pyx_ptype_9vidcutter_4libs_3mpv_RenderFrameInfo = &__pyx_type_9vidcutter_4libs_3mpv_RenderFrameInfo; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 939, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_9vidcutter_4libs_3mpv_RenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 937, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 939, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_RenderContext) < 0) __PYX_ERR(0, 939, __pyx_L1_error) - __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext = &__pyx_type_9vidcutter_4libs_3mpv_RenderContext; - __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_base = __pyx_ptype_9vidcutter_4libs_3mpv_RenderContext; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1124, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_dictoffset && __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } -- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLRenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) -- if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) -+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_OpenGLRenderContext, (PyObject *)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1124, __pyx_L1_error) -+ if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext) < 0) __PYX_ERR(0, 1124, __pyx_L1_error) - __pyx_ptype_9vidcutter_4libs_3mpv_OpenGLRenderContext = &__pyx_type_9vidcutter_4libs_3mpv_OpenGLRenderContext; -- if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors) < 0) __PYX_ERR(0, 318, __pyx_L1_error) -+ if (PyType_Ready(&__pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors) < 0) __PYX_ERR(0, 320, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_9vidcutter_4libs_3mpv___pyx_scope_struct___errors.tp_print = 0; - #endif -@@ -25315,29 +25315,29 @@ if (!__Pyx_RefNanny) { - * __version__ = "0.3.0" - * __author__ = "Andre D" # <<<<<<<<<<<<<< - * -- * _REQUIRED_CAPI_MAJOR = 2 -+ * #_REQUIRED_CAPI_MAJOR = 2 - */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_kp_s_Andre_D) < 0) __PYX_ERR(0, 31, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":33 -- * __author__ = "Andre D" -- * -- * _REQUIRED_CAPI_MAJOR = 2 # <<<<<<<<<<<<<< -- * _MIN_CAPI_MINOR = 0 -+ /* "vidcutter/libs/pympv/mpv.pyx":35 -+ * #_REQUIRED_CAPI_MAJOR = 2 -+ * #_MIN_CAPI_MINOR = 0 -+ * _REQUIRED_CAPI_MAJOR = 1 # <<<<<<<<<<<<<< -+ * _MIN_CAPI_MINOR = 109 - * - */ -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_int_2) < 0) __PYX_ERR(0, 33, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_REQUIRED_CAPI_MAJOR, __pyx_int_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":34 -- * -- * _REQUIRED_CAPI_MAJOR = 2 -- * _MIN_CAPI_MINOR = 0 # <<<<<<<<<<<<<< -+ /* "vidcutter/libs/pympv/mpv.pyx":36 -+ * #_MIN_CAPI_MINOR = 0 -+ * _REQUIRED_CAPI_MAJOR = 1 -+ * _MIN_CAPI_MINOR = 109 # <<<<<<<<<<<<<< - * - * cdef unsigned long _CAPI_VERSION - */ -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MIN_CAPI_MINOR, __pyx_int_0) < 0) __PYX_ERR(0, 34, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_MIN_CAPI_MINOR, __pyx_int_109) < 0) __PYX_ERR(0, 36, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":37 -+ /* "vidcutter/libs/pympv/mpv.pyx":39 - * - * cdef unsigned long _CAPI_VERSION - * with nogil: # <<<<<<<<<<<<<< -@@ -25352,7 +25352,7 @@ if (!__Pyx_RefNanny) { - #endif - /*try:*/ { - -- /* "vidcutter/libs/pympv/mpv.pyx":38 -+ /* "vidcutter/libs/pympv/mpv.pyx":40 - * cdef unsigned long _CAPI_VERSION - * with nogil: - * _CAPI_VERSION = mpv_client_api_version() # <<<<<<<<<<<<<< -@@ -25362,7 +25362,7 @@ if (!__Pyx_RefNanny) { - __pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION = mpv_client_api_version(); - } - -- /* "vidcutter/libs/pympv/mpv.pyx":37 -+ /* "vidcutter/libs/pympv/mpv.pyx":39 - * - * cdef unsigned long _CAPI_VERSION - * with nogil: # <<<<<<<<<<<<<< -@@ -25381,80 +25381,80 @@ if (!__Pyx_RefNanny) { - } - } - -- /* "vidcutter/libs/pympv/mpv.pyx":40 -+ /* "vidcutter/libs/pympv/mpv.pyx":42 - * _CAPI_VERSION = mpv_client_api_version() - * - * _CAPI_MAJOR = _CAPI_VERSION >> 16 # <<<<<<<<<<<<<< - * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF - * - */ -- __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION >> 16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION >> 16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MAJOR, __pyx_t_2) < 0) __PYX_ERR(0, 40, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MAJOR, __pyx_t_2) < 0) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":41 -+ /* "vidcutter/libs/pympv/mpv.pyx":43 - * - * _CAPI_MAJOR = _CAPI_VERSION >> 16 - * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF # <<<<<<<<<<<<<< - * - * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: - */ -- __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION & 0xFFFF)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) -+ __pyx_t_2 = __Pyx_PyInt_From_unsigned_long((__pyx_v_9vidcutter_4libs_3mpv__CAPI_VERSION & 0xFFFF)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MINOR, __pyx_t_2) < 0) __PYX_ERR(0, 41, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CAPI_MINOR, __pyx_t_2) < 0) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":43 -+ /* "vidcutter/libs/pympv/mpv.pyx":45 - * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF - * - * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< - * raise ImportError( - * "libmpv version is incorrect. Required %d.%d got %d.%d." % - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!__pyx_t_5) { - } else { - __pyx_t_3 = __pyx_t_5; - goto __pyx_L6_bool_binop_done; - } -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) -+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __pyx_t_5; - __pyx_L6_bool_binop_done:; - if (unlikely(__pyx_t_3)) { - -- /* "vidcutter/libs/pympv/mpv.pyx":46 -+ /* "vidcutter/libs/pympv/mpv.pyx":48 - * raise ImportError( - * "libmpv version is incorrect. Required %d.%d got %d.%d." % - * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) # <<<<<<<<<<<<<< - * ) - * - */ -- __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_REQUIRED_CAPI_MAJOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); -- __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MIN_CAPI_MINOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_CAPI_MAJOR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_CAPI_MINOR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 46, __pyx_L1_error) -+ __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); -@@ -25469,32 +25469,32 @@ if (!__Pyx_RefNanny) { - __pyx_t_4 = 0; - __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":45 -+ /* "vidcutter/libs/pympv/mpv.pyx":47 - * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: - * raise ImportError( - * "libmpv version is incorrect. Required %d.%d got %d.%d." % # <<<<<<<<<<<<<< - * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) - * ) - */ -- __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 45, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_libmpv_version_is_incorrect_Requ, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":44 -+ /* "vidcutter/libs/pympv/mpv.pyx":46 - * - * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: - * raise ImportError( # <<<<<<<<<<<<<< - * "libmpv version is incorrect. Required %d.%d got %d.%d." % - * (_REQUIRED_CAPI_MAJOR, _MIN_CAPI_MINOR, _CAPI_MAJOR, _CAPI_MINOR) - */ -- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ImportError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 44, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ImportError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_Raise(__pyx_t_7, 0, 0, 0); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __PYX_ERR(0, 44, __pyx_L1_error) -+ __PYX_ERR(0, 46, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":43 -+ /* "vidcutter/libs/pympv/mpv.pyx":45 - * _CAPI_MINOR = _CAPI_VERSION & 0xFFFF - * - * if _CAPI_MAJOR != _REQUIRED_CAPI_MAJOR or _CAPI_MINOR < _MIN_CAPI_MINOR: # <<<<<<<<<<<<<< -@@ -25503,33 +25503,33 @@ if (!__Pyx_RefNanny) { - */ - } - -- /* "vidcutter/libs/pympv/mpv.pyx":52 -+ /* "vidcutter/libs/pympv/mpv.pyx":54 - * void Py_Initialize() - * - * _is_py3 = sys.version_info >= (3,) # <<<<<<<<<<<<<< - * _strdec_err = "surrogateescape" if _is_py3 else "strict" - * # mpv -> Python - */ -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_version_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 52, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_version_info); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -- __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_tuple__18, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 52, __pyx_L1_error) -+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_tuple__18, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_py3, __pyx_t_7) < 0) __PYX_ERR(0, 52, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_py3, __pyx_t_7) < 0) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":53 -+ /* "vidcutter/libs/pympv/mpv.pyx":55 - * - * _is_py3 = sys.version_info >= (3,) - * _strdec_err = "surrogateescape" if _is_py3 else "strict" # <<<<<<<<<<<<<< - * # mpv -> Python - * def _strdec(s): - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_py3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 53, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_is_py3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 53, __pyx_L1_error) -+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (__pyx_t_3) { - __Pyx_INCREF(__pyx_n_s_surrogateescape); -@@ -25538,34 +25538,34 @@ if (!__Pyx_RefNanny) { - __Pyx_INCREF(__pyx_n_s_strict); - __pyx_t_7 = __pyx_n_s_strict; - } -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec_err, __pyx_t_7) < 0) __PYX_ERR(0, 53, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec_err, __pyx_t_7) < 0) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":55 -+ /* "vidcutter/libs/pympv/mpv.pyx":57 - * _strdec_err = "surrogateescape" if _is_py3 else "strict" - * # mpv -> Python - * def _strdec(s): # <<<<<<<<<<<<<< - * try: - * return s.decode("utf-8", _strdec_err) - */ -- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_1_strdec, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 55, __pyx_L1_error) -+ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_1_strdec, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 57, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec, __pyx_t_7) < 0) __PYX_ERR(0, 55, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strdec, __pyx_t_7) < 0) __PYX_ERR(0, 57, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":63 -+ /* "vidcutter/libs/pympv/mpv.pyx":65 - * - * # Python -> mpv - * def _strenc(s): # <<<<<<<<<<<<<< - * try: - * return s.encode("utf-8", _strdec_err) - */ -- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_3_strenc, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 63, __pyx_L1_error) -+ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_3_strenc, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_strenc, __pyx_t_7) < 0) __PYX_ERR(0, 63, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_strenc, __pyx_t_7) < 0) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":70 -+ /* "vidcutter/libs/pympv/mpv.pyx":72 - * return s - * - * Py_Initialize() # <<<<<<<<<<<<<< -@@ -25574,883 +25574,883 @@ if (!__Pyx_RefNanny) { - */ - Py_Initialize(); - -- /* "vidcutter/libs/pympv/mpv.pyx":72 -+ /* "vidcutter/libs/pympv/mpv.pyx":74 - * Py_Initialize() - * - * class Errors: # <<<<<<<<<<<<<< - * """Set of known error codes from MpvError and Event responses. - * - */ -- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Errors, __pyx_n_s_Errors, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_error_codes_from_Mp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 72, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Errors, __pyx_n_s_Errors, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_error_codes_from_Mp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - -- /* "vidcutter/libs/pympv/mpv.pyx":79 -+ /* "vidcutter/libs/pympv/mpv.pyx":81 - * You should handle the possibility that error codes may not be any of these values. - * """ - * success = MPV_ERROR_SUCCESS # <<<<<<<<<<<<<< - * queue_full = MPV_ERROR_EVENT_QUEUE_FULL - * nomem = MPV_ERROR_NOMEM - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_SUCCESS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_SUCCESS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_success, __pyx_t_6) < 0) __PYX_ERR(0, 79, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_success, __pyx_t_6) < 0) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":80 -+ /* "vidcutter/libs/pympv/mpv.pyx":82 - * """ - * success = MPV_ERROR_SUCCESS - * queue_full = MPV_ERROR_EVENT_QUEUE_FULL # <<<<<<<<<<<<<< - * nomem = MPV_ERROR_NOMEM - * uninitialized = MPV_ERROR_UNINITIALIZED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_EVENT_QUEUE_FULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_EVENT_QUEUE_FULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_full, __pyx_t_6) < 0) __PYX_ERR(0, 80, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_full, __pyx_t_6) < 0) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":81 -+ /* "vidcutter/libs/pympv/mpv.pyx":83 - * success = MPV_ERROR_SUCCESS - * queue_full = MPV_ERROR_EVENT_QUEUE_FULL - * nomem = MPV_ERROR_NOMEM # <<<<<<<<<<<<<< - * uninitialized = MPV_ERROR_UNINITIALIZED - * invalid_parameter = MPV_ERROR_INVALID_PARAMETER - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOMEM); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOMEM); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nomem, __pyx_t_6) < 0) __PYX_ERR(0, 81, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nomem, __pyx_t_6) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":82 -+ /* "vidcutter/libs/pympv/mpv.pyx":84 - * queue_full = MPV_ERROR_EVENT_QUEUE_FULL - * nomem = MPV_ERROR_NOMEM - * uninitialized = MPV_ERROR_UNINITIALIZED # <<<<<<<<<<<<<< - * invalid_parameter = MPV_ERROR_INVALID_PARAMETER - * not_found = MPV_ERROR_OPTION_NOT_FOUND - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNINITIALIZED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 82, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNINITIALIZED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_uninitialized, __pyx_t_6) < 0) __PYX_ERR(0, 82, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_uninitialized, __pyx_t_6) < 0) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":83 -+ /* "vidcutter/libs/pympv/mpv.pyx":85 - * nomem = MPV_ERROR_NOMEM - * uninitialized = MPV_ERROR_UNINITIALIZED - * invalid_parameter = MPV_ERROR_INVALID_PARAMETER # <<<<<<<<<<<<<< - * not_found = MPV_ERROR_OPTION_NOT_FOUND - * option_format = MPV_ERROR_OPTION_FORMAT - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_INVALID_PARAMETER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_INVALID_PARAMETER); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_parameter, __pyx_t_6) < 0) __PYX_ERR(0, 83, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_parameter, __pyx_t_6) < 0) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":84 -+ /* "vidcutter/libs/pympv/mpv.pyx":86 - * uninitialized = MPV_ERROR_UNINITIALIZED - * invalid_parameter = MPV_ERROR_INVALID_PARAMETER - * not_found = MPV_ERROR_OPTION_NOT_FOUND # <<<<<<<<<<<<<< - * option_format = MPV_ERROR_OPTION_FORMAT - * option_error = MPV_ERROR_OPTION_ERROR - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 84, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":85 -+ /* "vidcutter/libs/pympv/mpv.pyx":87 - * invalid_parameter = MPV_ERROR_INVALID_PARAMETER - * not_found = MPV_ERROR_OPTION_NOT_FOUND - * option_format = MPV_ERROR_OPTION_FORMAT # <<<<<<<<<<<<<< - * option_error = MPV_ERROR_OPTION_ERROR - * not_found = MPV_ERROR_PROPERTY_NOT_FOUND - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_format, __pyx_t_6) < 0) __PYX_ERR(0, 85, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_format, __pyx_t_6) < 0) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":86 -+ /* "vidcutter/libs/pympv/mpv.pyx":88 - * not_found = MPV_ERROR_OPTION_NOT_FOUND - * option_format = MPV_ERROR_OPTION_FORMAT - * option_error = MPV_ERROR_OPTION_ERROR # <<<<<<<<<<<<<< - * not_found = MPV_ERROR_PROPERTY_NOT_FOUND - * property_format = MPV_ERROR_PROPERTY_FORMAT - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_OPTION_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_error, __pyx_t_6) < 0) __PYX_ERR(0, 86, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_option_error, __pyx_t_6) < 0) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":87 -+ /* "vidcutter/libs/pympv/mpv.pyx":89 - * option_format = MPV_ERROR_OPTION_FORMAT - * option_error = MPV_ERROR_OPTION_ERROR - * not_found = MPV_ERROR_PROPERTY_NOT_FOUND # <<<<<<<<<<<<<< - * property_format = MPV_ERROR_PROPERTY_FORMAT - * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 87, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_6) < 0) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":88 -+ /* "vidcutter/libs/pympv/mpv.pyx":90 - * option_error = MPV_ERROR_OPTION_ERROR - * not_found = MPV_ERROR_PROPERTY_NOT_FOUND - * property_format = MPV_ERROR_PROPERTY_FORMAT # <<<<<<<<<<<<<< - * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE - * property_error = MPV_ERROR_PROPERTY_ERROR - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 88, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_format, __pyx_t_6) < 0) __PYX_ERR(0, 88, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_format, __pyx_t_6) < 0) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":89 -+ /* "vidcutter/libs/pympv/mpv.pyx":91 - * not_found = MPV_ERROR_PROPERTY_NOT_FOUND - * property_format = MPV_ERROR_PROPERTY_FORMAT - * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE # <<<<<<<<<<<<<< - * property_error = MPV_ERROR_PROPERTY_ERROR - * command_error = MPV_ERROR_COMMAND - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_UNAVAILABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_UNAVAILABLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_unavailable, __pyx_t_6) < 0) __PYX_ERR(0, 89, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_unavailable, __pyx_t_6) < 0) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":90 -+ /* "vidcutter/libs/pympv/mpv.pyx":92 - * property_format = MPV_ERROR_PROPERTY_FORMAT - * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE - * property_error = MPV_ERROR_PROPERTY_ERROR # <<<<<<<<<<<<<< - * command_error = MPV_ERROR_COMMAND - * loading_failed = MPV_ERROR_LOADING_FAILED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_PROPERTY_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_error, __pyx_t_6) < 0) __PYX_ERR(0, 90, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_error, __pyx_t_6) < 0) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":91 -+ /* "vidcutter/libs/pympv/mpv.pyx":93 - * property_unavailable = MPV_ERROR_PROPERTY_UNAVAILABLE - * property_error = MPV_ERROR_PROPERTY_ERROR - * command_error = MPV_ERROR_COMMAND # <<<<<<<<<<<<<< - * loading_failed = MPV_ERROR_LOADING_FAILED - * ao_init_failed = MPV_ERROR_AO_INIT_FAILED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_COMMAND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_COMMAND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_error, __pyx_t_6) < 0) __PYX_ERR(0, 91, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_error, __pyx_t_6) < 0) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":92 -+ /* "vidcutter/libs/pympv/mpv.pyx":94 - * property_error = MPV_ERROR_PROPERTY_ERROR - * command_error = MPV_ERROR_COMMAND - * loading_failed = MPV_ERROR_LOADING_FAILED # <<<<<<<<<<<<<< - * ao_init_failed = MPV_ERROR_AO_INIT_FAILED - * vo_init_failed = MPV_ERROR_VO_INIT_FAILED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_LOADING_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 92, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_LOADING_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_loading_failed, __pyx_t_6) < 0) __PYX_ERR(0, 92, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_loading_failed, __pyx_t_6) < 0) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":93 -+ /* "vidcutter/libs/pympv/mpv.pyx":95 - * command_error = MPV_ERROR_COMMAND - * loading_failed = MPV_ERROR_LOADING_FAILED - * ao_init_failed = MPV_ERROR_AO_INIT_FAILED # <<<<<<<<<<<<<< - * vo_init_failed = MPV_ERROR_VO_INIT_FAILED - * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_AO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_AO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ao_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 93, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ao_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":94 -+ /* "vidcutter/libs/pympv/mpv.pyx":96 - * loading_failed = MPV_ERROR_LOADING_FAILED - * ao_init_failed = MPV_ERROR_AO_INIT_FAILED - * vo_init_failed = MPV_ERROR_VO_INIT_FAILED # <<<<<<<<<<<<<< - * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY - * unknown_format = MPV_ERROR_UNKNOWN_FORMAT - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_VO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_VO_INIT_FAILED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_vo_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 94, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_vo_init_failed, __pyx_t_6) < 0) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":95 -+ /* "vidcutter/libs/pympv/mpv.pyx":97 - * ao_init_failed = MPV_ERROR_AO_INIT_FAILED - * vo_init_failed = MPV_ERROR_VO_INIT_FAILED - * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY # <<<<<<<<<<<<<< - * unknown_format = MPV_ERROR_UNKNOWN_FORMAT - * unsupported = MPV_ERROR_UNSUPPORTED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOTHING_TO_PLAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOTHING_TO_PLAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nothing_to_play, __pyx_t_6) < 0) __PYX_ERR(0, 95, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_nothing_to_play, __pyx_t_6) < 0) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":96 -+ /* "vidcutter/libs/pympv/mpv.pyx":98 - * vo_init_failed = MPV_ERROR_VO_INIT_FAILED - * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY - * unknown_format = MPV_ERROR_UNKNOWN_FORMAT # <<<<<<<<<<<<<< - * unsupported = MPV_ERROR_UNSUPPORTED - * not_implemented = MPV_ERROR_NOT_IMPLEMENTED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNKNOWN_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 96, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNKNOWN_FORMAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unknown_format, __pyx_t_6) < 0) __PYX_ERR(0, 96, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unknown_format, __pyx_t_6) < 0) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":97 -+ /* "vidcutter/libs/pympv/mpv.pyx":99 - * nothing_to_play = MPV_ERROR_NOTHING_TO_PLAY - * unknown_format = MPV_ERROR_UNKNOWN_FORMAT - * unsupported = MPV_ERROR_UNSUPPORTED # <<<<<<<<<<<<<< - * not_implemented = MPV_ERROR_NOT_IMPLEMENTED - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNSUPPORTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_UNSUPPORTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unsupported, __pyx_t_6) < 0) __PYX_ERR(0, 97, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unsupported, __pyx_t_6) < 0) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":98 -+ /* "vidcutter/libs/pympv/mpv.pyx":100 - * unknown_format = MPV_ERROR_UNKNOWN_FORMAT - * unsupported = MPV_ERROR_UNSUPPORTED - * not_implemented = MPV_ERROR_NOT_IMPLEMENTED # <<<<<<<<<<<<<< - * - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOT_IMPLEMENTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_error(MPV_ERROR_NOT_IMPLEMENTED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_implemented, __pyx_t_6) < 0) __PYX_ERR(0, 98, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_implemented, __pyx_t_6) < 0) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":72 -+ /* "vidcutter/libs/pympv/mpv.pyx":74 - * Py_Initialize() - * - * class Errors: # <<<<<<<<<<<<<< - * """Set of known error codes from MpvError and Event responses. - * - */ -- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Errors, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Errors, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Errors, __pyx_t_6) < 0) __PYX_ERR(0, 72, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Errors, __pyx_t_6) < 0) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":101 -+ /* "vidcutter/libs/pympv/mpv.pyx":103 - * - * - * class Events: # <<<<<<<<<<<<<< - * """Set of known values for Event ids. - * - */ -- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Events, __pyx_n_s_Events, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_values_for_Event_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 101, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Events, __pyx_n_s_Events, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Set_of_known_values_for_Event_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - -- /* "vidcutter/libs/pympv/mpv.pyx":108 -+ /* "vidcutter/libs/pympv/mpv.pyx":110 - * You should handle the possibility that event ids may not be any of these values. - * """ - * none = MPV_EVENT_NONE # <<<<<<<<<<<<<< - * shutdown = MPV_EVENT_SHUTDOWN - * log_message = MPV_EVENT_LOG_MESSAGE - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_6) < 0) __PYX_ERR(0, 108, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_6) < 0) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":109 -+ /* "vidcutter/libs/pympv/mpv.pyx":111 - * """ - * none = MPV_EVENT_NONE - * shutdown = MPV_EVENT_SHUTDOWN # <<<<<<<<<<<<<< - * log_message = MPV_EVENT_LOG_MESSAGE - * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SHUTDOWN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SHUTDOWN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_shutdown, __pyx_t_6) < 0) __PYX_ERR(0, 109, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_shutdown, __pyx_t_6) < 0) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":110 -+ /* "vidcutter/libs/pympv/mpv.pyx":112 - * none = MPV_EVENT_NONE - * shutdown = MPV_EVENT_SHUTDOWN - * log_message = MPV_EVENT_LOG_MESSAGE # <<<<<<<<<<<<<< - * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY - * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_LOG_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 110, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_LOG_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_log_message, __pyx_t_6) < 0) __PYX_ERR(0, 110, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_log_message, __pyx_t_6) < 0) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":111 -+ /* "vidcutter/libs/pympv/mpv.pyx":113 - * shutdown = MPV_EVENT_SHUTDOWN - * log_message = MPV_EVENT_LOG_MESSAGE - * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY # <<<<<<<<<<<<<< - * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY - * command_reply = MPV_EVENT_COMMAND_REPLY - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_GET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_GET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_get_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 111, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_get_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":112 -+ /* "vidcutter/libs/pympv/mpv.pyx":114 - * log_message = MPV_EVENT_LOG_MESSAGE - * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY - * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY # <<<<<<<<<<<<<< - * command_reply = MPV_EVENT_COMMAND_REPLY - * start_file = MPV_EVENT_START_FILE - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 112, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SET_PROPERTY_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_set_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 112, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_set_property_reply, __pyx_t_6) < 0) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":113 -+ /* "vidcutter/libs/pympv/mpv.pyx":115 - * get_property_reply = MPV_EVENT_GET_PROPERTY_REPLY - * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY - * command_reply = MPV_EVENT_COMMAND_REPLY # <<<<<<<<<<<<<< - * start_file = MPV_EVENT_START_FILE - * end_file = MPV_EVENT_END_FILE - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_COMMAND_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_COMMAND_REPLY); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_reply, __pyx_t_6) < 0) __PYX_ERR(0, 113, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_command_reply, __pyx_t_6) < 0) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":114 -+ /* "vidcutter/libs/pympv/mpv.pyx":116 - * set_property_reply = MPV_EVENT_SET_PROPERTY_REPLY - * command_reply = MPV_EVENT_COMMAND_REPLY - * start_file = MPV_EVENT_START_FILE # <<<<<<<<<<<<<< - * end_file = MPV_EVENT_END_FILE - * file_loaded = MPV_EVENT_FILE_LOADED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_START_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_START_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_start_file, __pyx_t_6) < 0) __PYX_ERR(0, 114, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_start_file, __pyx_t_6) < 0) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":115 -+ /* "vidcutter/libs/pympv/mpv.pyx":117 - * command_reply = MPV_EVENT_COMMAND_REPLY - * start_file = MPV_EVENT_START_FILE - * end_file = MPV_EVENT_END_FILE # <<<<<<<<<<<<<< - * file_loaded = MPV_EVENT_FILE_LOADED - * # tracks_changed = MPV_EVENT_TRACKS_CHANGED - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_END_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_END_FILE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_end_file, __pyx_t_6) < 0) __PYX_ERR(0, 115, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_end_file, __pyx_t_6) < 0) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":116 -+ /* "vidcutter/libs/pympv/mpv.pyx":118 - * 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 - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_FILE_LOADED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_FILE_LOADED); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_file_loaded, __pyx_t_6) < 0) __PYX_ERR(0, 116, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_file_loaded, __pyx_t_6) < 0) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":119 -+ /* "vidcutter/libs/pympv/mpv.pyx":121 - * # tracks_changed = MPV_EVENT_TRACKS_CHANGED - * # tracks_switched = MPV_EVENT_TRACK_SWITCHED - * idle = MPV_EVENT_IDLE # <<<<<<<<<<<<<< - * # pause = MPV_EVENT_PAUSE - * # unpause = MPV_EVENT_UNPAUSE - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_IDLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_IDLE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_idle, __pyx_t_6) < 0) __PYX_ERR(0, 119, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_idle, __pyx_t_6) < 0) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":122 -+ /* "vidcutter/libs/pympv/mpv.pyx":124 - * # 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 - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TICK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_TICK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tick, __pyx_t_6) < 0) __PYX_ERR(0, 122, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_tick, __pyx_t_6) < 0) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":124 -+ /* "vidcutter/libs/pympv/mpv.pyx":126 - * 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 - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CLIENT_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_CLIENT_MESSAGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_client_message, __pyx_t_6) < 0) __PYX_ERR(0, 124, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_client_message, __pyx_t_6) < 0) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":125 -+ /* "vidcutter/libs/pympv/mpv.pyx":127 - * # 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 - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_VIDEO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_VIDEO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 127, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_video_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 125, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_video_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 127, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":126 -+ /* "vidcutter/libs/pympv/mpv.pyx":128 - * 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 - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_AUDIO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_AUDIO_RECONFIG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_audio_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 126, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_audio_reconfig, __pyx_t_6) < 0) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":128 -+ /* "vidcutter/libs/pympv/mpv.pyx":130 - * 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 - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SEEK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_SEEK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_seek, __pyx_t_6) < 0) __PYX_ERR(0, 128, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_seek, __pyx_t_6) < 0) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":129 -+ /* "vidcutter/libs/pympv/mpv.pyx":131 - * # 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 - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PLAYBACK_RESTART); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 129, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PLAYBACK_RESTART); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 131, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_playback_restart, __pyx_t_6) < 0) __PYX_ERR(0, 129, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_playback_restart, __pyx_t_6) < 0) __PYX_ERR(0, 131, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":130 -+ /* "vidcutter/libs/pympv/mpv.pyx":132 - * seek = MPV_EVENT_SEEK - * playback_restart = MPV_EVENT_PLAYBACK_RESTART - * property_change = MPV_EVENT_PROPERTY_CHANGE # <<<<<<<<<<<<<< - * # chapter_change = MPV_EVENT_CHAPTER_CHANGE - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PROPERTY_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 130, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_event_id(MPV_EVENT_PROPERTY_CHANGE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 132, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_change, __pyx_t_6) < 0) __PYX_ERR(0, 130, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_property_change, __pyx_t_6) < 0) __PYX_ERR(0, 132, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":101 -+ /* "vidcutter/libs/pympv/mpv.pyx":103 - * - * - * class Events: # <<<<<<<<<<<<<< - * """Set of known values for Event ids. - * - */ -- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Events, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Events, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_Events, __pyx_t_6) < 0) __PYX_ERR(0, 101, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_Events, __pyx_t_6) < 0) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":134 -+ /* "vidcutter/libs/pympv/mpv.pyx":136 - * - * - * class LogLevels: # <<<<<<<<<<<<<< - * no = MPV_LOG_LEVEL_NONE - * fatal = MPV_LOG_LEVEL_FATAL - */ -- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LogLevels, __pyx_n_s_LogLevels, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 134, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LogLevels, __pyx_n_s_LogLevels, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - -- /* "vidcutter/libs/pympv/mpv.pyx":135 -+ /* "vidcutter/libs/pympv/mpv.pyx":137 - * - * class LogLevels: - * no = MPV_LOG_LEVEL_NONE # <<<<<<<<<<<<<< - * fatal = MPV_LOG_LEVEL_FATAL - * error = MPV_LOG_LEVEL_ERROR - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 135, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_no, __pyx_t_6) < 0) __PYX_ERR(0, 135, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_no, __pyx_t_6) < 0) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":136 -+ /* "vidcutter/libs/pympv/mpv.pyx":138 - * class LogLevels: - * no = MPV_LOG_LEVEL_NONE - * fatal = MPV_LOG_LEVEL_FATAL # <<<<<<<<<<<<<< - * error = MPV_LOG_LEVEL_ERROR - * warn = MPV_LOG_LEVEL_WARN - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_FATAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_FATAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_fatal, __pyx_t_6) < 0) __PYX_ERR(0, 136, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_fatal, __pyx_t_6) < 0) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":137 -+ /* "vidcutter/libs/pympv/mpv.pyx":139 - * no = MPV_LOG_LEVEL_NONE - * fatal = MPV_LOG_LEVEL_FATAL - * error = MPV_LOG_LEVEL_ERROR # <<<<<<<<<<<<<< - * warn = MPV_LOG_LEVEL_WARN - * info = MPV_LOG_LEVEL_INFO - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 137, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 139, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":138 -+ /* "vidcutter/libs/pympv/mpv.pyx":140 - * fatal = MPV_LOG_LEVEL_FATAL - * error = MPV_LOG_LEVEL_ERROR - * warn = MPV_LOG_LEVEL_WARN # <<<<<<<<<<<<<< - * info = MPV_LOG_LEVEL_INFO - * v = MPV_LOG_LEVEL_V - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_WARN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 138, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_WARN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_warn, __pyx_t_6) < 0) __PYX_ERR(0, 138, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_warn, __pyx_t_6) < 0) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":139 -+ /* "vidcutter/libs/pympv/mpv.pyx":141 - * error = MPV_LOG_LEVEL_ERROR - * warn = MPV_LOG_LEVEL_WARN - * info = MPV_LOG_LEVEL_INFO # <<<<<<<<<<<<<< - * v = MPV_LOG_LEVEL_V - * debug = MPV_LOG_LEVEL_DEBUG - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_INFO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 139, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_INFO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_info, __pyx_t_6) < 0) __PYX_ERR(0, 139, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_info, __pyx_t_6) < 0) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":140 -+ /* "vidcutter/libs/pympv/mpv.pyx":142 - * warn = MPV_LOG_LEVEL_WARN - * info = MPV_LOG_LEVEL_INFO - * v = MPV_LOG_LEVEL_V # <<<<<<<<<<<<<< - * debug = MPV_LOG_LEVEL_DEBUG - * trace = MPV_LOG_LEVEL_TRACE - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_V); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_V); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_v, __pyx_t_6) < 0) __PYX_ERR(0, 140, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_v, __pyx_t_6) < 0) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":141 -+ /* "vidcutter/libs/pympv/mpv.pyx":143 - * info = MPV_LOG_LEVEL_INFO - * v = MPV_LOG_LEVEL_V - * debug = MPV_LOG_LEVEL_DEBUG # <<<<<<<<<<<<<< - * trace = MPV_LOG_LEVEL_TRACE - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_DEBUG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 141, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_DEBUG); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_debug, __pyx_t_6) < 0) __PYX_ERR(0, 141, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_debug, __pyx_t_6) < 0) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":142 -+ /* "vidcutter/libs/pympv/mpv.pyx":144 - * v = MPV_LOG_LEVEL_V - * debug = MPV_LOG_LEVEL_DEBUG - * trace = MPV_LOG_LEVEL_TRACE # <<<<<<<<<<<<<< - * - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_TRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_log_level(MPV_LOG_LEVEL_TRACE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_trace, __pyx_t_6) < 0) __PYX_ERR(0, 142, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_trace, __pyx_t_6) < 0) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":134 -+ /* "vidcutter/libs/pympv/mpv.pyx":136 - * - * - * class LogLevels: # <<<<<<<<<<<<<< - * no = MPV_LOG_LEVEL_NONE - * fatal = MPV_LOG_LEVEL_FATAL - */ -- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LogLevels, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 134, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LogLevels, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_LogLevels, __pyx_t_6) < 0) __PYX_ERR(0, 134, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_LogLevels, __pyx_t_6) < 0) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":145 -+ /* "vidcutter/libs/pympv/mpv.pyx":147 - * - * - * class EOFReasons: # <<<<<<<<<<<<<< - * """Known possible values for EndOfFileReached reason. - * - */ -- __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOFReasons, __pyx_n_s_EOFReasons, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Known_possible_values_for_EndOfF); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 145, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOFReasons, __pyx_n_s_EOFReasons, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_kp_s_Known_possible_values_for_EndOfF); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 147, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - -- /* "vidcutter/libs/pympv/mpv.pyx":150 -+ /* "vidcutter/libs/pympv/mpv.pyx":152 - * You should handle the possibility that the reason may not be any of these values. - * """ - * eof = MPV_END_FILE_REASON_EOF # <<<<<<<<<<<<<< - * aborted = MPV_END_FILE_REASON_STOP - * quit = MPV_END_FILE_REASON_QUIT - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_eof, __pyx_t_6) < 0) __PYX_ERR(0, 150, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_eof, __pyx_t_6) < 0) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":151 -+ /* "vidcutter/libs/pympv/mpv.pyx":153 - * """ - * eof = MPV_END_FILE_REASON_EOF - * aborted = MPV_END_FILE_REASON_STOP # <<<<<<<<<<<<<< - * quit = MPV_END_FILE_REASON_QUIT - * error = MPV_END_FILE_REASON_ERROR - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_STOP); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_STOP); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 153, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_aborted, __pyx_t_6) < 0) __PYX_ERR(0, 151, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_aborted, __pyx_t_6) < 0) __PYX_ERR(0, 153, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":152 -+ /* "vidcutter/libs/pympv/mpv.pyx":154 - * eof = MPV_END_FILE_REASON_EOF - * aborted = MPV_END_FILE_REASON_STOP - * quit = MPV_END_FILE_REASON_QUIT # <<<<<<<<<<<<<< - * error = MPV_END_FILE_REASON_ERROR - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_QUIT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_QUIT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 154, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_quit, __pyx_t_6) < 0) __PYX_ERR(0, 152, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_quit, __pyx_t_6) < 0) __PYX_ERR(0, 154, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":153 -+ /* "vidcutter/libs/pympv/mpv.pyx":155 - * aborted = MPV_END_FILE_REASON_STOP - * quit = MPV_END_FILE_REASON_QUIT - * error = MPV_END_FILE_REASON_ERROR # <<<<<<<<<<<<<< - * - * - */ -- __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 153, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_PyInt_From_enum__mpv_end_file_reason(MPV_END_FILE_REASON_ERROR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 153, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_6) < 0) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":145 -+ /* "vidcutter/libs/pympv/mpv.pyx":147 - * - * - * class EOFReasons: # <<<<<<<<<<<<<< - * """Known possible values for EndOfFileReached reason. - * - */ -- __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_EOFReasons, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_EOFReasons, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 147, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOFReasons, __pyx_t_6) < 0) __PYX_ERR(0, 145, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOFReasons, __pyx_t_6) < 0) __PYX_ERR(0, 147, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":318 -+ /* "vidcutter/libs/pympv/mpv.pyx":320 - * - * - * def _errors(fn): # <<<<<<<<<<<<<< - * def wrapped(*k, **kw): - * v = fn(*k, **kw) - */ -- __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_5_errors, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 318, __pyx_L1_error) -+ __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_9vidcutter_4libs_3mpv_5_errors, NULL, __pyx_n_s_vidcutter_libs_mpv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 320, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_7) < 0) __PYX_ERR(0, 318, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_errors, __pyx_t_7) < 0) __PYX_ERR(0, 320, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":326 -+ /* "vidcutter/libs/pympv/mpv.pyx":328 - * - * - * class MPVError(Exception): # <<<<<<<<<<<<<< - * code = None - * - */ -- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 326, __pyx_L1_error) -+ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -- __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 326, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_MPVError, __pyx_n_s_MPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 326, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_MPVError, __pyx_n_s_MPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - -- /* "vidcutter/libs/pympv/mpv.pyx":327 -+ /* "vidcutter/libs/pympv/mpv.pyx":329 - * - * class MPVError(Exception): - * code = None # <<<<<<<<<<<<<< - * - * def __init__(self, e): - */ -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_code, Py_None) < 0) __PYX_ERR(0, 327, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_code, Py_None) < 0) __PYX_ERR(0, 329, __pyx_L1_error) - -- /* "vidcutter/libs/pympv/mpv.pyx":329 -+ /* "vidcutter/libs/pympv/mpv.pyx":331 - * code = None - * - * def __init__(self, e): # <<<<<<<<<<<<<< - * self.code = e - * cdef const char* err_c - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__, 0, __pyx_n_s_MPVError___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_8MPVError_1__init__, 0, __pyx_n_s_MPVError___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 329, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 331, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":326 -+ /* "vidcutter/libs/pympv/mpv.pyx":328 - * - * - * class MPVError(Exception): # <<<<<<<<<<<<<< - * code = None - * - */ -- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_MPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPVError, __pyx_t_1) < 0) __PYX_ERR(0, 326, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_MPVError, __pyx_t_1) < 0) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":340 -+ /* "vidcutter/libs/pympv/mpv.pyx":342 - * Exception.__init__(self, e) - * - * class PyMPVError(Exception): # <<<<<<<<<<<<<< - * pass - * - */ -- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 340, __pyx_L1_error) -+ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); -- __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 340, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); -- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_PyMPVError, __pyx_n_s_PyMPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_7, __pyx_n_s_PyMPVError, __pyx_n_s_PyMPVError, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_PyMPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_PyMPVError, __pyx_t_7, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyMPVError, __pyx_t_1) < 0) __PYX_ERR(0, 340, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyMPVError, __pyx_t_1) < 0) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":343 -+ /* "vidcutter/libs/pympv/mpv.pyx":345 - * pass - * - * cdef _callbacks = dict() # <<<<<<<<<<<<<< - * cdef _reply_userdatas = dict() - * - */ -- __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 343, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__callbacks); - __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__callbacks, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":344 -+ /* "vidcutter/libs/pympv/mpv.pyx":346 - * - * cdef _callbacks = dict() - * cdef _reply_userdatas = dict() # <<<<<<<<<<<<<< - * - * class _ReplyUserData(object): - */ -- __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 344, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas); - __Pyx_DECREF_SET(__pyx_v_9vidcutter_4libs_3mpv__reply_userdatas, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":346 -+ /* "vidcutter/libs/pympv/mpv.pyx":348 - * cdef _reply_userdatas = dict() - * - * class _ReplyUserData(object): # <<<<<<<<<<<<<< - * def __init__(self, data): - * self.counter = 0 - */ -- __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__27, __pyx_n_s_ReplyUserData, __pyx_n_s_ReplyUserData, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 346, __pyx_L1_error) -+ __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__27, __pyx_n_s_ReplyUserData, __pyx_n_s_ReplyUserData, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":347 -+ /* "vidcutter/libs/pympv/mpv.pyx":349 - * - * class _ReplyUserData(object): - * def __init__(self, data): # <<<<<<<<<<<<<< - * self.counter = 0 - * self.data = data - */ -- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, 0, __pyx_n_s_ReplyUserData___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_1__init__, 0, __pyx_n_s_ReplyUserData___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 347, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 349, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":352 -+ /* "vidcutter/libs/pympv/mpv.pyx":354 - * self.observed = False - * - * def add(self): # <<<<<<<<<<<<<< - * self.counter += 1 - * - */ -- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, 0, __pyx_n_s_ReplyUserData_add, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_3add, 0, __pyx_n_s_ReplyUserData_add, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_add, __pyx_t_4) < 0) __PYX_ERR(0, 352, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_add, __pyx_t_4) < 0) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":355 -+ /* "vidcutter/libs/pympv/mpv.pyx":357 - * self.counter += 1 - * - * def remove(self): # <<<<<<<<<<<<<< - * self.counter -= 1 - * - */ -- __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, 0, __pyx_n_s_ReplyUserData_remove, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14_ReplyUserData_5remove, 0, __pyx_n_s_ReplyUserData_remove, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_remove, __pyx_t_4) < 0) __PYX_ERR(0, 355, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_remove, __pyx_t_4) < 0) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":346 -+ /* "vidcutter/libs/pympv/mpv.pyx":348 - * cdef _reply_userdatas = dict() - * - * class _ReplyUserData(object): # <<<<<<<<<<<<<< - * def __init__(self, data): - * self.counter = 0 - */ -- __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ReplyUserData, __pyx_tuple__27, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ReplyUserData, __pyx_tuple__27, __pyx_t_6, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplyUserData, __pyx_t_4) < 0) __PYX_ERR(0, 346, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_ReplyUserData, __pyx_t_4) < 0) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":411 -+ /* "vidcutter/libs/pympv/mpv.pyx":413 - * # mpv_resume(self._ctx) - * - * @_errors # <<<<<<<<<<<<<< - * def request_event(self, event, enable): - * """Enable or disable a given event. - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":412 -+ /* "vidcutter/libs/pympv/mpv.pyx":414 - * - * @_errors - * def request_event(self, event, enable): # <<<<<<<<<<<<<< - * """Enable or disable a given event. - * - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_request_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_request_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26465,31 +26465,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_request_event, __pyx_t_7) < 0) __PYX_ERR(0, 412, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_request_event, __pyx_t_7) < 0) __PYX_ERR(0, 414, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":429 -+ /* "vidcutter/libs/pympv/mpv.pyx":431 - * return err - * - * @_errors # <<<<<<<<<<<<<< - * def set_log_level(self, loglevel): - * """Wraps: mpv_request_log_messages""" - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 429, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":430 -+ /* "vidcutter/libs/pympv/mpv.pyx":432 - * - * @_errors - * def set_log_level(self, loglevel): # <<<<<<<<<<<<<< - * """Wraps: mpv_request_log_messages""" - * assert self._ctx - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_log_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26504,31 +26504,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 429, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_log_level, __pyx_t_7) < 0) __PYX_ERR(0, 430, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_log_level, __pyx_t_7) < 0) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":440 -+ /* "vidcutter/libs/pympv/mpv.pyx":442 - * return err - * - * @_errors # <<<<<<<<<<<<<< - * def load_config(self, filename): - * """Wraps: mpv_load_config_file""" - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 440, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 442, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":441 -+ /* "vidcutter/libs/pympv/mpv.pyx":443 - * - * @_errors - * def load_config(self, filename): # <<<<<<<<<<<<<< - * """Wraps: mpv_load_config_file""" - * assert self._ctx - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_load_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_load_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 443, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26543,31 +26543,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 440, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 442, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_load_config, __pyx_t_7) < 0) __PYX_ERR(0, 441, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_load_config, __pyx_t_7) < 0) __PYX_ERR(0, 443, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":573 -+ /* "vidcutter/libs/pympv/mpv.pyx":575 - * return result - * - * @_errors # <<<<<<<<<<<<<< - * def get_property_async(self, prop, data=None): - * """Gets the value of a property asynchronously. - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 573, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":574 -+ /* "vidcutter/libs/pympv/mpv.pyx":576 - * - * @_errors - * def get_property_async(self, prop, data=None): # <<<<<<<<<<<<<< - * """Gets the value of a property asynchronously. - * - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_get_property_async); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 576, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26582,31 +26582,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 573, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_get_property_async, __pyx_t_7) < 0) __PYX_ERR(0, 574, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_get_property_async, __pyx_t_7) < 0) __PYX_ERR(0, 576, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":635 -+ /* "vidcutter/libs/pympv/mpv.pyx":637 - * return v - * - * @_errors # <<<<<<<<<<<<<< - * def set_property(self, prop, value=True, asynchronous=False, data=None): - * """Wraps: mpv_set_property and mpv_set_property_async""" - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 635, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":636 -+ /* "vidcutter/libs/pympv/mpv.pyx":638 - * - * @_errors - * def set_property(self, prop, value=True, asynchronous=False, data=None): # <<<<<<<<<<<<<< - * """Wraps: mpv_set_property and mpv_set_property_async""" - * assert self._ctx - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 636, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 638, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26621,31 +26621,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 635, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_property, __pyx_t_7) < 0) __PYX_ERR(0, 636, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_property, __pyx_t_7) < 0) __PYX_ERR(0, 638, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":673 -+ /* "vidcutter/libs/pympv/mpv.pyx":675 - * return err - * - * @_errors # <<<<<<<<<<<<<< - * def set_option(self, prop, value=True): - * """Wraps: mpv_set_option""" - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 673, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 675, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":674 -+ /* "vidcutter/libs/pympv/mpv.pyx":676 - * - * @_errors - * def set_option(self, prop, value=True): # <<<<<<<<<<<<<< - * """Wraps: mpv_set_option""" - * assert self._ctx - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_option); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 674, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_set_option); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 676, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26660,31 +26660,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 673, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 675, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_option, __pyx_t_7) < 0) __PYX_ERR(0, 674, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_set_option, __pyx_t_7) < 0) __PYX_ERR(0, 676, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":695 -+ /* "vidcutter/libs/pympv/mpv.pyx":697 - * return err - * - * @_errors # <<<<<<<<<<<<<< - * def initialize(self): - * """Wraps: mpv_initialize""" - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 697, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":696 -+ /* "vidcutter/libs/pympv/mpv.pyx":698 - * - * @_errors - * def initialize(self): # <<<<<<<<<<<<<< - * """Wraps: mpv_initialize""" - * assert self._ctx - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_initialize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_initialize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 698, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26699,31 +26699,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 695, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 697, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_initialize, __pyx_t_7) < 0) __PYX_ERR(0, 696, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_initialize, __pyx_t_7) < 0) __PYX_ERR(0, 698, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":748 -+ /* "vidcutter/libs/pympv/mpv.pyx":750 - * self.callbackthread.start() - * - * @_errors # <<<<<<<<<<<<<< - * def observe_property(self, prop, data=None): - * """Wraps: mpv_observe_property""" - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 748, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 750, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":749 -+ /* "vidcutter/libs/pympv/mpv.pyx":751 - * - * @_errors - * def observe_property(self, prop, data=None): # <<<<<<<<<<<<<< - * """Wraps: mpv_observe_property""" - * assert self._ctx - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_observe_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_observe_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 751, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26738,31 +26738,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 748, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 750, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_observe_property, __pyx_t_7) < 0) __PYX_ERR(0, 749, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_observe_property, __pyx_t_7) < 0) __PYX_ERR(0, 751, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":770 -+ /* "vidcutter/libs/pympv/mpv.pyx":772 - * return err - * - * @_errors # <<<<<<<<<<<<<< - * def unobserve_property(self, data): - * """Wraps: mpv_unobserve_property""" - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 770, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 772, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":771 -+ /* "vidcutter/libs/pympv/mpv.pyx":773 - * - * @_errors - * def unobserve_property(self, data): # <<<<<<<<<<<<<< - * """Wraps: mpv_unobserve_property""" - * assert self._ctx - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_unobserve_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 771, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context, __pyx_n_s_unobserve_property); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 773, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26777,54 +26777,54 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 770, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 772, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_unobserve_property, __pyx_t_7) < 0) __PYX_ERR(0, 771, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_Context->tp_dict, __pyx_n_s_unobserve_property, __pyx_t_7) < 0) __PYX_ERR(0, 773, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_Context); - -- /* "vidcutter/libs/pympv/mpv.pyx":938 -+ /* "vidcutter/libs/pympv/mpv.pyx":940 - * - * cdef class RenderContext(object): - * API_OPENGL = "opengl" # <<<<<<<<<<<<<< - * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME - * - */ -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_API_OPENGL, __pyx_n_s_opengl) < 0) __PYX_ERR(0, 938, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_API_OPENGL, __pyx_n_s_opengl) < 0) __PYX_ERR(0, 940, __pyx_L1_error) - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - -- /* "vidcutter/libs/pympv/mpv.pyx":939 -+ /* "vidcutter/libs/pympv/mpv.pyx":941 - * cdef class RenderContext(object): - * API_OPENGL = "opengl" - * UPDATE_FRAME = MPV_RENDER_UPDATE_FRAME # <<<<<<<<<<<<<< - * - * cdef: - */ -- __pyx_t_7 = __Pyx_PyInt_From_enum__mpv_render_update_flag(MPV_RENDER_UPDATE_FRAME); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 939, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_PyInt_From_enum__mpv_render_update_flag(MPV_RENDER_UPDATE_FRAME); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 941, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_UPDATE_FRAME, __pyx_t_7) < 0) __PYX_ERR(0, 939, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_UPDATE_FRAME, __pyx_t_7) < 0) __PYX_ERR(0, 941, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - -- /* "vidcutter/libs/pympv/mpv.pyx":1009 -+ /* "vidcutter/libs/pympv/mpv.pyx":1011 - * self.inited = True - * - * @_errors # <<<<<<<<<<<<<< - * def set_icc_profile(self, icc_blob): - * cdef: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1009, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1011, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":1010 -+ /* "vidcutter/libs/pympv/mpv.pyx":1012 - * - * @_errors - * def set_icc_profile(self, icc_blob): # <<<<<<<<<<<<<< - * cdef: - * mpv_render_param param - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_icc_profile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1010, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_icc_profile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1012, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26839,31 +26839,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1009, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1011, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_icc_profile, __pyx_t_7) < 0) __PYX_ERR(0, 1010, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_icc_profile, __pyx_t_7) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - -- /* "vidcutter/libs/pympv/mpv.pyx":1028 -+ /* "vidcutter/libs/pympv/mpv.pyx":1030 - * return err - * - * @_errors # <<<<<<<<<<<<<< - * def set_ambient_light(self, lux): - * cdef: - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1028, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1030, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":1029 -+ /* "vidcutter/libs/pympv/mpv.pyx":1031 - * - * @_errors - * def set_ambient_light(self, lux): # <<<<<<<<<<<<<< - * cdef: - * mpv_render_param param - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_ambient_light); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1029, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_set_ambient_light); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1031, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26878,31 +26878,31 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1030, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_ambient_light, __pyx_t_7) < 0) __PYX_ERR(0, 1029, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_set_ambient_light, __pyx_t_7) < 0) __PYX_ERR(0, 1031, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - -- /* "vidcutter/libs/pympv/mpv.pyx":1068 -+ /* "vidcutter/libs/pympv/mpv.pyx":1070 - * return ret - * - * @_errors # <<<<<<<<<<<<<< - * def render(self, - * opengl_fbo=None, - */ -- __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1068, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_errors); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1070, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - -- /* "vidcutter/libs/pympv/mpv.pyx":1069 -+ /* "vidcutter/libs/pympv/mpv.pyx":1071 - * - * @_errors - * def render(self, # <<<<<<<<<<<<<< - * opengl_fbo=None, - * flip_y=False, - */ -- __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1069, __pyx_L1_error) -+ __Pyx_GetNameInClass(__pyx_t_4, (PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1071, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { -@@ -26917,114 +26917,114 @@ if (!__Pyx_RefNanny) { - __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -- if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1068, __pyx_L1_error) -+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1070, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -- if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_render, __pyx_t_7) < 0) __PYX_ERR(0, 1069, __pyx_L1_error) -+ if (PyDict_SetItem((PyObject *)__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext->tp_dict, __pyx_n_s_render, __pyx_t_7) < 0) __PYX_ERR(0, 1071, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_9vidcutter_4libs_3mpv_RenderContext); - -- /* "vidcutter/libs/pympv/mpv.pyx":1132 -+ /* "vidcutter/libs/pympv/mpv.pyx":1134 - * init_params, *args, **kwargs) - * - * class CallbackThread(Thread): # <<<<<<<<<<<<<< - * def __init__(self): - * Thread.__init__(self) - */ -- __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); - __pyx_t_7 = 0; -- __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); -- __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_6, __pyx_n_s_CallbackThread, __pyx_n_s_CallbackThread, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_6, __pyx_n_s_CallbackThread, __pyx_n_s_CallbackThread, (PyObject *) NULL, __pyx_n_s_vidcutter_libs_mpv, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - -- /* "vidcutter/libs/pympv/mpv.pyx":1133 -+ /* "vidcutter/libs/pympv/mpv.pyx":1135 - * - * class CallbackThread(Thread): - * def __init__(self): # <<<<<<<<<<<<<< - * Thread.__init__(self) - * self.daemon = True - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, 0, __pyx_n_s_CallbackThread___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_1__init__, 0, __pyx_n_s_CallbackThread___init, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1135, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 1133, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1141 -+ /* "vidcutter/libs/pympv/mpv.pyx":1143 - * self.isshutdown = False - * - * def shutdown(self): # <<<<<<<<<<<<<< - * self.isshutdown = True - * self.callback = None - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, 0, __pyx_n_s_CallbackThread_shutdown, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_3shutdown, 0, __pyx_n_s_CallbackThread_shutdown, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_shutdown, __pyx_t_1) < 0) __PYX_ERR(0, 1141, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_shutdown, __pyx_t_1) < 0) __PYX_ERR(0, 1143, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1146 -+ /* "vidcutter/libs/pympv/mpv.pyx":1148 - * self.lock.release() - * - * def call(self): # <<<<<<<<<<<<<< - * self.lock.release() - * - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call, 0, __pyx_n_s_CallbackThread_call, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_5call, 0, __pyx_n_s_CallbackThread_call, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_call, __pyx_t_1) < 0) __PYX_ERR(0, 1146, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_call, __pyx_t_1) < 0) __PYX_ERR(0, 1148, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1149 -+ /* "vidcutter/libs/pympv/mpv.pyx":1151 - * self.lock.release() - * - * def set(self, callback): # <<<<<<<<<<<<<< - * self.callback = callback - * - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set, 0, __pyx_n_s_CallbackThread_set, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_7set, 0, __pyx_n_s_CallbackThread_set, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_set, __pyx_t_1) < 0) __PYX_ERR(0, 1149, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_set, __pyx_t_1) < 0) __PYX_ERR(0, 1151, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1152 -+ /* "vidcutter/libs/pympv/mpv.pyx":1154 - * self.callback = callback - * - * def run(self): # <<<<<<<<<<<<<< - * while not self.isshutdown: - * self.lock.acquire(True) - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run, 0, __pyx_n_s_CallbackThread_run, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1152, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_9run, 0, __pyx_n_s_CallbackThread_run, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_run, __pyx_t_1) < 0) __PYX_ERR(0, 1152, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_run, __pyx_t_1) < 0) __PYX_ERR(0, 1154, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1157 -+ /* "vidcutter/libs/pympv/mpv.pyx":1159 - * self.mpv_callback(self.callback) if self.callback else None - * - * def mpv_callback(self, callback): # <<<<<<<<<<<<<< - * try: - * callback() - */ -- __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, 0, __pyx_n_s_CallbackThread_mpv_callback, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1157, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9vidcutter_4libs_3mpv_14CallbackThread_11mpv_callback, 0, __pyx_n_s_CallbackThread_mpv_callback, NULL, __pyx_n_s_vidcutter_libs_mpv, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mpv_callback, __pyx_t_1) < 0) __PYX_ERR(0, 1157, __pyx_L1_error) -+ if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_n_s_mpv_callback, __pyx_t_1) < 0) __PYX_ERR(0, 1159, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - -- /* "vidcutter/libs/pympv/mpv.pyx":1132 -+ /* "vidcutter/libs/pympv/mpv.pyx":1134 - * init_params, *args, **kwargs) - * - * class CallbackThread(Thread): # <<<<<<<<<<<<<< - * def __init__(self): - * Thread.__init__(self) - */ -- __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_CallbackThread, __pyx_t_6, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1132, __pyx_L1_error) -+ __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_CallbackThread, __pyx_t_6, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); -- if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallbackThread, __pyx_t_1) < 0) __PYX_ERR(0, 1132, __pyx_L1_error) -+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallbackThread, __pyx_t_1) < 0) __PYX_ERR(0, 1134, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; diff --git a/vidcutter/libs/pympv/mpv.pyx b/vidcutter/libs/pympv/mpv.pyx index 8af2dcc7..1decdda8 100644 --- a/vidcutter/libs/pympv/mpv.pyx diff --git a/srcpkgs/vidcutter/template b/srcpkgs/vidcutter/template index 93e6dbefaacc..6eddc1345ec1 100644 --- a/srcpkgs/vidcutter/template +++ b/srcpkgs/vidcutter/template @@ -11,9 +11,15 @@ short_desc="Video cutter and joiner based on FFmpeg" maintainer="Orphaned " license="GPL-3.0-or-later" homepage="https://github.com/ozmartian/vidcutter" -distfiles="https://github.com/ozmartian/vidcutter/archive/refs/tags/${version}.tar.gz" -checksum=c6374eaedb845f9e580e555dd12c1db1cf2ffa28d3756b08e2ae28c1a4cd4a96 +# pympv isn't packaged because it will create a package conflicts with +# python3-mpv +distfiles="https://github.com/ozmartian/vidcutter/archive/refs/tags/${version}.tar.gz + https://github.com/marcan/pympv/archive/refs/tags/v0.7.1.tar.gz" +checksum="c6374eaedb845f9e580e555dd12c1db1cf2ffa28d3756b08e2ae28c1a4cd4a96 + 1d262e7fb2531d27633bdc2334fbc1c3ce094457a6a8f3cfc1c6c9799c1ef202" -pre_build() { - rm -f vidcutter/libs/pympv/mpv.c +post_extract() { + mv vidcutter-*/* . + rm -rf vidcutter/libs/pympv + mv pympv-* vidcutter/libs/pympv }