[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kamoso] src/elements/gstqtvideosink: Port the gst element away from Qt5::OpenGL and just use Qt5::G
From: Aleix Pol <null () kde ! org>
Date: 2017-12-15 2:57:14
Message-ID: E1ePgBW-0005Ca-J5 () code ! kde ! org
[Download RAW message or body]
Git commit 282ac38095c0dbcf8b3849d078b9900fd98c85e6 by Aleix Pol.
Committed on 15/12/2017 at 00:00.
Pushed by apol into branch 'master'.
Port the gst element away from Qt5::OpenGL and just use Qt5::Gui
M +0 -1 src/elements/gstqtvideosink/CMakeLists.txt
M +4 -4 src/elements/gstqtvideosink/autotest.cpp
M +6 -5 src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.cpp
M +5 -4 src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.h
M +4 -4 src/elements/gstqtvideosink/gstqtglvideosink.cpp
M +12 -16 src/elements/gstqtvideosink/painters/openglsurfacepainter.cpp
M +2 -2 src/elements/gstqtvideosink/painters/openglsurfacepainter.h
M +0 -1 src/elements/gstqtvideosink/painters/videomaterial.cpp
M +1 -2 src/elements/gstqtvideosink/painters/videomaterial.h
https://commits.kde.org/kamoso/282ac38095c0dbcf8b3849d078b9900fd98c85e6
diff --git a/src/elements/gstqtvideosink/CMakeLists.txt \
b/src/elements/gstqtvideosink/CMakeLists.txt index 154dfe0..b6d951c 100644
--- a/src/elements/gstqtvideosink/CMakeLists.txt
+++ b/src/elements/gstqtvideosink/CMakeLists.txt
@@ -73,7 +73,6 @@ target_link_libraries(kamoso-gstqt5videosink
${GSTREAMER_BASE_LIBRARY}
${GSTREAMER_VIDEO_LIBRARY}
${GstQtVideoSink_GL_LIBS}
- Qt5::OpenGL
Qt5::Quick
Qt5::Widgets
)
diff --git a/src/elements/gstqtvideosink/autotest.cpp \
b/src/elements/gstqtvideosink/autotest.cpp index 6674ab2..a387802 100644
--- a/src/elements/gstqtvideosink/autotest.cpp
+++ b/src/elements/gstqtvideosink/autotest.cpp
@@ -35,7 +35,7 @@
#ifndef GST_QT_VIDEO_SINK_NO_OPENGL
# include "painters/openglsurfacepainter.h"
-# include <QGLWidget>
+# include <QOpenGLWidget>
# include <QGLPixelBuffer>
#endif
@@ -123,7 +123,7 @@ private:
typedef VideoWidgetT<QWidget> VideoWidget;
#ifndef GST_QT_VIDEO_SINK_NO_OPENGL
-typedef VideoWidgetT<QGLWidget> VideoGLWidget;
+typedef VideoWidgetT<QOpenGLWidget> VideoGLWidget;
#endif
//------------------------------------
@@ -186,7 +186,7 @@ void QtVideoSinkTest::initTestCase()
# endif
# ifndef QT_OPENGL_ES_2
- haveGlsl = QGLShaderProgram::hasOpenGLShaderPrograms()
+ haveGlsl = QOpenGLShaderProgram::hasOpenGLShaderPrograms()
&& extensions.contains("ARB_shader_objects");
# else
haveGlsl = true;
@@ -648,7 +648,7 @@ void QtVideoSinkTest::qtVideoSinkTest()
#ifndef GST_QT_VIDEO_SINK_NO_OPENGL
if (haveArbFp || haveGlsl) {
widget.reset(new VideoGLWidget);
- context = (void*) qobject_cast<QGLWidget*>(widget.data())->context();
+ context = (void*) \
qobject_cast<QOpenGLWidget*>(widget.data())->context(); QVERIFY(context != 0);
} else
#endif
diff --git a/src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.cpp \
b/src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.cpp index \
1fac7fe..16dcfd8 100644
--- a/src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.cpp
+++ b/src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.cpp
@@ -21,6 +21,7 @@
#include <QStack>
#include <QPainter>
+#include <QOpenGLContext>
QtVideoSinkDelegate::QtVideoSinkDelegate(GstElement *sink, QObject *parent)
: BaseDelegate(sink, parent)
@@ -43,7 +44,7 @@ void QtVideoSinkDelegate::paint(QPainter *painter, const QRectF & \
targetArea)
#ifndef GST_QT_VIDEO_SINK_NO_OPENGL
if (m_glContext) {
- Q_ASSERT_X(m_glContext == QGLContext::currentContext(),
+ Q_ASSERT_X(m_glContext == QOpenGLContext::currentContext(),
"qtvideosink - paint",
"Please use a QPainter that is initialized to paint on the "
"GL surface that has the same context as the one given on the glcontext \
property" @@ -116,12 +117,12 @@ void QtVideoSinkDelegate::paint(QPainter *painter, \
const QRectF & targetArea)
#ifndef GST_QT_VIDEO_SINK_NO_OPENGL
-QGLContext *QtVideoSinkDelegate::glContext() const
+QOpenGLContext *QtVideoSinkDelegate::glContext() const
{
return m_glContext;
}
-void QtVideoSinkDelegate::setGLContext(QGLContext *context)
+void QtVideoSinkDelegate::setGLContext(QOpenGLContext *context)
{
if (m_glContext == context)
return;
@@ -130,7 +131,7 @@ void QtVideoSinkDelegate::setGLContext(QGLContext *context)
m_supportedPainters = Generic;
if (m_glContext) {
- m_glContext->makeCurrent();
+ m_glContext->makeCurrent(nullptr);
const QByteArray extensions(reinterpret_cast<const char \
*>(glGetString(GL_EXTENSIONS)));
GST_LOG_OBJECT(m_sink, "Available GL extensions: %s", \
extensions.constData()); @@ -141,7 +142,7 @@ void \
QtVideoSinkDelegate::setGLContext(QGLContext *context) #endif
#ifndef QT_OPENGL_ES_2
- if (QGLShaderProgram::hasOpenGLShaderPrograms(m_glContext)
+ if (QOpenGLShaderProgram::hasOpenGLShaderPrograms(m_glContext)
&& extensions.contains("ARB_shader_objects"))
#endif
m_supportedPainters |= Glsl;
diff --git a/src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.h \
b/src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.h index 32f266b..6a5b8c7 \
100644
--- a/src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.h
+++ b/src/elements/gstqtvideosink/delegates/qtvideosinkdelegate.h
@@ -20,8 +20,9 @@
#include "basedelegate.h"
#include "../painters/abstractsurfacepainter.h"
+#include <QOpenGLFunctions>
-class QGLContext;
+class QOpenGLContext;
class QtVideoSinkDelegate : public BaseDelegate
{
@@ -41,8 +42,8 @@ public:
#ifndef GST_QT_VIDEO_SINK_NO_OPENGL
// glcontext property
- QGLContext *glContext() const;
- void setGLContext(QGLContext *context);
+ QOpenGLContext *glContext() const;
+ void setGLContext(QOpenGLContext *context);
#endif
// paint action
@@ -60,7 +61,7 @@ private:
PainterTypes m_supportedPainters;
#ifndef GST_QT_VIDEO_SINK_NO_OPENGL
- QGLContext *m_glContext;
+ QOpenGLContext *m_glContext;
#endif
};
diff --git a/src/elements/gstqtvideosink/gstqtglvideosink.cpp \
b/src/elements/gstqtvideosink/gstqtglvideosink.cpp index 27307f6..a193580 100644
--- a/src/elements/gstqtvideosink/gstqtglvideosink.cpp
+++ b/src/elements/gstqtvideosink/gstqtglvideosink.cpp
@@ -98,13 +98,13 @@ void GstQtGLVideoSink::class_init(gpointer g_class, gpointer \
class_data) /**
* GstQtGLVideoSink::glcontext
*
- * This property holds a pointer to the QGLContext that will be used to render
- * the video using OpenGL acceleration. You must set this to a valid QGLContext
+ * This property holds a pointer to the QOpenGLContext that will be used to \
render + * the video using OpenGL acceleration. You must set this to a valid \
QOpenGLContext
* pointer before the element changes state to READY, or else the state change \
will fail.
**/
g_object_class_install_property(object_class, PROP_GLCONTEXT,
g_param_spec_pointer("glcontext", "GL context",
- "The QGLContext that will be used to do \
OpenGL-accelerated rendering", + "The QOpenGLContext that \
will be used to do OpenGL-accelerated rendering",
static_cast<GParamFlags>(G_PARAM_WRITABLE)));
}
@@ -125,7 +125,7 @@ void GstQtGLVideoSink::set_property(GObject *object, guint \
prop_id,
switch (prop_id) {
case PROP_GLCONTEXT:
- sinkBase->delegate->setGLContext(static_cast<QGLContext*>(g_value_get_pointer(value)));
+ sinkBase->delegate->setGLContext(static_cast<QOpenGLContext*>(g_value_get_pointer(value)));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
diff --git a/src/elements/gstqtvideosink/painters/openglsurfacepainter.cpp \
b/src/elements/gstqtvideosink/painters/openglsurfacepainter.cpp index \
6cae138..066feec 100644
--- a/src/elements/gstqtvideosink/painters/openglsurfacepainter.cpp
+++ b/src/elements/gstqtvideosink/painters/openglsurfacepainter.cpp
@@ -16,6 +16,8 @@
*/
#include "openglsurfacepainter.h"
#include <QtCore/qmath.h>
+#include <QOpenGLContext>
+#include <QPainter>
#ifndef GL_TEXTURE0
# define GL_TEXTURE0 0x84C0
@@ -51,8 +53,7 @@ OpenGLSurfacePainter::OpenGLSurfacePainter()
, m_videoColorMatrix(GST_VIDEO_COLOR_MATRIX_UNKNOWN)
{
#ifndef QT_OPENGL_ES
- glActiveTexture = (_glActiveTexture) \
QGLContext::currentContext()->getProcAddress(
- QLatin1String("glActiveTexture"));
+ glActiveTexture = (_glActiveTexture) \
QOpenGLContext::currentContext()->getProcAddress("glActiveTexture"); #endif
}
@@ -381,18 +382,13 @@ ArbFpSurfacePainter::ArbFpSurfacePainter()
: OpenGLSurfacePainter()
, m_programId(0)
{
- const QGLContext *context = QGLContext::currentContext();
-
- glProgramStringARB = (_glProgramStringARB) context->getProcAddress(
- QLatin1String("glProgramStringARB"));
- glBindProgramARB = (_glBindProgramARB) context->getProcAddress(
- QLatin1String("glBindProgramARB"));
- glDeleteProgramsARB = (_glDeleteProgramsARB) context->getProcAddress(
- QLatin1String("glDeleteProgramsARB"));
- glGenProgramsARB = (_glGenProgramsARB) context->getProcAddress(
- QLatin1String("glGenProgramsARB"));
- glProgramLocalParameter4fARB = (_glProgramLocalParameter4fARB) \
context->getProcAddress(
- QLatin1String("glProgramLocalParameter4fARB"));
+ const QOpenGLContext *context = QOpenGLContext::currentContext();
+
+ glProgramStringARB = (_glProgramStringARB) \
context->getProcAddress("glProgramStringARB"); + glBindProgramARB = \
(_glBindProgramARB) context->getProcAddress("glBindProgramARB"); + \
glDeleteProgramsARB = (_glDeleteProgramsARB) \
context->getProcAddress("glDeleteProgramsARB"); + glGenProgramsARB = \
(_glGenProgramsARB) context->getProcAddress("glGenProgramsARB"); + \
glProgramLocalParameter4fARB = (_glProgramLocalParameter4fARB) \
context->getProcAddress("glProgramLocalParameter4fARB"); }
void ArbFpSurfacePainter::init(const BufferFormat &format)
@@ -702,11 +698,11 @@ void GlslSurfacePainter::init(const BufferFormat &format)
m_videoColorMatrix = format.colorMatrix();
- if (!m_program.addShaderFromSourceCode(QGLShader::Vertex, \
qt_glsl_vertexShaderProgram)) { + if \
(!m_program.addShaderFromSourceCode(QOpenGLShader::Vertex, \
qt_glsl_vertexShaderProgram)) { throw QString("Vertex shader compile error ") + \
m_program.log(); }
- if (!m_program.addShaderFromSourceCode(QGLShader::Fragment, fragmentProgram)) {
+ if (!m_program.addShaderFromSourceCode(QOpenGLShader::Fragment, \
fragmentProgram)) { throw QString("Shader compile error ") + m_program.log();
}
diff --git a/src/elements/gstqtvideosink/painters/openglsurfacepainter.h \
b/src/elements/gstqtvideosink/painters/openglsurfacepainter.h index 05762dc..7b90795 \
100644
--- a/src/elements/gstqtvideosink/painters/openglsurfacepainter.h
+++ b/src/elements/gstqtvideosink/painters/openglsurfacepainter.h
@@ -20,7 +20,7 @@
#ifndef GST_QT_VIDEO_SINK_NO_OPENGL
#include "abstractsurfacepainter.h"
-#include <QGLShaderProgram>
+#include <QOpenGLShaderProgram>
#ifndef Q_WS_MAC
# ifndef APIENTRYP
@@ -127,7 +127,7 @@ protected:
const GLfloat *textureCoordArray);
private:
- QGLShaderProgram m_program;
+ QOpenGLShaderProgram m_program;
};
#endif // GST_QT_VIDEO_SINK_NO_OPENGL
diff --git a/src/elements/gstqtvideosink/painters/videomaterial.cpp \
b/src/elements/gstqtvideosink/painters/videomaterial.cpp index 3073e6d..ee7ebd6 \
100644
--- a/src/elements/gstqtvideosink/painters/videomaterial.cpp
+++ b/src/elements/gstqtvideosink/painters/videomaterial.cpp
@@ -238,7 +238,6 @@ VideoMaterial *VideoMaterial::create(const BufferFormat & format)
VideoMaterial::VideoMaterial() :
m_frame(0),
m_textureCount(0),
- m_format(GST_VIDEO_FORMAT_UNKNOWN),
m_textureFormat(0),
m_textureInternalFormat(0),
m_textureType(0),
diff --git a/src/elements/gstqtvideosink/painters/videomaterial.h \
b/src/elements/gstqtvideosink/painters/videomaterial.h index 90a6379..80dbd11 100644
--- a/src/elements/gstqtvideosink/painters/videomaterial.h
+++ b/src/elements/gstqtvideosink/painters/videomaterial.h
@@ -24,7 +24,7 @@
#include <QMutex>
#include <QMatrix4x4>
-#include <QtQuick/QSGMaterial>
+#include <QSGMaterial>
class VideoMaterialShader;
@@ -64,7 +64,6 @@ private:
int m_textureOffsets[Num_Texture_IDs];
QSize m_textureSize;
- GstVideoFormat m_format;
GLenum m_textureFormat;
GLuint m_textureInternalFormat;
GLenum m_textureType;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic