[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