Remove GStreamer and upgrade to Qt 6#592
Draft
aalex wants to merge 12 commits into
Draft
Conversation
Replace the GStreamer media backend with Qt 6 Multimedia (QMediaPlayer, QVideoSink, QAudioOutput, QCamera, QMediaCaptureSession). This removes a heavy native dependency and brings the codebase onto a supported Qt version. Key changes: - New VideoPlayerImpl class using QMediaPlayer/QVideoSink for file playback - Rewrite CameraSurface (QVideoSink) and CameraImpl (QMediaCaptureSession) - Drop VideoShmSrcImpl, VideoUriDecodeBinImpl, VideoV4l2SrcImpl - QGLWidget → QOpenGLWidget, QDesktopWidget → QScreen - QRegExp → QRegularExpression throughout (including qtpropertybrowser) - Fix all Qt 5→6 API breakages (endl, toAscii, qCopy, QMutexLocker template, enterEvent, QWeakPointer::data, QVariant helpers, etc.) - Update build scripts for Qt 6 on macOS
Delete obsolete GStreamer video backend source files (VideoUriDecodeBinImpl, VideoV4l2SrcImpl, VideoShmSrcImpl), the GStreamer macOS URL resource, and clean up all remaining GStreamer mentions in INSTALL.md, README.md, TODO, CI workflows, build scripts, and source comments. CHANGELOG entries are preserved as historical record.
Remove GStreamer dependencies and update to Qt 6 packages. Travis: Ubuntu Noble, Xcode 15.4. AppVeyor: Qt 6.8, simplified build.
Delete the three old qt-*.yml workflows (disabled, Qt 5.12) and replace with new macos-build.yml and windows-build.yml using Qt 6. All three platforms now build on push/PR to dev and master branches.
Open
QOSC_LIBRARY is never defined since qosc is compiled directly into the app, so QOSC_EXPORT was expanding to Q_DECL_IMPORT (__declspec(dllimport) on Windows), causing undefined __imp_ symbol references at link time.
OSC support now uses the bundled oscpack library, not liblo. Remove all leftover liblo references from source, CI configs, and docs. Also fixes a memory leak: osc_timer deletion was guarded by HAVE_OSC which was never defined.
Replace QDomDocument-based XML serialization with Qt built-in QJsonDocument/QJsonObject/QJsonArray. Project files (.mmp) are now saved as human-readable JSON. File format renames for clarity: - paints -> sources - mappings -> layers - paintId -> sourceId Remove QT += xml dependency (JSON classes are in QtCore).
The previous implementation used end()-1 on a potentially empty QList, causing an invalid iterator and a Qt assertion failure. The iterator was also invalidated after each erase() call, making the loop UB. Replace with the standard Qt model reset pattern.
The manual end-of-stream restart via the _eos flag and update() cycle was unreliable. Use Qt 6 native infinite looping instead.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Remove GStreamer and upgrade to Qt 6
Upgrade the GitHub action to Ubuntu 26.04.