Skip to content

Remove GStreamer and upgrade to Qt 6#592

Draft
aalex wants to merge 12 commits into
devfrom
remove-gst
Draft

Remove GStreamer and upgrade to Qt 6#592
aalex wants to merge 12 commits into
devfrom
remove-gst

Conversation

@aalex
Copy link
Copy Markdown
Member

@aalex aalex commented May 20, 2026

Remove GStreamer and upgrade to Qt 6

Upgrade the GitHub action to Ubuntu 26.04.

aalex added 4 commits May 20, 2026 00:30
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.
@aalex aalex self-assigned this May 20, 2026
@aalex aalex changed the title Remove gst Remove GStreamer and upgrade to Qt 6 May 20, 2026
aalex added 3 commits May 20, 2026 16:53
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.
@aalex aalex mentioned this pull request May 21, 2026
aalex added 5 commits May 20, 2026 23:50
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant