summaryrefslogtreecommitdiffstats
path: root/src/qtmultimediaquicktools
diff options
context:
space:
mode:
Diffstat (limited to 'src/qtmultimediaquicktools')
-rw-r--r--src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp2
-rw-r--r--src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h26
-rw-r--r--src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h18
-rw-r--r--src/qtmultimediaquicktools/qsgvideonode_rgb.cpp15
-rw-r--r--src/qtmultimediaquicktools/qsgvideonode_texture.cpp15
-rw-r--r--src/qtmultimediaquicktools/qsgvideonode_yuv.cpp6
-rw-r--r--src/qtmultimediaquicktools/qtmultimediaquicktools.pro2
-rw-r--r--src/qtmultimediaquicktools/shaders/rgbvideo_swizzle.frag4
8 files changed, 54 insertions, 34 deletions
diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp b/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp
index 0cb6659ca..c51aec088 100644
--- a/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp
+++ b/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp
@@ -130,7 +130,7 @@ class FilterRunnableDeleter : public QRunnable
{
public:
FilterRunnableDeleter(const QList<QVideoFilterRunnable *> &runnables) : m_runnables(runnables) { }
- void run() Q_DECL_OVERRIDE {
+ void run() override {
for (QVideoFilterRunnable *runnable : qAsConst(m_runnables))
delete runnable;
}
diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h b/src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h
index c84612960..4f1a90c8b 100644
--- a/src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h
+++ b/src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h
@@ -74,25 +74,25 @@ public:
QDeclarativeVideoRendererBackend(QDeclarativeVideoOutput *parent);
~QDeclarativeVideoRendererBackend();
- bool init(QMediaService *service) Q_DECL_OVERRIDE;
- void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &changeData) Q_DECL_OVERRIDE;
- void releaseSource() Q_DECL_OVERRIDE;
- void releaseControl() Q_DECL_OVERRIDE;
- QSize nativeSize() const Q_DECL_OVERRIDE;
- void updateGeometry() Q_DECL_OVERRIDE;
- QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) Q_DECL_OVERRIDE;
- QAbstractVideoSurface *videoSurface() const Q_DECL_OVERRIDE;
- QRectF adjustedViewport() const Q_DECL_OVERRIDE;
+ bool init(QMediaService *service) override;
+ void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &changeData) override;
+ void releaseSource() override;
+ void releaseControl() override;
+ QSize nativeSize() const override;
+ void updateGeometry() override;
+ QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override;
+ QAbstractVideoSurface *videoSurface() const override;
+ QRectF adjustedViewport() const override;
QOpenGLContext *glContext() const;
friend class QSGVideoItemSurface;
void present(const QVideoFrame &frame);
void stop();
- void appendFilter(QAbstractVideoFilter *filter) Q_DECL_OVERRIDE;
- void clearFilters() Q_DECL_OVERRIDE;
- void releaseResources() Q_DECL_OVERRIDE;
- void invalidateSceneGraph() Q_DECL_OVERRIDE;
+ void appendFilter(QAbstractVideoFilter *filter) override;
+ void clearFilters() override;
+ void releaseResources() override;
+ void invalidateSceneGraph() override;
private:
void scheduleDeleteFilterResources();
diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h b/src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h
index 942cc18d9..eb1814b07 100644
--- a/src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h
+++ b/src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h
@@ -63,15 +63,15 @@ public:
QDeclarativeVideoWindowBackend(QDeclarativeVideoOutput *parent);
~QDeclarativeVideoWindowBackend();
- bool init(QMediaService *service) Q_DECL_OVERRIDE;
- void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &changeData) Q_DECL_OVERRIDE;
- void releaseSource() Q_DECL_OVERRIDE;
- void releaseControl() Q_DECL_OVERRIDE;
- QSize nativeSize() const Q_DECL_OVERRIDE;
- void updateGeometry() Q_DECL_OVERRIDE;
- QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) Q_DECL_OVERRIDE;
- QAbstractVideoSurface *videoSurface() const Q_DECL_OVERRIDE;
- QRectF adjustedViewport() const Q_DECL_OVERRIDE;
+ bool init(QMediaService *service) override;
+ void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &changeData) override;
+ void releaseSource() override;
+ void releaseControl() override;
+ QSize nativeSize() const override;
+ void updateGeometry() override;
+ QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override;
+ QAbstractVideoSurface *videoSurface() const override;
+ QRectF adjustedViewport() const override;
private:
QPointer<QVideoWindowControl> m_videoWindowControl;
diff --git a/src/qtmultimediaquicktools/qsgvideonode_rgb.cpp b/src/qtmultimediaquicktools/qsgvideonode_rgb.cpp
index 0dfa11ab9..d039e1e0b 100644
--- a/src/qtmultimediaquicktools/qsgvideonode_rgb.cpp
+++ b/src/qtmultimediaquicktools/qsgvideonode_rgb.cpp
@@ -113,11 +113,19 @@ protected:
class QSGVideoMaterialShader_RGB_swizzle : public QSGVideoMaterialShader_RGB
{
public:
- QSGVideoMaterialShader_RGB_swizzle()
- : QSGVideoMaterialShader_RGB()
+ QSGVideoMaterialShader_RGB_swizzle(bool hasAlpha)
+ : m_hasAlpha(hasAlpha)
{
setShaderSourceFile(QOpenGLShader::Fragment, QStringLiteral(":/qtmultimediaquicktools/shaders/rgbvideo_swizzle.frag"));
}
+
+protected:
+ void initialize() override {
+ QSGVideoMaterialShader_RGB::initialize();
+ program()->setUniformValue(program()->uniformLocation("hasAlpha"), GLboolean(m_hasAlpha));
+ }
+
+ bool m_hasAlpha;
};
@@ -145,7 +153,8 @@ public:
}
QSGMaterialShader *createShader() const override {
- return needsSwizzling() ? new QSGVideoMaterialShader_RGB_swizzle
+ const bool hasAlpha = m_format.pixelFormat() == QVideoFrame::Format_ARGB32;
+ return needsSwizzling() ? new QSGVideoMaterialShader_RGB_swizzle(hasAlpha)
: new QSGVideoMaterialShader_RGB;
}
diff --git a/src/qtmultimediaquicktools/qsgvideonode_texture.cpp b/src/qtmultimediaquicktools/qsgvideonode_texture.cpp
index a26d59532..f5545afc7 100644
--- a/src/qtmultimediaquicktools/qsgvideonode_texture.cpp
+++ b/src/qtmultimediaquicktools/qsgvideonode_texture.cpp
@@ -108,11 +108,19 @@ protected:
class QSGVideoMaterialShader_Texture_swizzle : public QSGVideoMaterialShader_Texture
{
public:
- QSGVideoMaterialShader_Texture_swizzle()
- : QSGVideoMaterialShader_Texture()
+ QSGVideoMaterialShader_Texture_swizzle(bool hasAlpha)
+ : m_hasAlpha(hasAlpha)
{
setShaderSourceFile(QOpenGLShader::Fragment, QStringLiteral(":/qtmultimediaquicktools/shaders/rgbvideo_swizzle.frag"));
}
+
+protected:
+ void initialize() override {
+ QSGVideoMaterialShader_Texture::initialize();
+ program()->setUniformValue(program()->uniformLocation("hasAlpha"), GLboolean(m_hasAlpha));
+ }
+
+ int m_hasAlpha;
};
@@ -138,7 +146,8 @@ public:
}
QSGMaterialShader *createShader() const override {
- return needsSwizzling() ? new QSGVideoMaterialShader_Texture_swizzle
+ const bool hasAlpha = m_format.pixelFormat() == QVideoFrame::Format_ARGB32;
+ return needsSwizzling() ? new QSGVideoMaterialShader_Texture_swizzle(hasAlpha)
: new QSGVideoMaterialShader_Texture;
}
diff --git a/src/qtmultimediaquicktools/qsgvideonode_yuv.cpp b/src/qtmultimediaquicktools/qsgvideonode_yuv.cpp
index b04c6b38b..9eff9dbd6 100644
--- a/src/qtmultimediaquicktools/qsgvideonode_yuv.cpp
+++ b/src/qtmultimediaquicktools/qsgvideonode_yuv.cpp
@@ -120,9 +120,9 @@ public:
setShaderSourceFile(QOpenGLShader::Fragment, QStringLiteral(":/qtmultimediaquicktools/shaders/uyvyvideo.frag"));
}
- void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) Q_DECL_OVERRIDE;
+ void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) override;
- char const *const *attributeNames() const Q_DECL_OVERRIDE {
+ char const *const *attributeNames() const override {
static const char *names[] = {
"qt_VertexPosition",
"qt_VertexTexCoord",
@@ -132,7 +132,7 @@ public:
}
protected:
- void initialize() Q_DECL_OVERRIDE {
+ void initialize() override {
m_id_matrix = program()->uniformLocation("qt_Matrix");
m_id_yTexture = program()->uniformLocation("yTexture");
m_id_uvTexture = program()->uniformLocation("uvTexture");
diff --git a/src/qtmultimediaquicktools/qtmultimediaquicktools.pro b/src/qtmultimediaquicktools/qtmultimediaquicktools.pro
index e4e157a54..bffdc6ec2 100644
--- a/src/qtmultimediaquicktools/qtmultimediaquicktools.pro
+++ b/src/qtmultimediaquicktools/qtmultimediaquicktools.pro
@@ -1,4 +1,4 @@
-TARGET = QtMultimediaQuick_p
+TARGET = QtMultimediaQuick
QT = core quick multimedia-private
CONFIG += internal_module
diff --git a/src/qtmultimediaquicktools/shaders/rgbvideo_swizzle.frag b/src/qtmultimediaquicktools/shaders/rgbvideo_swizzle.frag
index f01dc86a0..99caa19fb 100644
--- a/src/qtmultimediaquicktools/shaders/rgbvideo_swizzle.frag
+++ b/src/qtmultimediaquicktools/shaders/rgbvideo_swizzle.frag
@@ -1,8 +1,10 @@
uniform sampler2D rgbTexture;
uniform lowp float opacity;
varying highp vec2 qt_TexCoord;
+uniform bool hasAlpha;
void main()
{
- gl_FragColor = vec4(texture2D(rgbTexture, qt_TexCoord).bgr, 1.0) * opacity;
+ lowp vec4 v = texture2D(rgbTexture, qt_TexCoord);
+ gl_FragColor = vec4(v.bgr, hasAlpha ? v.a : 1.0) * opacity;
}