Video: GStreamer subsystem overhaul + audit fixes#14499
Conversation
26a30d5 to
13d0052
Compare
|
See the Build Results workflow run for details. |
dbeb77c to
48dd85e
Compare
Codecov Report❌ Patch coverage is ❌ Your patch check has failed because the patch coverage (18.57%) is below the target coverage (30.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## master #14499 +/- ##
==========================================
+ Coverage 25.47% 30.44% +4.97%
==========================================
Files 769 786 +17
Lines 65912 66746 +834
Branches 30495 30914 +419
==========================================
+ Hits 16788 20323 +3535
+ Misses 37285 32532 -4753
- Partials 11839 13891 +2052
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 403 files with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
d8a4d73 to
131dd86
Compare
62e5067 to
a9a9ed3
Compare
a9a9ed3 to
5458bc7
Compare
|
|
||
| steps: | ||
| - name: Harden Runner | ||
| uses: step-security/harden-runner@v2 |
5e9bf3b to
9274470
Compare
4564817 to
3601fad
Compare
Extract GstSourceFactory from GstVideoReceiver. Split GstAppSinkAdapter into focused components (GStreamerEnvironment, GStreamerFrameMap, GStreamerLogging, GStreamerHelpers). Expand HwBuffers into per-platform zero-copy GPU paths (DMABuf, GL, IOSurface, D3D11, D3D12, AHardwareBuffer) sharing GstHwFrameTexturesBase + GstGlFrameTextures, with GstContextBridgeRegistry for cross-thread context handoff and GstHwPathTelemetry for per-format fallback counters. Add CpuVideoFramePool (WebRTC-style QByteArray slab recycler) for the CPU fallback path. HwBuffers is organized into per-backend subfolders (common, dmabuf, gl, d3d, vulkan, apple, android, cuda) matching the CMake path-gating; intra-HwBuffers unqualified includes resolve via the subfolders added to the GStreamer include path, and external includers are repointed to their new subpaths. Introduce custom gstqgc GStreamer plugin (qgcqvideosink + bin) with QGC-side QRhi capture and shader pipeline routing. CMake: reorganize GStreamer support into cmake/GStreamer/ (Orchestrator, Probe, Components, Download, Install, Layout, Link, PluginPolicy + per-platform modules + test harness). Delete obsolete FindGStreamerMobile, FindQGCGStreamer, GStreamerHelpers, gst_ios_init shims. Android: drop unused Java callback wrappers (GStreamer.java, GstAhcCallback, GstAhsCallback, GstAmcOnFrameAvailableListener). Audit fixes (Qt 6.10.3 source cross-checked): - BGRx/BGRA DRM fourcc endian: was ABGR8888, now ARGB8888 (LE) per Qt fourccFromVideoInfo() at qgstvideobuffer.cpp:178-180 - SMPTE 240M color matrix: was BT709, now AdobeRgb per qgst.cpp:407-409 - SMPTE 240M transfer: was BT709, now Gamma22 per qgst.cpp:423-427 - FCC color matrix: was BT601, now Undefined (no Qt equivalent) - DMABuf GL cleanup: drop QRhiGles2NativeHandles cast fallback, use only QOpenGLContext::currentContext() after makeThreadLocalNativeContextCurrent, matching ~QGstQVideoFrameTextures - Inline kMaxDotFiles + kEosTimeoutNs into GstVideoReceiver.cc; delete GStreamerConfig.h (5 dead constants from removed pacing feature)
3601fad to
f31cf72
Compare
Summary
Architectural overhaul of the GStreamer video subsystem plus Qt-6.10-validated audit fixes.
GstVideoReceiver;GstAppSinkAdaptersplit into focused units (GStreamerEnvironment,GStreamerFrameMap,GStreamerLogging,GStreamerHelpers).GstHwFrameTexturesBase+GstGlFrameTextures, withGstContextBridgeRegistryfor cross-thread context handoff andGstHwPathTelemetryfor per-format fallback counters.CpuVideoFramePool(QByteArray slab recycler) backs the CPU fallback.gstqgcplugin (qgcqvideosink+ sink bin) with QGC-side QRhi capture and shader routing.cmake/GStreamer/(Orchestrator, Probe, Components, Download, Install, Layout, Link, PluginPolicy + per-platform modules + test harness). ObsoleteFindGStreamerMobile/FindQGCGStreamer/gst_ios_initshims removed. Unused Android Java callback wrappers dropped.Audit fixes (cross-checked against Qt 6.10.3 source)
ABGR8888→ARGB8888(LE) perfourccFromVideoInfo().BT709 → AdobeRgb, transferBT709 → Gamma22; FCC matrixBT601 → Undefined.~QGstQVideoFrameTextures(dropQRhiGles2NativeHandlesfallback).GstContextBridgeRegistrysnapshot-under-lock; D3D12 decoder-fence sync + slice copy moved off the QSGRenderThread to the streaming thread; per-framedynamic_castreplaced with asourcePath()path-tag.QRhibackend (QQuickWindow::graphicsApi()), so a D3D12 decoder can't outrank D3D11 on Qt's default Windows RHI.Runtime fixes (caught via local run)
gpu-zerocopyis construct-only — construct the innerqgcqvideosinkviagst_element_factory_make_fullinstead of a post-constructiong_object_setthat GLib rejected.GstQgcVideoSinkBinnow exposes asyncproperty proxied to the inner basesink, soGstVideoReceiver'ssyncsetting actually applies.Testing
GLib-GObjectproperty criticals remain.