Posts

Showing posts from May, 2023

New Qt6 QML (OpenGL) elements

Image
Recently, I was tasked with porting some of the existing Qt5-based QML GStreamer elements for use with Qt6. Throughout this process, the only major architectural change in Qt that affected these GStreamer elements was the Qt6 rendering overhaul for supporting multiple graphics APIs (OpenGL, Vulkan, Direct3D, Metal, etc). The process overall was relatively painless however still required understanding the new Qt6 rendering model. The result is a set of elements that mirror functionality of the existing Qt5 GStreamer elements (`qmlglsink`, `qmlglsrc`, `qmlgloverlay`). The new elements are named `qml6glsink`, `qml6glsrc`, and `qml6gloverlay`. There is also a new element called `qml6glmixer`. qml6glsink The Qt6 variant of qmlglsink operates the exact same as its Qt5 counterpart. There is a QML Item that needs to be retrieved from the QML scene and a GStreamer sink component that needs the QML item set as a property. Once that is achieved, the video stream is viewable in the QML sc