From 812dea3058e5505874b37973e08f3f890bee1b77 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sun, 9 Feb 2020 12:42:11 -0500 Subject: [PATCH] cmake add qmlglsink support (gst-plugins_good) --- CMakeLists.txt | 3 ++ qmlglsink.cmake | 65 +++++++++++++++++++++++++++++++ src/VideoStreaming/CMakeLists.txt | 14 +++++-- 3 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 qmlglsink.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e0f792d2..755a897ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,7 @@ find_package(PkgConfig) pkg_check_modules(GST gstreamer-1.0>=1.14 gstreamer-video-1.0>=1.14 + gstreamer-gl-1.0>=1.14 ) if (GST_FOUND) @@ -100,6 +101,8 @@ if (GST_FOUND) -DQGC_GST_TAISYNC_ENABLED -DQGC_GST_MICROHARD_ENABLED ) + + include(qmlglsink.cmake) endif() #============================================================================= # Qt5 diff --git a/qmlglsink.cmake b/qmlglsink.cmake new file mode 100644 index 000000000..7798b271f --- /dev/null +++ b/qmlglsink.cmake @@ -0,0 +1,65 @@ + +find_package(Qt5Gui ${QT_VERSION} CONFIG REQUIRED Private) + +add_library(gst_plugins_good + libs/gst-plugins-good/ext/qt/gstplugin.cc + libs/gst-plugins-good/ext/qt/gstqtglutility.cc + libs/gst-plugins-good/ext/qt/gstqsgtexture.cc + libs/gst-plugins-good/ext/qt/gstqtsink.cc + libs/gst-plugins-good/ext/qt/gstqtsrc.cc + libs/gst-plugins-good/ext/qt/qtwindow.cc + libs/gst-plugins-good/ext/qt/qtitem.cc + + libs/gst-plugins-good/ext/qt/gstqsgtexture.h + libs/gst-plugins-good/ext/qt/gstqtgl.h + libs/gst-plugins-good/ext/qt/gstqtglutility.h + libs/gst-plugins-good/ext/qt/gstqtsink.h + libs/gst-plugins-good/ext/qt/gstqtsrc.h + libs/gst-plugins-good/ext/qt/qtwindow.h + libs/gst-plugins-good/ext/qt/qtitem.h +) + +if(LINUX) + target_compile_definitions(gst_plugins_good PUBLIC HAVE_QT_X11 HAVE_QT_EGLFS HAVE_QT_WAYLAND) + + + find_package(Qt5 ${QT_VERSION} + COMPONENTS + X11Extras + REQUIRED + HINTS + ${QT_LIBRARY_HINTS} + ) + + target_link_libraries(gst_plugins_good + PUBLIC + Qt5::X11Extras + ) + +elseif(APPLE) + target_compile_definitions(gst_plugins_good PUBLIC HAVE_QT_MAC) +elseif(IOS) + target_compile_definitions(gst_plugins_good PUBLIC HAVE_QT_MAC) +elseif(WIN32) + target_compile_definitions(gst_plugins_good PUBLIC HAVE_QT_WIN32) + + # TODO: use FindOpenGL? + target_link_libraries(gst_plugins_good PUBLIC opengl32.lib user32.lib) + # LIBS += opengl32.lib user32.lib +elseif(ANDROID) + target_compile_definitions(gst_plugins_good PUBLIC HAVE_QT_ANDROID) +endif() + +target_link_libraries(gst_plugins_good + PUBLIC + Qt5::Core + Qt5::OpenGL + Qt5::GuiPrivate +) + +target_compile_options(gst_plugins_good + PRIVATE + -Wno-unused-parameter + -Wno-implicit-fallthrough +) + diff --git a/src/VideoStreaming/CMakeLists.txt b/src/VideoStreaming/CMakeLists.txt index d9d5daee9..45f680544 100644 --- a/src/VideoStreaming/CMakeLists.txt +++ b/src/VideoStreaming/CMakeLists.txt @@ -5,13 +5,19 @@ if (GST_FOUND) endif() add_library(VideoStreaming - VideoReceiver.cc - VideoStreaming.cc - SubtitleWriter.cc - GLVideoItemStub.cc + GLVideoItemStub.cc + GLVideoItemStub.h + SubtitleWriter.cc + SubtitleWriter.h + VideoReceiver.cc + VideoReceiver.h + VideoStreaming.cc + VideoStreaming.h ) target_link_libraries(VideoStreaming + PRIVATE + gst_plugins_good PUBLIC qgc Qt5::Multimedia -- 2.22.0