[Development] Semi-private headers in Qt
Artem Dyomin
artem.dyomin at qt.io
Thu May 21 12:35:18 CEST 2026
Yes, native interfaces have been considered as an option.
One reason for having gstreamer classes is qml demand for the case (80-90%), native interfaces require extra job on the user-side, and we're providing a solution easy-to-use in qml (public qml API) and C++ (semi-public).
Another reason is that these gstreamer things are not necessary "native interface" for existing components. E.g. QGStreamerVideoSource is rather a new component than a QCamera extension.
BR
Artem
Confidential
________________________________
From: Tor Arne Vestbø <Tor.arne.Vestbo at qt.io>
Sent: Thursday, May 21, 2026 12:03 PM
To: Artem Dyomin <artem.dyomin at qt.io>
Cc: Qt development mailing list <development at qt-project.org>
Subject: Re: [Development] Semi-private headers in Qt
Have you considered whether the GStreamer functionality can be exposed as native interface extension to existing classes?
https://doc.qt.io/qt-6/native-interfaces.html
Or are you building a completely non-cross-platform and distinct API surface for GStramer only in Qt?
Tor Arne
On 21 May 2026, at 11:07, Artem Dyomin via Development <development at qt-project.org> wrote:
In Qt, we have semi-private functionality for rhi, qpa, ssg, that contain a disclaimer in headers and docs limiting SC and BC guarantees, and requiring to link the private part of the module. The headers are deployed as <QtGui/rhi/qrhi.h> etc.
We want to add similar headers for Multimedia with GStreamer functionality. A good idea is having a good name for this kind of API (e.g. experimental) and deploy the headers as <QtModule/experimental/qheader.h>.
The current plan is deploying new gstreamer-related headers under the new name, and then consider transferring existing headers to the new approach (with keeping old ones).
In my view, the term "experimental" is the best as the term "experimental" in C++ highly correlates with how Qt declares it in terms of SC and BC.
A discussion has been started in the CR adding "experimental".
https://codereview.qt-project.org/c/qt/qtbase/+/736307
Other proposals are "semiprivate", "nocompat", "unstable" or similar.
Are you agreed that <QtModule/experimental/qheader.h> works fine for these semi-private headers?
Confidential
--
Development mailing list
Development at qt-project.org<mailto:Development at qt-project.org>
https://lists.qt-project.org/listinfo/development
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20260521/aeeff69c/attachment-0001.htm>
More information about the Development
mailing list