diff options
author | Bernard Cafarelli <voyageur@gentoo.org> | 2019-10-17 19:48:16 +0200 |
---|---|---|
committer | Bernard Cafarelli <voyageur@gentoo.org> | 2019-10-17 19:48:31 +0200 |
commit | 2942cf2265fdc3ff187eaad18afb7d19d0a469fa (patch) | |
tree | 7e872c858bdaf614129601408e88705213d9d240 /media-video/orion/files/orion-1.6.6-mpv_backwards.patch | |
parent | dev-python/awscli: bump to v1.16.261 (diff) | |
download | gentoo-2942cf2265fdc3ff187eaad18afb7d19d0a469fa.tar.gz gentoo-2942cf2265fdc3ff187eaad18afb7d19d0a469fa.tar.bz2 gentoo-2942cf2265fdc3ff187eaad18afb7d19d0a469fa.zip |
media-video/orion: 1.6.6 bump
This actually requires both qtquickcontrols 1 and 2
Backport some master changes to work with mpv and chromium
Package-Manager: Portage-2.3.77, Repoman-2.3.17
Signed-off-by: Bernard Cafarelli <voyageur@gentoo.org>
Diffstat (limited to 'media-video/orion/files/orion-1.6.6-mpv_backwards.patch')
-rw-r--r-- | media-video/orion/files/orion-1.6.6-mpv_backwards.patch | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/media-video/orion/files/orion-1.6.6-mpv_backwards.patch b/media-video/orion/files/orion-1.6.6-mpv_backwards.patch new file mode 100644 index 000000000000..4cd302cb3d1f --- /dev/null +++ b/media-video/orion/files/orion-1.6.6-mpv_backwards.patch @@ -0,0 +1,147 @@ +From 755fae82a31105808ec978855803f52affa01f87 Mon Sep 17 00:00:00 2001 +From: mrgreywater <mr.greywater@googlemail.com> +Date: Fri, 19 Oct 2018 22:21:07 +0200 +Subject: [PATCH] opengl-cb backward compatibility + +--- + src/player/mpvobject.cpp | 43 ++++++++++++++++++++++++++++++++++------ + src/player/mpvobject.h | 15 +++++++++++++- + 2 files changed, 51 insertions(+), 7 deletions(-) + +diff --git a/src/player/mpvobject.cpp b/src/player/mpvobject.cpp +index 2955063..31cdf73 100644 +--- a/src/player/mpvobject.cpp ++++ b/src/player/mpvobject.cpp +@@ -48,16 +48,25 @@ class MpvRenderer : public QQuickFramebufferObject::Renderer + MpvRenderer(MpvObject *new_obj) + : obj{new_obj} + { +- ++#ifdef USE_OPENGL_CB ++ int r = mpv_opengl_cb_init_gl(obj->mpv_gl, nullptr, &get_proc_address_mpv, nullptr); ++ if (r < 0) ++ throw std::runtime_error("could not initialize OpenGL"); ++#endif + } + + virtual ~MpvRenderer() +- {} ++ { ++#ifdef USE_OPENGL_CB ++ mpv_opengl_cb_uninit_gl(obj->mpv_gl); ++#endif ++ } + + // This function is called when a new FBO is needed. + // This happens on the initial frame. + QOpenGLFramebufferObject * createFramebufferObject(const QSize &size) + { ++#ifndef USE_OPENGL_CB + // init mpv_gl: + if (!obj->mpv_gl) + { +@@ -72,15 +81,17 @@ class MpvRenderer : public QQuickFramebufferObject::Renderer + throw std::runtime_error("failed to initialize mpv GL context"); + mpv_render_context_set_update_callback(obj->mpv_gl, on_mpv_redraw, obj); + } +- ++#endif + return QQuickFramebufferObject::Renderer::createFramebufferObject(size); + } + + void render() + { + obj->window()->resetOpenGLState(); +- + QOpenGLFramebufferObject *fbo = framebufferObject(); ++#ifdef USE_OPENGL_CB ++ mpv_opengl_cb_draw(obj->mpv_gl, fbo->handle(), fbo->width(), fbo->height()); ++#else + mpv_opengl_fbo mpfbo{static_cast<int>(fbo->handle()), fbo->width(), fbo->height(), 0}; + int flip_y{0}; + +@@ -97,7 +108,7 @@ class MpvRenderer : public QQuickFramebufferObject::Renderer + // See render_gl.h on what OpenGL environment mpv expects, and + // other API details. + mpv_render_context_render(obj->mpv_gl, params); +- ++#endif + obj->window()->resetOpenGLState(); + } + }; +@@ -115,11 +126,27 @@ MpvObject::MpvObject(QQuickItem * parent) + mpv_set_option_string(mpv, "msg-level", "all=v"); + #endif + ++#ifdef USE_OPENGL_CB ++ mpv_set_option_string(mpv, "vo", "opengl-cb"); ++#endif ++ + if (mpv_initialize(mpv) < 0) + throw std::runtime_error("could not initialize mpv context"); + + // Request hw decoding, just for testing. +- mpv::qt::set_option_variant(mpv, "hwdec", "auto"); ++ mpv_set_option_string(mpv, "hwdec", "auto"); ++ ++#ifdef USE_OPENGL_CB ++ // Setup the callback that will make QtQuick update and redraw if there ++ // is a new video frame. Use a queued connection: this makes sure the ++ // doUpdate() function is run on the GUI thread. ++ mpv_gl = (mpv_opengl_cb_context *)mpv_get_sub_api(mpv, MPV_SUB_API_OPENGL_CB); ++ ++ if (!mpv_gl) ++ throw std::runtime_error("OpenGL not compiled in"); ++ ++ mpv_opengl_cb_set_update_callback(mpv_gl, MpvObject::on_update, (void *)this); ++#endif + + mpv_set_wakeup_callback(mpv, wakeup, this); + +@@ -130,7 +157,11 @@ MpvObject::~MpvObject() + { + if (mpv_gl) // only initialized if something got drawn + { ++#ifdef USE_OPENGL_CB ++ mpv_opengl_cb_set_update_callback(mpv_gl, nullptr, nullptr); ++#else + mpv_render_context_free(mpv_gl); ++#endif + } + + mpv_terminate_destroy(mpv); +diff --git a/src/player/mpvobject.h b/src/player/mpvobject.h +index 0ec0b7a..eeaa250 100644 +--- a/src/player/mpvobject.h ++++ b/src/player/mpvobject.h +@@ -6,8 +6,21 @@ + + #include <QtQuick/QQuickFramebufferObject> + ++ + #include <mpv/client.h> ++ ++#if MPV_CLIENT_API_VERSION < MPV_MAKE_VERSION(1, 28) ++#define USE_OPENGL_CB ++#endif ++ ++#ifdef USE_OPENGL_CB ++#include <mpv/opengl_cb.h> ++typedef mpv_opengl_cb_context mpv_context; ++#else + #include <mpv/render_gl.h> ++typedef mpv_render_context mpv_context; ++#endif ++ + #include <mpv/qthelper.hpp> + + class MpvRenderer; +@@ -17,7 +30,7 @@ class MpvObject : public QQuickFramebufferObject + Q_OBJECT + + mpv_handle *mpv; +- mpv_render_context *mpv_gl; ++ mpv_context *mpv_gl; + std::vector<std::unique_ptr<QJSValue>> callbacks; + + friend class MpvRenderer; |