Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/702>
subdir('cocoa')
subdir('generic')
subdir('gtk', if_found : gtk_dep)
-# FIXME: subdir('qt')
+qt5core_dep = dependency('qt5', modules : ['Core'], required : false)
+subdir('qt', if_found: qt5core_dep)
subdir('sdl')
--- /dev/null
+qt5_mod = import('qt5')
+
+qt5gui_dep = dependency('qt5', modules : ['Core', 'Gui', 'Widgets'], required : false)
+qt5opengl_dep = dependency('qt5', modules : ['OpenGL'], required : false)
+# FIXME: other platforms
+libgl = cc.find_library ('GL', required : false)
+
+if qt5gui_dep.found()
+ subdir('videooverlay')
+ if libgl.found()
+ subdir('mousevideooverlay')
+ if qt5opengl_dep.found()
+ subdir('qglwidgetvideooverlay')
+ subdir('qglwtextureshare')
+ endif
+ endif
+endif
--- /dev/null
+sources = [
+ 'main.cpp',
+ 'gstthread.cpp',
+ 'pipeline.cpp',
+ 'qrenderer.cpp',
+]
+
+moc_headers = [
+ 'gstthread.h',
+ 'pipeline.h',
+ 'qrenderer.h',
+]
+
+moc_files = qt5_mod.preprocess(moc_headers : moc_headers)
+executable('mousevideoverlay', sources, moc_files,
+ cpp_args : [gst_plugins_base_args],
+ include_directories: [configinc, libsinc],
+ dependencies : [qt5core_dep, qt5gui_dep, gst_dep, video_dep, gstgl_dep, libgl],
+ install: false)
--- /dev/null
+sources = [
+ 'main.cpp',
+ 'gstthread.cpp',
+ 'pipeline.cpp',
+ 'qglrenderer.cpp',
+]
+
+moc_headers = [
+ 'gstthread.h',
+ 'pipeline.h',
+ 'qglrenderer.h',
+]
+
+moc_files = qt5_mod.preprocess(moc_headers : moc_headers)
+executable('qglwidgetvideoverlay', sources, moc_files,
+ cpp_args : [gst_plugins_base_args],
+ include_directories: [configinc, libsinc],
+ dependencies : [qt5core_dep, qt5gui_dep, qt5opengl_dep, gst_dep, video_dep, gstgl_dep, libgl],
+ install: false)
--- /dev/null
+sources = [
+ 'main.cpp',
+ 'gstthread.cpp',
+ 'pipeline.cpp',
+ 'qglrenderer.cpp',
+]
+
+moc_headers = [
+ 'gstthread.h',
+ 'pipeline.h',
+ 'qglrenderer.h',
+]
+
+qtwinsys_deps = []
+if enabled_gl_winsys.contains('x11') and enabled_gl_platforms.contains('glx')
+ qt5x11extras = dependency('qt5', modules : ['X11Extras'], required : false)
+ if qt5x11extras.found()
+ qtwinsys_deps += qt5x11extras
+ else
+ subdir_done()
+ endif
+endif
+
+moc_files = qt5_mod.preprocess(moc_headers : moc_headers)
+executable('qglwtextureshare', sources, moc_files,
+ cpp_args : [gst_plugins_base_args],
+ include_directories: [configinc, libsinc],
+ dependencies : [qt5core_dep, qt5gui_dep, qt5opengl_dep, qtwinsys_deps, gst_dep, video_dep, gstgl_dep, libgl],
+ install: false)
*/
#include "pipeline.h"
+#include <gst/gl/gl.h>
Pipeline::Pipeline (GstGLDisplay *display,
#include <gst/video/video.h>
#include <gst/gl/gl.h>
+#include <gst/gl/gstglfuncs.h>
#if GST_GL_HAVE_PLATFORM_GLX
#include <QX11Info>
+++ /dev/null
-/****************************************************************************
-** Meta object code from reading C++ file 'gstthread.h'
-**
-** Created by: The Qt Meta Object Compiler version 67 (Qt 5.2.1)
-**
-** WARNING! All changes made in this file will be lost!
-*****************************************************************************/
-
-#include "../../gstthread.h"
-#include <QtCore/qbytearray.h>
-#include <QtCore/qmetatype.h>
-#if !defined(Q_MOC_OUTPUT_REVISION)
-#error "The header file 'gstthread.h' doesn't include <QObject>."
-#elif Q_MOC_OUTPUT_REVISION != 67
-#error "This file was generated using the moc from 5.2.1. It"
-#error "cannot be used with the include files from this version of Qt."
-#error "(The moc has changed too much.)"
-#endif
-
-QT_BEGIN_MOC_NAMESPACE
-struct qt_meta_stringdata_GstThread_t {
- QByteArrayData data[8];
- char stringdata[69];
-};
-#define QT_MOC_LITERAL(idx, ofs, len) \
- Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
- offsetof(qt_meta_stringdata_GstThread_t, stringdata) + ofs \
- - idx * sizeof(QByteArrayData) \
- )
-static const qt_meta_stringdata_GstThread_t qt_meta_stringdata_GstThread = {
- {
-QT_MOC_LITERAL(0, 0, 9),
-QT_MOC_LITERAL(1, 10, 15),
-QT_MOC_LITERAL(2, 26, 0),
-QT_MOC_LITERAL(3, 27, 5),
-QT_MOC_LITERAL(4, 33, 6),
-QT_MOC_LITERAL(5, 40, 15),
-QT_MOC_LITERAL(6, 56, 6),
-QT_MOC_LITERAL(7, 63, 4)
- },
- "GstThread\0resizeRequested\0\0width\0"
- "height\0exposeRequested\0resize\0stop\0"
-};
-#undef QT_MOC_LITERAL
-
-static const uint qt_meta_data_GstThread[] = {
-
- // content:
- 7, // revision
- 0, // classname
- 0, 0, // classinfo
- 4, 14, // methods
- 0, 0, // properties
- 0, 0, // enums/sets
- 0, 0, // constructors
- 0, // flags
- 1, // signalCount
-
- // signals: name, argc, parameters, tag, flags
- 1, 2, 34, 2, 0x06,
-
- // slots: name, argc, parameters, tag, flags
- 5, 0, 39, 2, 0x0a,
- 6, 2, 40, 2, 0x0a,
- 7, 0, 45, 2, 0x0a,
-
- // signals: parameters
- QMetaType::Void, QMetaType::Int, QMetaType::Int, 3, 4,
-
- // slots: parameters
- QMetaType::Void,
- QMetaType::Void, QMetaType::Int, QMetaType::Int, 3, 4,
- QMetaType::Void,
-
- 0 // eod
-};
-
-void GstThread::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
-{
- if (_c == QMetaObject::InvokeMetaMethod) {
- GstThread *_t = static_cast<GstThread *>(_o);
- switch (_id) {
- case 0: _t->resizeRequested((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break;
- case 1: _t->exposeRequested(); break;
- case 2: _t->resize((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break;
- case 3: _t->stop(); break;
- default: ;
- }
- } else if (_c == QMetaObject::IndexOfMethod) {
- int *result = reinterpret_cast<int *>(_a[0]);
- void **func = reinterpret_cast<void **>(_a[1]);
- {
- typedef void (GstThread::*_t)(int , int );
- if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&GstThread::resizeRequested)) {
- *result = 0;
- }
- }
- }
-}
-
-const QMetaObject GstThread::staticMetaObject = {
- { &QThread::staticMetaObject, qt_meta_stringdata_GstThread.data,
- qt_meta_data_GstThread, qt_static_metacall, 0, 0}
-};
-
-
-const QMetaObject *GstThread::metaObject() const
-{
- return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
-}
-
-void *GstThread::qt_metacast(const char *_clname)
-{
- if (!_clname) return 0;
- if (!strcmp(_clname, qt_meta_stringdata_GstThread.stringdata))
- return static_cast<void*>(const_cast< GstThread*>(this));
- return QThread::qt_metacast(_clname);
-}
-
-int GstThread::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
-{
- _id = QThread::qt_metacall(_c, _id, _a);
- if (_id < 0)
- return _id;
- if (_c == QMetaObject::InvokeMetaMethod) {
- if (_id < 4)
- qt_static_metacall(this, _c, _id, _a);
- _id -= 4;
- } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
- if (_id < 4)
- *reinterpret_cast<int*>(_a[0]) = -1;
- _id -= 4;
- }
- return _id;
-}
-
-// SIGNAL 0
-void GstThread::resizeRequested(int _t1, int _t2)
-{
- void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)), const_cast<void*>(reinterpret_cast<const void*>(&_t2)) };
- QMetaObject::activate(this, &staticMetaObject, 0, _a);
-}
-QT_END_MOC_NAMESPACE
+++ /dev/null
-/****************************************************************************
-** Meta object code from reading C++ file 'pipeline.h'
-**
-** Created by: The Qt Meta Object Compiler version 67 (Qt 5.2.1)
-**
-** WARNING! All changes made in this file will be lost!
-*****************************************************************************/
-
-#include "../../pipeline.h"
-#include <QtCore/qbytearray.h>
-#include <QtCore/qmetatype.h>
-#if !defined(Q_MOC_OUTPUT_REVISION)
-#error "The header file 'pipeline.h' doesn't include <QObject>."
-#elif Q_MOC_OUTPUT_REVISION != 67
-#error "This file was generated using the moc from 5.2.1. It"
-#error "cannot be used with the include files from this version of Qt."
-#error "(The moc has changed too much.)"
-#endif
-
-QT_BEGIN_MOC_NAMESPACE
-struct qt_meta_stringdata_Pipeline_t {
- QByteArrayData data[6];
- char stringdata[54];
-};
-#define QT_MOC_LITERAL(idx, ofs, len) \
- Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
- offsetof(qt_meta_stringdata_Pipeline_t, stringdata) + ofs \
- - idx * sizeof(QByteArrayData) \
- )
-static const qt_meta_stringdata_Pipeline_t qt_meta_stringdata_Pipeline = {
- {
-QT_MOC_LITERAL(0, 0, 8),
-QT_MOC_LITERAL(1, 9, 15),
-QT_MOC_LITERAL(2, 25, 0),
-QT_MOC_LITERAL(3, 26, 5),
-QT_MOC_LITERAL(4, 32, 6),
-QT_MOC_LITERAL(5, 39, 13)
- },
- "Pipeline\0resizeRequested\0\0width\0height\0"
- "stopRequested\0"
-};
-#undef QT_MOC_LITERAL
-
-static const uint qt_meta_data_Pipeline[] = {
-
- // content:
- 7, // revision
- 0, // classname
- 0, 0, // classinfo
- 2, 14, // methods
- 0, 0, // properties
- 0, 0, // enums/sets
- 0, 0, // constructors
- 0, // flags
- 2, // signalCount
-
- // signals: name, argc, parameters, tag, flags
- 1, 2, 24, 2, 0x06,
- 5, 0, 29, 2, 0x06,
-
- // signals: parameters
- QMetaType::Void, QMetaType::Int, QMetaType::Int, 3, 4,
- QMetaType::Void,
-
- 0 // eod
-};
-
-void Pipeline::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
-{
- if (_c == QMetaObject::InvokeMetaMethod) {
- Pipeline *_t = static_cast<Pipeline *>(_o);
- switch (_id) {
- case 0: _t->resizeRequested((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break;
- case 1: _t->stopRequested(); break;
- default: ;
- }
- } else if (_c == QMetaObject::IndexOfMethod) {
- int *result = reinterpret_cast<int *>(_a[0]);
- void **func = reinterpret_cast<void **>(_a[1]);
- {
- typedef void (Pipeline::*_t)(int , int );
- if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&Pipeline::resizeRequested)) {
- *result = 0;
- }
- }
- {
- typedef void (Pipeline::*_t)();
- if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&Pipeline::stopRequested)) {
- *result = 1;
- }
- }
- }
-}
-
-const QMetaObject Pipeline::staticMetaObject = {
- { &QObject::staticMetaObject, qt_meta_stringdata_Pipeline.data,
- qt_meta_data_Pipeline, qt_static_metacall, 0, 0}
-};
-
-
-const QMetaObject *Pipeline::metaObject() const
-{
- return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
-}
-
-void *Pipeline::qt_metacast(const char *_clname)
-{
- if (!_clname) return 0;
- if (!strcmp(_clname, qt_meta_stringdata_Pipeline.stringdata))
- return static_cast<void*>(const_cast< Pipeline*>(this));
- return QObject::qt_metacast(_clname);
-}
-
-int Pipeline::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
-{
- _id = QObject::qt_metacall(_c, _id, _a);
- if (_id < 0)
- return _id;
- if (_c == QMetaObject::InvokeMetaMethod) {
- if (_id < 2)
- qt_static_metacall(this, _c, _id, _a);
- _id -= 2;
- } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
- if (_id < 2)
- *reinterpret_cast<int*>(_a[0]) = -1;
- _id -= 2;
- }
- return _id;
-}
-
-// SIGNAL 0
-void Pipeline::resizeRequested(int _t1, int _t2)
-{
- void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)), const_cast<void*>(reinterpret_cast<const void*>(&_t2)) };
- QMetaObject::activate(this, &staticMetaObject, 0, _a);
-}
-
-// SIGNAL 1
-void Pipeline::stopRequested()
-{
- QMetaObject::activate(this, &staticMetaObject, 1, 0);
-}
-QT_END_MOC_NAMESPACE
+++ /dev/null
-/****************************************************************************
-** Meta object code from reading C++ file 'qrenderer.h'
-**
-** Created by: The Qt Meta Object Compiler version 67 (Qt 5.2.1)
-**
-** WARNING! All changes made in this file will be lost!
-*****************************************************************************/
-
-#include "../../qrenderer.h"
-#include <QtCore/qbytearray.h>
-#include <QtCore/qmetatype.h>
-#if !defined(Q_MOC_OUTPUT_REVISION)
-#error "The header file 'qrenderer.h' doesn't include <QObject>."
-#elif Q_MOC_OUTPUT_REVISION != 67
-#error "This file was generated using the moc from 5.2.1. It"
-#error "cannot be used with the include files from this version of Qt."
-#error "(The moc has changed too much.)"
-#endif
-
-QT_BEGIN_MOC_NAMESPACE
-struct qt_meta_stringdata_QRenderer_t {
- QByteArrayData data[7];
- char stringdata[72];
-};
-#define QT_MOC_LITERAL(idx, ofs, len) \
- Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
- offsetof(qt_meta_stringdata_QRenderer_t, stringdata) + ofs \
- - idx * sizeof(QByteArrayData) \
- )
-static const qt_meta_stringdata_QRenderer_t qt_meta_stringdata_QRenderer = {
- {
-QT_MOC_LITERAL(0, 0, 9),
-QT_MOC_LITERAL(1, 10, 15),
-QT_MOC_LITERAL(2, 26, 0),
-QT_MOC_LITERAL(3, 27, 14),
-QT_MOC_LITERAL(4, 42, 15),
-QT_MOC_LITERAL(5, 58, 5),
-QT_MOC_LITERAL(6, 64, 6)
- },
- "QRenderer\0exposeRequested\0\0closeRequested\0"
- "resizeRequested\0width\0height\0"
-};
-#undef QT_MOC_LITERAL
-
-static const uint qt_meta_data_QRenderer[] = {
-
- // content:
- 7, // revision
- 0, // classname
- 0, 0, // classinfo
- 3, 14, // methods
- 0, 0, // properties
- 0, 0, // enums/sets
- 0, 0, // constructors
- 0, // flags
- 2, // signalCount
-
- // signals: name, argc, parameters, tag, flags
- 1, 0, 29, 2, 0x06,
- 3, 0, 30, 2, 0x06,
-
- // slots: name, argc, parameters, tag, flags
- 4, 2, 31, 2, 0x0a,
-
- // signals: parameters
- QMetaType::Void,
- QMetaType::Void,
-
- // slots: parameters
- QMetaType::Void, QMetaType::Int, QMetaType::Int, 5, 6,
-
- 0 // eod
-};
-
-void QRenderer::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
-{
- if (_c == QMetaObject::InvokeMetaMethod) {
- QRenderer *_t = static_cast<QRenderer *>(_o);
- switch (_id) {
- case 0: _t->exposeRequested(); break;
- case 1: _t->closeRequested(); break;
- case 2: _t->resizeRequested((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break;
- default: ;
- }
- } else if (_c == QMetaObject::IndexOfMethod) {
- int *result = reinterpret_cast<int *>(_a[0]);
- void **func = reinterpret_cast<void **>(_a[1]);
- {
- typedef void (QRenderer::*_t)();
- if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&QRenderer::exposeRequested)) {
- *result = 0;
- }
- }
- {
- typedef void (QRenderer::*_t)();
- if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&QRenderer::closeRequested)) {
- *result = 1;
- }
- }
- }
-}
-
-const QMetaObject QRenderer::staticMetaObject = {
- { &QWidget::staticMetaObject, qt_meta_stringdata_QRenderer.data,
- qt_meta_data_QRenderer, qt_static_metacall, 0, 0}
-};
-
-
-const QMetaObject *QRenderer::metaObject() const
-{
- return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
-}
-
-void *QRenderer::qt_metacast(const char *_clname)
-{
- if (!_clname) return 0;
- if (!strcmp(_clname, qt_meta_stringdata_QRenderer.stringdata))
- return static_cast<void*>(const_cast< QRenderer*>(this));
- return QWidget::qt_metacast(_clname);
-}
-
-int QRenderer::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
-{
- _id = QWidget::qt_metacall(_c, _id, _a);
- if (_id < 0)
- return _id;
- if (_c == QMetaObject::InvokeMetaMethod) {
- if (_id < 3)
- qt_static_metacall(this, _c, _id, _a);
- _id -= 3;
- } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
- if (_id < 3)
- *reinterpret_cast<int*>(_a[0]) = -1;
- _id -= 3;
- }
- return _id;
-}
-
-// SIGNAL 0
-void QRenderer::exposeRequested()
-{
- QMetaObject::activate(this, &staticMetaObject, 0, 0);
-}
-
-// SIGNAL 1
-void QRenderer::closeRequested()
-{
- QMetaObject::activate(this, &staticMetaObject, 1, 0);
-}
-QT_END_MOC_NAMESPACE
--- /dev/null
+executable('videoverlay', 'videooverlay.cpp',
+ cpp_args : [gst_plugins_base_args],
+ include_directories: [configinc, libsinc],
+ dependencies : [qt5core_dep, qt5gui_dep, gst_dep, video_dep],
+ install: false)
+++ /dev/null
-#Header files
-
-#Source files
-SOURCES += videooverlay.cpp
+++ /dev/null
-TEMPLATE = app
-TARGET = videooverlay
-DESTDIR = ./debug
-CONFIG += debug link_pkgconfig
-DEFINES += UNICODE QT_THREAD_SUPPORT QT_CORE_LIB QT_GUI_LIB
-QT += gui widgets
-PKGCONFIG=gstreamer-1.0 gstreamer-video-1.0
-
-win32 {
-DEFINES += WIN32
-INCLUDEPATH += ./GeneratedFiles \
- ./GeneratedFiles/Debug \
- C:/gstreamer/include \
- C:/gstreamer/include/libxml2 \
- C:/gstreamer/include/glib-2.0 \
- C:/gstreamer/lib/glib-2.0/include \
- C:/gstreamer/include/gstreamer-1.0
-LIBS += -L"C:/gstreamer/bin" \
- -L"C:/gstreamer/lib" \
- -lgstreamer-1.0 \
- -lgstvideo-1.0 \
- -lglib-2.0 \
- -lgmodule-2.0 \
- -lgobject-2.0 \
- -lgthread-2.0
-}
-
-unix {
-DEFINES += UNIX
-INCLUDEPATH += GeneratedFiles \
- GeneratedFiles/Debug
-LIBS += -lGLU -lGL
-}
-
-DEPENDPATH += .
-MOC_DIR += ./GeneratedFiles/debug
-OBJECTS_DIR += debug
-UI_DIR += ./GeneratedFiles
-RCC_DIR += ./GeneratedFiles
-
-#Include file(s)
-include(videooverlay.pri)