summaryrefslogtreecommitdiffstats
path: root/DOCS
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-09 15:48:35 +0100
committerwm4 <wm4@nowhere>2015-01-09 15:49:34 +0100
commit803e579ff584a88bd3525a123fdbeace76fb0ee4 (patch)
tree191f9080ee5edebb1128ab0f7723984a188c8eeb /DOCS
parent7f2b78846b1335f399ec93b578431e87e03a229c (diff)
downloadmpv-803e579ff584a88bd3525a123fdbeace76fb0ee4.tar.bz2
mpv-803e579ff584a88bd3525a123fdbeace76fb0ee4.tar.xz
DOCS/client_api_examples: qml: reduce number of files
This is annoying.
Diffstat (limited to 'DOCS')
-rw-r--r--DOCS/client_api_examples/qml/main.cpp115
-rw-r--r--DOCS/client_api_examples/qml/main.h (renamed from DOCS/client_api_examples/qml/mpvrenderer.h)0
-rw-r--r--DOCS/client_api_examples/qml/mpvrenderer.cpp116
-rw-r--r--DOCS/client_api_examples/qml/mpvtest.pro4
4 files changed, 116 insertions, 119 deletions
diff --git a/DOCS/client_api_examples/qml/main.cpp b/DOCS/client_api_examples/qml/main.cpp
index cc86302be6..2794d87c1a 100644
--- a/DOCS/client_api_examples/qml/main.cpp
+++ b/DOCS/client_api_examples/qml/main.cpp
@@ -1,8 +1,121 @@
+#include "main.h"
+
+#include <stdexcept>
+
+#include <QObject>
+#include <QtGlobal>
+#include <QOpenGLContext>
#include <QGuiApplication>
+#include <QtGui/QOpenGLFramebufferObject>
+
+#include <QtQuick/QQuickWindow>
#include <QtQuick/QQuickView>
-#include "mpvrenderer.h"
+class MpvRenderer : public QQuickFramebufferObject::Renderer
+{
+ static void *get_proc_address(void *ctx, const char *name) {
+ (void)ctx;
+ QOpenGLContext *glctx = QOpenGLContext::currentContext();
+ if (!glctx)
+ return NULL;
+ return (void *)glctx->getProcAddress(QByteArray(name));
+ }
+
+ mpv::qt::Handle mpv;
+ QQuickWindow *window;
+ mpv_opengl_cb_context *mpv_gl;
+public:
+ MpvRenderer(const MpvObject *obj)
+ : mpv(obj->mpv), window(obj->window()), mpv_gl(obj->mpv_gl)
+ {
+ int r = mpv_opengl_cb_init_gl(mpv_gl, NULL, get_proc_address, NULL);
+ if (r < 0)
+ throw std::runtime_error("could not initialize OpenGL");
+ }
+
+ virtual ~MpvRenderer()
+ {
+ // Until this call is done, we need to make sure the player remains
+ // alive. This is done implicitly with the mpv::qt::Handle instance
+ // in this class.
+ mpv_opengl_cb_uninit_gl(mpv_gl);
+ }
+
+ void render()
+ {
+ QOpenGLFramebufferObject *fbo = framebufferObject();
+ int vp[4] = {0, 0, fbo->width(), fbo->height()};
+ window->resetOpenGLState();
+ mpv_opengl_cb_render(mpv_gl, fbo->handle(), vp);
+ window->resetOpenGLState();
+ }
+};
+
+MpvObject::MpvObject(QQuickItem * parent)
+ : QQuickFramebufferObject(parent), mpv_gl(0)
+{
+ mpv = mpv::qt::Handle::FromRawHandle(mpv_create());
+ if (!mpv)
+ throw std::runtime_error("could not create mpv context");
+
+ mpv_set_option_string(mpv, "terminal", "yes");
+ mpv_set_option_string(mpv, "msg-level", "all=v");
+
+ if (mpv_initialize(mpv) < 0)
+ throw std::runtime_error("could not initialize mpv context");
+
+ // Make use of the MPV_SUB_API_OPENGL_CB API.
+ mpv::qt::set_option_variant(mpv, "vo", "opengl-cb");
+
+ // Request hw decoding, just for testing.
+ mpv::qt::set_option_variant(mpv, "hwdec", "auto");
+
+ // 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);
+ connect(this, &MpvObject::onUpdate, this, &MpvObject::doUpdate,
+ Qt::QueuedConnection);
+}
+
+MpvObject::~MpvObject()
+{
+ if (mpv_gl)
+ mpv_opengl_cb_set_update_callback(mpv_gl, NULL, NULL);
+}
+
+void MpvObject::on_update(void *ctx)
+{
+ MpvObject *self = (MpvObject *)ctx;
+ emit self->onUpdate();
+}
+
+// connected to onUpdate(); signal makes sure it runs on the GUI thread
+void MpvObject::doUpdate()
+{
+ update();
+}
+
+void MpvObject::command(const QVariant& params)
+{
+ mpv::qt::command_variant(mpv, params);
+}
+
+void MpvObject::setProperty(const QString& name, const QVariant& value)
+{
+ mpv::qt::set_property_variant(mpv, name, value);
+}
+
+QQuickFramebufferObject::Renderer *MpvObject::createRenderer() const
+{
+ window()->setPersistentOpenGLContext(true);
+ window()->setPersistentSceneGraph(true);
+ return new MpvRenderer(this);
+}
int main(int argc, char **argv)
{
diff --git a/DOCS/client_api_examples/qml/mpvrenderer.h b/DOCS/client_api_examples/qml/main.h
index 9a65ae5350..9a65ae5350 100644
--- a/DOCS/client_api_examples/qml/mpvrenderer.h
+++ b/DOCS/client_api_examples/qml/main.h
diff --git a/DOCS/client_api_examples/qml/mpvrenderer.cpp b/DOCS/client_api_examples/qml/mpvrenderer.cpp
deleted file mode 100644
index f24ae42ed3..0000000000
--- a/DOCS/client_api_examples/qml/mpvrenderer.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-#include "mpvrenderer.h"
-
-#include <stdexcept>
-
-#include <QObject>
-#include <QtGlobal>
-#include <QOpenGLContext>
-
-#include <QtGui/QOpenGLFramebufferObject>
-
-#include <QtQuick/QQuickWindow>
-
-class MpvRenderer : public QQuickFramebufferObject::Renderer
-{
- static void *get_proc_address(void *ctx, const char *name) {
- (void)ctx;
- QOpenGLContext *glctx = QOpenGLContext::currentContext();
- if (!glctx)
- return NULL;
- return (void *)glctx->getProcAddress(QByteArray(name));
- }
-
- mpv::qt::Handle mpv;
- QQuickWindow *window;
- mpv_opengl_cb_context *mpv_gl;
-public:
- MpvRenderer(const MpvObject *obj)
- : mpv(obj->mpv), window(obj->window()), mpv_gl(obj->mpv_gl)
- {
- int r = mpv_opengl_cb_init_gl(mpv_gl, NULL, get_proc_address, NULL);
- if (r < 0)
- throw std::runtime_error("could not initialize OpenGL");
- }
-
- virtual ~MpvRenderer()
- {
- // Until this call is done, we need to make sure the player remains
- // alive. This is done implicitly with the mpv::qt::Handle instance
- // in this class.
- mpv_opengl_cb_uninit_gl(mpv_gl);
- }
-
- void render()
- {
- QOpenGLFramebufferObject *fbo = framebufferObject();
- int vp[4] = {0, 0, fbo->width(), fbo->height()};
- window->resetOpenGLState();
- mpv_opengl_cb_render(mpv_gl, fbo->handle(), vp);
- window->resetOpenGLState();
- }
-};
-
-MpvObject::MpvObject(QQuickItem * parent)
- : QQuickFramebufferObject(parent), mpv_gl(0)
-{
- mpv = mpv::qt::Handle::FromRawHandle(mpv_create());
- if (!mpv)
- throw std::runtime_error("could not create mpv context");
-
- mpv_set_option_string(mpv, "terminal", "yes");
- mpv_set_option_string(mpv, "msg-level", "all=v");
-
- if (mpv_initialize(mpv) < 0)
- throw std::runtime_error("could not initialize mpv context");
-
- // Make use of the MPV_SUB_API_OPENGL_CB API.
- mpv::qt::set_option_variant(mpv, "vo", "opengl-cb");
-
- // Request hw decoding, just for testing.
- mpv::qt::set_option_variant(mpv, "hwdec", "auto");
-
- // 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);
- connect(this, &MpvObject::onUpdate, this, &MpvObject::doUpdate,
- Qt::QueuedConnection);
-}
-
-MpvObject::~MpvObject()
-{
- if (mpv_gl)
- mpv_opengl_cb_set_update_callback(mpv_gl, NULL, NULL);
-}
-
-void MpvObject::on_update(void *ctx)
-{
- MpvObject *self = (MpvObject *)ctx;
- emit self->onUpdate();
-}
-
-// connected to onUpdate(); signal makes sure it runs on the GUI thread
-void MpvObject::doUpdate()
-{
- update();
-}
-
-void MpvObject::command(const QVariant& params)
-{
- mpv::qt::command_variant(mpv, params);
-}
-
-void MpvObject::setProperty(const QString& name, const QVariant& value)
-{
- mpv::qt::set_property_variant(mpv, name, value);
-}
-
-QQuickFramebufferObject::Renderer *MpvObject::createRenderer() const
-{
- window()->setPersistentOpenGLContext(true);
- window()->setPersistentSceneGraph(true);
- return new MpvRenderer(this);
-}
diff --git a/DOCS/client_api_examples/qml/mpvtest.pro b/DOCS/client_api_examples/qml/mpvtest.pro
index df497e4dba..323b8bef71 100644
--- a/DOCS/client_api_examples/qml/mpvtest.pro
+++ b/DOCS/client_api_examples/qml/mpvtest.pro
@@ -1,7 +1,7 @@
QT += qml quick
-HEADERS += mpvrenderer.h
-SOURCES += mpvrenderer.cpp main.cpp
+HEADERS += main.h
+SOURCES += main.cpp
CONFIG += link_pkgconfig debug
PKGCONFIG += mpv