-
Notifications
You must be signed in to change notification settings - Fork 4.3k
GStreamer: Add qml6d3d11 Video Sink #12829
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
d0e8e0f
to
66d670a
Compare
4d864ef
to
6a70327
Compare
52435f6
to
21de26f
Compare
0b3aac9
to
3a0f7bf
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a Direct3D11-based video sink path for Windows by introducing new D3D11 sink components, updating build configurations, and selecting the appropriate sink and graphics API at runtime on Windows.
- Introduce
gstqgcvideosinkbin_d3d11
andqml6d3d11sink
for Windows, alongside registration and plugin support. - Update CMake and
FindGStreamer.cmake
to include and link the D3D11 GStreamer component. - Adjust runtime selection in
GStreamer.cc
,GstVideoReceiver.cc
, QML registrations, and application initialization to use D3D11 on Windows.
Reviewed Changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
File | Description |
---|---|
gstqml6gl/CMakeLists.txt | Force shader resource cache override |
gstqgc/gstqgcvideosinkbin_d3d11.h/.cc | Added D3D11 sink bin type and implementation |
gstqgc/gstqgcvideosinkbin.h/.cc | Renamed QML GL sink fields to match qml6glsink |
gstqgc/gstqgcelements.h | Declared qgcvideosinkbind3d11 element |
gstqgc/CMakeLists.txt | Include D3D11 source files on Windows |
GstVideoReceiver.cc | Conditionally omit sync property on Windows |
GStreamer.cc | Register and verify qml6d3d11 plugin; select sink by OS |
CMakeLists.txt (GStreamer) | Add D3d11 to FindGStreamer components |
cmake/find-modules/FindGStreamer.cmake | Support GStreamer D3d11 component and link libraries |
.github/workflows/windows.yml & custom.yml | Bump Windows CI GStreamer version to 1.26.3 |
VideoManager.cc & QGCApplication.cc | Register new QML type and switch to Direct3D11 graphics API |
Comments suppressed due to low confidence (3)
src/VideoManager/VideoReceiver/GStreamer/GstVideoReceiver.cc:1014
- The conditional around the
"sync"
argument leaves a dangling comma or removes it incorrectly on Windows. Refactor to add thesync
property only when needed without breaking the argument list.
#ifndef Q_OS_WIN
src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc:134
- Missing semicolon after
GST_PLUGIN_STATIC_REGISTER(qml6d3d11)
, which will cause a compile error.
GST_PLUGIN_STATIC_REGISTER(qml6d3d11)
src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc:259
- Array size is declared as 2 but conditionally includes a third element (
qml6d3d11
) on Windows, leading to out-of-bounds initialization. Increase the size or use a dynamic container.
static constexpr const char *pluginNames[2] = {
src/VideoManager/VideoReceiver/GStreamer/gstqgc/gstqgcvideosinkbin_d3d11.cc
Show resolved
Hide resolved
src/VideoManager/VideoReceiver/GStreamer/gstqgc/gstqgcvideosinkbin_d3d11.cc
Outdated
Show resolved
Hide resolved
src/VideoManager/VideoReceiver/GStreamer/gstqgc/gstqgcvideosinkbin_d3d11.cc
Outdated
Show resolved
Hide resolved
75ce547
to
fcbe986
Compare
fcbe986
to
26b862f
Compare
Uses D3D11 instead of OpenGL on Windows