summaryrefslogtreecommitdiffstats
path: root/src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag
diff options
context:
space:
mode:
authorMassimo Callegari <massimocallegari@yahoo.it>2018-08-24 23:41:13 +0200
committerMassimo Callegari <massimocallegari@yahoo.it>2018-09-03 12:26:39 +0000
commitf844a2acbb7ecc4d7b1776d1d6eeb8feab7044f1 (patch)
treeb6081a7e762789765750703d273f930ccbf0de42 /src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag
parentc1ca9510af3c3c4134b717f1863651783e338a9e (diff)
Add OpenGL core profile support to QtMultimediaQuickTools
When requesting a OGL Core profile via QSurfaceFormat::setDefaultFormat (e.g. to use Qt3D advanced features), it is no longer possible to render QML Video items. This is because the requested shaders should be _core versions. This patch adds the core shaders so QtMultimedia stops whining, and bind textures with the proper format, since GL_LUMINANCE and GL_LUMINANCE_ALPHA are no longer valid in OGL 4. Task-number: QTBUG-51064 Change-Id: I909e01e7dc7be07549e9ecf0a6425b309af38ea1 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag')
-rw-r--r--src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag b/src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag
new file mode 100644
index 000000000..75c7de5a6
--- /dev/null
+++ b/src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag
@@ -0,0 +1,13 @@
+#version 150 core
+uniform sampler2D yTexture; // Y component passed as GL_LUMINANCE_ALPHA, in uyvy Y = a
+uniform sampler2D uvTexture; // UV component passed as RGBA macropixel, in uyvy U = r, V = b
+uniform mat4 colorMatrix;
+uniform float opacity;
+in vec2 qt_TexCoord;
+out vec4 fragColor;
+
+void main()
+{
+ vec3 YUV = vec3(texture(yTexture, qt_TexCoord).a, texture2D(uvTexture, qt_TexCoord).rb);
+ fragColor = colorMatrix * vec4(YUV, 1.0) * opacity;
+}