Michael Tretter
5f6f755f5b
gstqsg6material: pass the texture-target from caps to shader
...
The Material has to select the correct Shader depending on the negotiated
texture target.
Pass the texture target from the caps to the shader creation as it is already
done for the pixel format.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319 >
2024-08-09 00:21:42 +00:00
Michael Tretter
429042fb70
gstqsg6material: create OESExternal RhiTexture if necessary
...
The RhiTexture must be created with the OESExternal flag, if the gl_mem is a
OESExternal buffer. Otherwise, Qt will create a Texture 2D texture and ignore
the previously negotiated texture target.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319 >
2024-08-09 00:21:42 +00:00
Michael Tretter
c91e002b5e
gstqsg6material: print loaded fragment shader to log
...
This is useful for checking that the qml6glsink selected the correct fragment
shader for the expected texture format.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319 >
2024-08-09 00:21:42 +00:00
Nicolas Dufresne
d321afcd1b
qt6glwindow: Only use GL_READ_FRAMEBUFFER when we do blits
...
This fbo target is not always supported, and should only be used
along with the frame buffer blit extension.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7291 >
2024-08-02 13:03:51 +00:00
Nicolas Dufresne
5df658cfdd
qt6: glwindow: Don't leak previously rendered buffer
...
If the consumer reads the buffers too slowily, simply unref the
previously rendered buffer instead of leaking it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7286 >
2024-08-01 12:44:06 +00:00
Tihran Katolikian
cc1d978d7f
qt6: explicitly specify path to QtGui private headers when including qrhi_p.h
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7131 >
2024-07-04 09:52:57 +00:00
Corentin Damman
bdeabcc4a6
gstqsg6material: fix RGB format support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6991 >
2024-06-05 16:49:06 +00:00
William Wedler
c02af39026
fix: qml6glsink: video content resizes to new item size
...
Mark geometry dirty when the item rectangle changes in the
QtGLVideoItem::updatePaintNode method. This allows changes in the bounding
rectangle to be applied to the scene graph geometry node.
Fixes #3493
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6711 >
2024-04-29 02:57:06 +00:00
William Wedler
942415dce0
fix: qml6glsink: Notify that the returned QSGNode node has changes
...
Sets the QSGNode::DirtyMaterial bit when a new buffer is used for the material's texture
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3469
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6609 >
2024-04-11 14:21:04 +00:00
Jochen Henneberg
687b3a2027
qt6: Let plugin documentation show up
...
* Added qml6 to plugin cache
* Added 'since' markers
* Moved plugin to plugins-good where it really is
* Fixed section comments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6603 >
2024-04-11 12:38:59 +00:00
Jochen Henneberg
fee46dee28
qt6: Added support for NV12 input format to qml6glsink
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6582 >
2024-04-10 13:45:26 +02:00
Jochen Henneberg
6e33a5da14
qt6: Fixes for dummy texture
...
* RED_OR_ALPHA8 will map value to alpha for OpenGL, use R8 to avoid
2nd shader
* Determine texel size for proper texture memory preparation
* QByteArray::fromRawData() does shallow copy and thus leads to use of
corrupted memory
* Make sure RGBA dummy texture is fully opaque
* QRhiTexture::create() must be called to allocate texture resources
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6578 >
2024-04-08 20:05:10 +02:00
Robert Guziolowski
52638c1b22
qml6glsink: fix destruction of underlying texture
...
One should not directly delete the QRhiTexture instance.
Instead it should be marked as to be deleted once QRhi::endFrame()
is called (see: https://doc.qt.io/qt-6/qrhiresource.html#deleteLater )
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3443
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6467 >
2024-04-02 11:55:16 +11:00
Matthew Waters
392fd00f4c
qml, qml6: Fix leak of QSGMaterial/Geometry (and therefore a possible GstBuffer)
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160 >
2024-02-22 10:26:31 +00:00
Matthew Waters
2dae3775d9
qml6: fix a leak of the wrapped QSGTextures
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160 >
2024-02-22 10:24:24 +00:00
Marc Leeman
eb17de27d6
qt6: search in /usr/lib/qt6/bin/ for qsb
...
In Debian and possibly other distributions, qsb (qt6-shader-baker) is
not in the default path, but in a QT6 specific path. Search there too
Applied changes from Nirbheek
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6095 >
2024-02-19 12:29:32 +00:00
Nirbheek Chauhan
d0ae93771e
meson: Don't use fs.copyfile() for qt6 resources
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3285
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6077 >
2024-02-09 11:14:09 +05:30
Nirbheek Chauhan
f6f448bb80
meson: Fix several warnings in the build
...
Deprecations, incorrect options, etc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6058 >
2024-02-06 23:57:17 +00:00
Nirbheek Chauhan
a5cb2ef9cd
meson: Print a useful error message when qt windowing is not found
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6040 >
2024-02-03 05:42:26 +00:00
Matthias Fuchs
2bbc2a4c52
qml6glsrc: sync on the streaming thread
...
After rendering a QML scene the qml6glsrc element copies the contents of
the scene to a GStreamer buffer. This happens on the Qt render thread.
Then it attaches a sync point to the destination buffer. This sync point
must be awaited by other threads which use the buffer later on. The
current implementation relies on the downstream elements to wait for the
sync point. However, there are situation where this does not work. The
GstBaseTransform e.g. copies the buffer metadata (which overwrites the
sync point without waiting for it) *before* waiting for the sync point.
This commit waits for the sync point inside the qml6glsrc element before
sending it downstream. The wait command is issued on the streaming
thread with the pipeline OpenGL context, i.e. it will synchronize with
the GStreamer OpenGL thread.
This is a port of the original fix for the qmlglsrc element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5519 >
2023-10-23 08:43:16 +00:00
Jordan Petridis
5f7a37f21e
qt6: if def newer symbosl in QRhiTexture
...
version 6.4 added QRhiTexture::RGB10A2 but we depend on an older
version of qt in meson, and we can keep compiling with older Qt6
versions still.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5475 >
2023-10-12 22:57:35 +00:00
Matthew Waters
7b491f382c
build/qt6: properly error/skip build if the qsb tool is not found
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3032
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5459 >
2023-10-12 12:58:26 +00:00
Matthew Waters
9e6891076c
qml6glmixer: add support for non-RGBA inputs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5290 >
2023-09-07 02:12:29 +00:00
Matthew Waters
ba00a7efda
qml6glovleray: add support for non-RGBA inputs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5290 >
2023-09-07 02:12:29 +00:00
Matthew Waters
6efccf0ee1
qml6/sink: add support for non-RGBA input
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5290 >
2023-09-07 02:12:29 +00:00
Nirbheek Chauhan
223a0e3b27
meson: Fix searching of qt5/qt6 tools with qmake
...
If the pkg-config files are broken, we want to ensure that qmake is
used. This can easily happen on macOS with the official Qt binaries.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5147 >
2023-08-04 14:52:10 +00:00
Seungha Yang
521ba8f65a
qt6: Set sampler filtering method
...
QQuickItem::smooth property doesn't seem to be propagated to
newly created QSGSimpleTextureNode automatically.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2793
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5004 >
2023-07-11 12:14:17 +00:00
Philipp Zabel
32dfa102b3
qtglrenderer.cc: Add missing QCoreApplication and QEventLoop includes
...
This fixes a build error if Qt was build without accessibility support:
../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:
In member function 'bool GstQuickRenderer::init(GstGLContext*, GError**)':
../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:341:13:
error: 'QCoreApplication' was not declared in this scope; did you mean 'QApplication'?
../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:341:31:
error: 'app' was not declared in this scope
../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:341:37:
error: 'QCoreApplication' is not a class, namespace, or enumeration
[...]
../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:458:5:
error: 'QEventLoop' was not declared in this scope; did you mean 'QEvent'?
../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:459:9:
error: 'loop' was not declared in this scope
If accessibility is enabled, the includes for QCoreApplication and QEventLoop
are indirectly pulled via QWidget.
Add the required headers as documented in [1] and [2].
[1] https://doc.qt.io/qt-5/qcoreapplication.html
[2] https://doc.qt.io/qt-5/qeventloop.html
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4815 >
2023-07-05 17:52:09 +00:00
Nirbheek Chauhan
ca4762168f
meson: Support building qml6glsink on win32
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4742 >
2023-06-02 14:27:44 +05:30
Matthew Waters
74f914077d
qt6/glrenderer: don't attempt to use QWindow from non-Qt main thread
...
Use QObject::deleteLater() to schedule deletion in the main thread.
Remove the moveToThread of the QWindow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4728 >
2023-05-31 02:10:26 +00:00
Matthew Waters
3f4bfa097a
qml6: add a mixer element
...
Can take multiple input streams and a qml scene and layout the input
videos inside the qml scene.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4609 >
2023-05-19 01:48:57 +00:00
Nirbheek Chauhan
93be699ab2
meson: Add more qt options and eliminate all automagic
...
The qt5 and qt6 plugins will now correctly error out if you enable the
option, and you can also now explicitly ensure that wayland, x11,
eglfs support is actually functional by enabling the options. It was
too easy to build non-functional support for these.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4537 >
2023-05-09 13:18:38 +00:00
Matthew Waters
659c45ee7e
qml6: implement qml6gloverlay
...
Based on the Qt5 version of qmlgloverlay.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3845 >
2023-02-01 13:23:52 +00:00
Matthew Waters
293ad62035
qt6: add qml6glsrc element
...
Same functionality as qmlglsrc (Qt5) but for Qt6.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3737 >
2023-01-28 02:24:09 +00:00
Nirbheek Chauhan
92b9c604c4
meson: Add an option to select the method for finding Qt
...
This is needed by Cerbero, since we want to force the use of qmake to
find Qt on non-Linux platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3628 >
2022-12-29 09:53:17 +00:00
Thibault Saunier
f7b342f1dd
base:navigation: Cleanup navigation key modifiers enum
...
We were exposing the 'ALT' modifier as if we were guaranteeing its
accuracy but truth is we were only exposing configuration dependent
values.
Make the API simpler for now, the same way as Gtk3 was exposing it, and
when we have time to guarantee more values by making them take backends
configuration into account, we will expose those values in a accurate
way.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1402
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3565 >
2022-12-15 16:47:13 +00:00
Bo Elmgreen
1f88f411bc
qt: deactivate context if fill_info fails
...
Now the OpenGL context is deactivated if call to gst_gl_context_fill_info()
fails in gst_qt_get_gl_wrapcontext(), preventing that the context is left
activated, which could lead to invalid memory reads.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3492 >
2022-12-01 14:21:37 +00:00
Matthew Waters
18972fc942
add new plugin for Qt 6 rendering inside a QML scene
...
- Based heavily on the existing Qt5 integration however:
- The sharing of OpenGL resources is slightly different
- The integration with the scengraph is a bit different
- Wayland, XCB and KMS have been smoke tested. Android, MacOS/iOS,
Windows may or may not work.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3281 >
2022-11-24 16:11:04 +11:00