diff --git a/.github/workflows/android-linux.yml b/.github/workflows/android-linux.yml index 37ee1360caf..7d7a753b469 100644 --- a/.github/workflows/android-linux.yml +++ b/.github/workflows/android-linux.yml @@ -36,7 +36,6 @@ jobs: ARTIFACT: QGroundControl.apk PACKAGE: QGroundControl QT_VERSION: 6.8.2 - GST_VERSION: 1.22.12 QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/deploy/android/android_release.keystore QT_ANDROID_KEYSTORE_ALIAS: QGCAndroidKeyStore QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} diff --git a/.github/workflows/android-macos.yml b/.github/workflows/android-macos.yml index e62673a1273..a026eb16b19 100644 --- a/.github/workflows/android-macos.yml +++ b/.github/workflows/android-macos.yml @@ -35,7 +35,6 @@ jobs: ARTIFACT: QGroundControl.apk PACKAGE: QGroundControl QT_VERSION: 6.8.2 - GST_VERSION: 1.22.12 QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/deploy/android/android_release.keystore QT_ANDROID_KEYSTORE_ALIAS: QGCAndroidKeyStore QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} diff --git a/.github/workflows/android-windows.yml b/.github/workflows/android-windows.yml index bdb394eac68..2ee3628f844 100644 --- a/.github/workflows/android-windows.yml +++ b/.github/workflows/android-windows.yml @@ -36,7 +36,6 @@ jobs: ARTIFACT: QGroundControl.apk PACKAGE: QGroundControl QT_VERSION: 6.8.2 - GST_VERSION: 1.22.12 QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/deploy/android/android_release.keystore QT_ANDROID_KEYSTORE_ALIAS: QGCAndroidKeyStore QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} diff --git a/.github/workflows/custom.yml b/.github/workflows/custom.yml index 1f937ce653f..012d0dc7214 100644 --- a/.github/workflows/custom.yml +++ b/.github/workflows/custom.yml @@ -36,7 +36,7 @@ jobs: env: ARTIFACT: QGroundControl-installer.exe QT_VERSION: 6.8.2 - GST_VERSION: 1.22.12 + GST_VERSION: 1.24.12 steps: - name: Checkout repo diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 0c10765fa60..384bad18fb4 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -23,7 +23,6 @@ jobs: ARTIFACT: QGroundControl.app PACKAGE: QGroundControl QT_VERSION: 6.8.2 - GST_VERSION: 1.22.12 steps: - name: Checkout repo diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 362237eb211..598b6ae12c0 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -37,7 +37,6 @@ jobs: ARTIFACT: QGroundControl-x86_64.AppImage PACKAGE: QGroundControl-x86_64 QT_VERSION: 6.8.2 - GST_VERSION: 1.22.12 steps: - name: Checkout repo diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 0fc00e48822..afc1f340a9a 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -36,7 +36,7 @@ jobs: ARTIFACT: QGroundControl-installer.exe PACKAGE: QGroundControl-installer QT_VERSION: 6.8.2 - GST_VERSION: 1.22.12 + GST_VERSION: 1.24.12 steps: - name: Checkout repo diff --git a/cmake/find-modules/FindGStreamer.cmake b/cmake/find-modules/FindGStreamer.cmake index c7f53da295e..117ed7527ff 100644 --- a/cmake/find-modules/FindGStreamer.cmake +++ b/cmake/find-modules/FindGStreamer.cmake @@ -1,17 +1,11 @@ if(ANDROID OR IOS) - if(DEFINED ENV{GST_VERSION}) - set(QGC_GST_TARGET_VERSION $ENV{GST_VERSION} CACHE STRING "Environment Provided GStreamer Version") - else() - set(QGC_GST_TARGET_VERSION 1.22.12 CACHE STRING "Requested GStreamer Version") - endif() -endif() - -if(ANDROID OR IOS) + set(QGC_GST_TARGET_VERSION 1.22.12) set(QGC_GST_STATIC_BUILD ON) endif() +set(PKG_CONFIG_ARGN) if(QGC_GST_STATIC_BUILD) - list(APPEND PKG_CONFIG_ARGN --static) + list(APPEND PKG_CONFIG_ARGN "--static") endif() ################################################################################ @@ -26,11 +20,14 @@ if(WIN32) else() set(GSTREAMER_PREFIX "C:/gstreamer/1.0/msvc_x86_64") endif() - set(ENV{PKG_CONFIG} ${GSTREAMER_PREFIX}/bin) - set(ENV{PKG_CONFIG_PATH} "${GSTREAMER_PREFIX}/lib/pkgconfig;${GSTREAMER_PREFIX}/lib/gstreamer-1.0/pkgconfig;$ENV{PKG_CONFIG_PATH}") + set(GSTREAMER_LIB_PATH "${GSTREAMER_PREFIX}/lib") + set(GSTREAMER_PLUGIN_PATH "${GSTREAMER_LIB_PATH}/gstreamer-1.0") + set(GSTREAMER_INCLUDE_PATH "${GSTREAMER_PREFIX}/include") + set(ENV{PKG_CONFIG} "${GSTREAMER_PREFIX}/bin") + set(ENV{PKG_CONFIG_PATH} "${GSTREAMER_LIB_PATH}/pkgconfig;${GSTREAMER_PLUGIN_PATH}/pkgconfig;$ENV{PKG_CONFIG_PATH}") cmake_path(CONVERT "${GSTREAMER_PREFIX}" TO_CMAKE_PATH_LIST PREFIX_PATH NORMALIZE) - cmake_path(CONVERT "${GSTREAMER_PREFIX}/lib" TO_CMAKE_PATH_LIST LIBDIR_PATH NORMALIZE) - cmake_path(CONVERT "${GSTREAMER_PREFIX}/include" TO_CMAKE_PATH_LIST INCLUDE_PATH NORMALIZE) + cmake_path(CONVERT "${GSTREAMER_LIB_PATH}" TO_CMAKE_PATH_LIST LIBDIR_PATH NORMALIZE) + cmake_path(CONVERT "${GSTREAMER_INCLUDE_PATH}" TO_CMAKE_PATH_LIST INCLUDE_PATH NORMALIZE) list(APPEND PKG_CONFIG_ARGN --dont-define-prefix --define-variable=prefix=${PREFIX_PATH} @@ -41,75 +38,79 @@ elseif(MACOS) list(APPEND CMAKE_FRAMEWORK_PATH "/Library/Frameworks") set(GSTREAMER_FRAMEWORK_PATH "/Library/Frameworks/GStreamer.framework" CACHE PATH "GStreamer Framework Path") set(GSTREAMER_PREFIX "${GSTREAMER_FRAMEWORK_PATH}/Versions/1.0") + set(GSTREAMER_LIB_PATH "${GSTREAMER_PREFIX}/lib") + set(GSTREAMER_PLUGIN_PATH "${GSTREAMER_LIB_PATH}/gstreamer-1.0") + set(GSTREAMER_INCLUDE_PATH "${GSTREAMER_FRAMEWORK_PATH}/Headers") set(ENV{PKG_CONFIG} "${GSTREAMER_PREFIX}/bin") - set(ENV{PKG_CONFIG_PATH} "${GSTREAMER_PREFIX}/lib/pkgconfig:${GSTREAMER_PREFIX}/lib/gstreamer-1.0/pkgconfig:$ENV{PKG_CONFIG_PATH}") + set(ENV{PKG_CONFIG_PATH} "${GSTREAMER_LIB_PATH}/pkgconfig:${GSTREAMER_PLUGIN_PATH}/pkgconfig:$ENV{PKG_CONFIG_PATH}") elseif(LINUX) set(GSTREAMER_PREFIX "/usr") - set(ENV{PKG_CONFIG_PATH} "${GSTREAMER_PREFIX}/lib/x86_64-linux-gnu/pkgconfig:${GSTREAMER_PREFIX}/lib/x86_64-linux-gnu/gstreamer-1.0/pkgconfig:$ENV{PKG_CONFIG_PATH}") + if(EXISTS "${GSTREAMER_PREFIX}/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu") + set(GSTREAMER_LIB_PATH "${GSTREAMER_PREFIX}/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu") + else() + set(GSTREAMER_LIB_PATH "${GSTREAMER_PREFIX}/lib") + endif() + set(GSTREAMER_PLUGIN_PATH "${GSTREAMER_LIB_PATH}/gstreamer-1.0") + set(GSTREAMER_INCLUDE_PATH "${GSTREAMER_PREFIX}/include") + set(ENV{PKG_CONFIG_PATH} "${GSTREAMER_LIB_PATH}/pkgconfig:$ENV{PKG_CONFIG_PATH}") elseif(IOS) list(APPEND CMAKE_FRAMEWORK_PATH "~/Library/Developer/GStreamer/iPhone.sdk") - if(DEFINED ENV{GSTREAMER_PREFIX_IOS} AND EXISTS $ENV{GSTREAMER_PREFIX_IOS}) - set(GSTREAMER_PREFIX_IOS $ENV{GSTREAMER_PREFIX_IOS}) - elseif(EXISTS "~/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework") - set(GSTREAMER_PREFIX_IOS "~/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework") + set(GSTREAMER_FRAMEWORK_PATH "~/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework") + if(EXISTS "${GSTREAMER_FRAMEWORK_PATH}") + set(GSTREAMER_INCLUDE_PATH "${GSTREAMER_FRAMEWORK_PATH}/Headers") else() - FetchContent_Declare(gstreamer - DOWNLOAD_EXTRACT_TIMESTAMP true + include(CPM) + CPMAddPackage( + NAME gstreamer + VERSION ${QGC_GST_TARGET_VERSION} URL "https://gstreamer.freedesktop.org/data/pkg/ios/${QGC_GST_TARGET_VERSION}/gstreamer-1.0-devel-${QGC_GST_TARGET_VERSION}-ios-universal.pkg" ) - FetchContent_MakeAvailable(gstreamer) - set(GSTREAMER_PREFIX_IOS ${gstreamer_SOURCE_DIR}) + set(GSTREAMER_PREFIX ${gstreamer_SOURCE_DIR}) + set(GSTREAMER_INCLUDE_PATH "${GSTREAMER_PREFIX}/include") endif() - set(GSTREAMER_PREFIX ${GSTREAMER_PREFIX_IOS}) elseif(ANDROID) set(GSTREAMER_ARCHIVE "gstreamer-1.0-android-universal-${QGC_GST_TARGET_VERSION}.tar.xz") include(CPM) CPMAddPackage( NAME gstreamer + VERSION ${QGC_GST_TARGET_VERSION} URL "https://gstreamer.freedesktop.org/data/pkg/android/${QGC_GST_TARGET_VERSION}/${GSTREAMER_ARCHIVE}" ) set(GSTREAMER_PREFIX_ANDROID "${gstreamer_SOURCE_DIR}") if(${CMAKE_ANDROID_ARCH_ABI} STREQUAL armeabi-v7a) - set(GSTREAMER_PREFIX ${GSTREAMER_PREFIX_ANDROID}/armv7) + set(GSTREAMER_PREFIX "${GSTREAMER_PREFIX_ANDROID}/armv7") elseif(${CMAKE_ANDROID_ARCH_ABI} STREQUAL arm64-v8a) - set(GSTREAMER_PREFIX ${GSTREAMER_PREFIX_ANDROID}/arm64) + set(GSTREAMER_PREFIX "${GSTREAMER_PREFIX_ANDROID}/arm64") elseif(${CMAKE_ANDROID_ARCH_ABI} STREQUAL x86) - set(GSTREAMER_PREFIX ${GSTREAMER_PREFIX_ANDROID}/x86) + set(GSTREAMER_PREFIX "${GSTREAMER_PREFIX_ANDROID}/x86") elseif(${CMAKE_ANDROID_ARCH_ABI} STREQUAL x86_64) - set(GSTREAMER_PREFIX ${GSTREAMER_PREFIX_ANDROID}/x86_64) + set(GSTREAMER_PREFIX "${GSTREAMER_PREFIX_ANDROID}/x86_64") endif() + set(GSTREAMER_LIB_PATH "${GSTREAMER_PREFIX}/lib") + set(GSTREAMER_PLUGIN_PATH "${GSTREAMER_LIB_PATH}/gstreamer-1.0") + set(GSTREAMER_INCLUDE_PATH "${GSTREAMER_PREFIX}/include") set(ENV{PKG_CONFIG_PATH} "") - set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH OFF) + set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH ON) if(CMAKE_HOST_WIN32) set(ENV{PKG_CONFIG} "${GSTREAMER_PREFIX}/share/gst-android/ndk-build/tools/windows") - set(ENV{PKG_CONFIG_LIBDIR} "${GSTREAMER_PREFIX}/lib/pkgconfig;${GSTREAMER_PREFIX}/lib/gstreamer-1.0/pkgconfig") set(PKG_CONFIG_EXECUTABLE "$ENV{PKG_CONFIG}/pkg-config.exe") - elseif(CMAKE_HOST_LINUX OR CMAKE_HOST_APPLE) - set(ENV{PKG_CONFIG_LIBDIR} "${GSTREAMER_PREFIX}/lib/pkgconfig:${GSTREAMER_PREFIX}/lib/gstreamer-1.0/pkgconfig") + set(ENV{PKG_CONFIG_LIBDIR} "${GSTREAMER_LIB_PATH}/pkgconfig;${GSTREAMER_PLUGIN_PATH}/pkgconfig") + elseif(CMAKE_HOST_UNIX) + set(ENV{PKG_CONFIG_LIBDIR} "${GSTREAMER_LIB_PATH}/pkgconfig:${GSTREAMER_PLUGIN_PATH}/pkgconfig") endif() list(APPEND PKG_CONFIG_ARGN --dont-define-prefix --define-variable=prefix=${GSTREAMER_PREFIX} - --define-variable=libdir=${GSTREAMER_PREFIX}/lib - --define-variable=includedir=${GSTREAMER_PREFIX}/include + --define-variable=libdir=${GSTREAMER_LIB_PATH} + --define-variable=includedir=${GSTREAMER_INCLUDE_PATH} ) endif() -list(PREPEND CMAKE_PREFIX_PATH ${GSTREAMER_PREFIX}) -cmake_print_variables(GSTREAMER_PREFIX) -# TODO: find_path, Change x86_64-linux-gnu based on host -if(LINUX) - set(GSTREAMER_LIB_PATH ${GSTREAMER_PREFIX}/lib/x86_64-linux-gnu) -elseif(MACOS OR ANDROID OR WIN32) - set(GSTREAMER_LIB_PATH ${GSTREAMER_PREFIX}/lib) -elseif(IOS) - -endif() -set(GSTREAMER_PLUGIN_PATH ${GSTREAMER_LIB_PATH}/gstreamer-1.0) -cmake_print_variables(GSTREAMER_LIB_PATH) +list(PREPEND CMAKE_PREFIX_PATH ${GSTREAMER_PREFIX}) +cmake_print_variables(GSTREAMER_PREFIX GSTREAMER_LIB_PATH GSTREAMER_PLUGIN_PATH) ################################################################################ @@ -117,21 +118,20 @@ message(STATUS "PKG_CONFIG $ENV{PKG_CONFIG}") message(STATUS "PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH}") message(STATUS "PKG_CONFIG_LIBDIR $ENV{PKG_CONFIG_LIBDIR}") find_dependency(PkgConfig) + cmake_print_variables(PKG_CONFIG_EXECUTABLE PKG_CONFIG_ARGN) include(CMakeFindDependencyMacro) find_dependency(GObject) -set(GStreamer_VERSION ${QGC_GST_TARGET_VERSION}) pkg_check_modules(GStreamer gstreamer-1.0) cmake_print_variables(GStreamer_VERSION) -# Use Latest Revisions for each minor version: 1.16.3, 1.18.6, 1.20.7, 1.22.12, 1.24.8 +# Use Latest Revisions for each minor version: 1.16.3, 1.18.6, 1.20.7, 1.22.12, 1.24.12 string(REPLACE "." ";" GST_VERSION_LIST ${GStreamer_VERSION}) list(GET GST_VERSION_LIST 0 GST_VERSION_MAJOR) list(GET GST_VERSION_LIST 1 GST_VERSION_MINOR) list(GET GST_VERSION_LIST 2 GST_VERSION_PATCH) -cmake_print_variables(GST_VERSION_MAJOR GST_VERSION_MINOR GST_VERSION_PATCH) if(GST_VERSION_MINOR EQUAL 16) set(GST_VERSION_PATCH 3) @@ -142,7 +142,7 @@ elseif(GST_VERSION_MINOR EQUAL 20) elseif(GST_VERSION_MINOR EQUAL 22) set(GST_VERSION_PATCH 12) elseif(GST_VERSION_MINOR EQUAL 24) - set(GST_VERSION_PATCH 8) + set(GST_VERSION_PATCH 12) endif() set(GST_PLUGINS_VERSION ${GST_VERSION_MAJOR}.${GST_VERSION_MINOR}.${GST_VERSION_PATCH}) @@ -192,30 +192,6 @@ endif() ################################################################################ -if(Allocators IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Allocators gstreamer-allocators-1.0) -endif() - -if(App IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(App gstreamer-app-1.0) -endif() - -if(Audio IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Audio gstreamer-audio-1.0) -endif() - -if(Codecparsers IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Codecparsers gstreamer-codecparsers-1.0) -endif() - -if(Controller IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Controller gstreamer-controller-1.0) -endif() - -if(Fft IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Fft gstreamer-fft-1.0) -endif() - if(GlEgl IN_LIST GStreamer_FIND_COMPONENTS) find_gstreamer_component(GlEgl gstreamer-gl-egl-1.0) endif() @@ -232,72 +208,11 @@ if(GlX11 IN_LIST GStreamer_FIND_COMPONENTS) find_gstreamer_component(GlX11 gstreamer-gl-x11-1.0) endif() -if(Mpegts IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Mpegts gstreamer-mpegts-1.0) -endif() - -if(Net IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Net gstreamer-net-1.0) -endif() - -if(Pbutils IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Pbutils gstreamer-pbutils-1.0) -endif() - -if(Photography IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Photography gstreamer-photography-1.0) -endif() - -if(Play IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Play gstreamer-play-1.0) -endif() - -if(PluginsBad IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(PluginsBad gstreamer-plugins-bad-1.0) -endif() - -if(PluginsBase IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(PluginsBase gstreamer-plugins-base-1.0) -endif() - -if(PluginsGood IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(PluginsGood gstreamer-plugins-good-1.0) -endif() - -if(Riff IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Riff gstreamer-riff-1.0) -endif() - -if(Rtp IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Rtp gstreamer-rtp-1.0) -endif() - -if(Sdp IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Sdp gstreamer-sdp-1.0) -endif() - -if(Rtsp IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Rtsp gstreamer-rtsp-1.0) -endif() - -if(Tag IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Tag gstreamer-tag-1.0) -endif() - -if(Va IN_LIST GStreamer_FIND_COMPONENTS) - find_gstreamer_component(Va gstreamer-va-1.0) -endif() - ################################################################################ -# Create target GStreamer::GStreamer include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GStreamer - REQUIRED_VARS - GStreamer_Core_FOUND - GStreamer_Base_FOUND - GStreamer_Video_FOUND - GStreamer_Gl_FOUND + VERSION_VAR GStreamer_VERSION HANDLE_COMPONENTS ) @@ -323,31 +238,27 @@ if(QGC_GST_STATIC_BUILD) target_compile_definitions(GStreamer::GStreamer INTERFACE QGC_GST_STATIC_BUILD) endif() -target_include_directories(GStreamer::GStreamer - INTERFACE - ${GSTREAMER_PREFIX}/include - ${GSTREAMER_PREFIX}/include/glib-2.0 - # ${GSTREAMER_PREFIX}/include/graphene-1.0 - ${GSTREAMER_PREFIX}/include/gstreamer-1.0 - ${GSTREAMER_LIB_PATH}/glib-2.0/include - # ${GSTREAMER_LIB_PATH}/graphene-1.0/include - ${GSTREAMER_LIB_PATH}/gstreamer-1.0/include - ${GSTREAMER_PLUGIN_PATH}/include -) - -target_link_directories(GStreamer::GStreamer INTERFACE ${GSTREAMER_LIB_PATH} ${GSTREAMER_PLUGIN_PATH}) - -if(MACOS AND EXISTS ${GSTREAMER_FRAMEWORK_PATH}) - target_link_libraries(GStreamer::GStreamer INTERFACE "-F /Library/Frameworks -framework GStreamer") +if(EXISTS ${GSTREAMER_FRAMEWORK_PATH}) + if(MACOS) + target_link_libraries(GStreamer::GStreamer INTERFACE "-F /Library/Frameworks -framework GStreamer") + elseif(IOS) + target_link_libraries(GStreamer::GStreamer INTERFACE "-F ~/Library/Developer/GStreamer/iPhone.sdk -framework GStreamer -framework AVFoundation -framework CoreMedia -framework CoreVideo -framework VideoToolbox -liconv -lresolv") + endif() + target_include_directories(GStreamer::GStreamer INTERFACE "${GSTREAMER_INCLUDE_PATH}/Headers") + return() endif() +target_link_directories(GStreamer::GStreamer INTERFACE ${GSTREAMER_LIB_PATH}) + ################################################################################ # TODO: https://gstreamer.freedesktop.org/documentation/qt6d3d11/index.html#qml6d3d11sink-page add_library(GStreamer::Plugins INTERFACE IMPORTED) +target_link_directories(GStreamer::Plugins INTERFACE ${GSTREAMER_PLUGIN_PATH}) set(GST_PLUGINS + gstapp gstcoreelements gstisomp4 gstlibav @@ -361,11 +272,10 @@ set(GST_PLUGINS gstsdpelem gsttcp gstudp - gstvideoparsersbad - gstx264 gstva - gstapp gstvaapi + gstvideoparsersbad + gstx264 # gstqml6 ) if(ANDROID) @@ -396,9 +306,7 @@ foreach(plugin IN LISTS GST_PLUGINS) endif() endforeach() -if(NOT MACOS) - target_link_libraries(GStreamer::GStreamer INTERFACE GStreamer::Plugins) -endif() +target_link_libraries(GStreamer::GStreamer INTERFACE GStreamer::Plugins) ################################################################################ diff --git a/src/VideoManager/VideoReceiver/GStreamer/CMakeLists.txt b/src/VideoManager/VideoReceiver/GStreamer/CMakeLists.txt index bf6ffcf253e..bb0f43a83ed 100644 --- a/src/VideoManager/VideoReceiver/GStreamer/CMakeLists.txt +++ b/src/VideoManager/VideoReceiver/GStreamer/CMakeLists.txt @@ -39,12 +39,12 @@ endif() target_link_libraries(GStreamerReceiver PRIVATE - Utilities - PUBLIC - Qt6::Core gstqml6gl Settings + Utilities VideoReceiver + PUBLIC + Qt6::Core ) target_compile_definitions(GStreamerReceiver PUBLIC QGC_GST_STREAMING) diff --git a/src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc b/src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc index 61f2961f648..222e4616c3d 100644 --- a/src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc +++ b/src/VideoManager/VideoReceiver/GStreamer/GStreamer.cc @@ -41,9 +41,6 @@ GST_PLUGIN_STATIC_DECLARE(mpegtsdemux); GST_PLUGIN_STATIC_DECLARE(opengl); GST_PLUGIN_STATIC_DECLARE(tcp); GST_PLUGIN_STATIC_DECLARE(app); -// #ifndef Q_OS_ANDROID -// GST_PLUGIN_STATIC_DECLARE(va); -// #endif #ifdef Q_OS_ANDROID GST_PLUGIN_STATIC_DECLARE(androidmedia); #elif defined(Q_OS_IOS) @@ -149,9 +146,6 @@ static void _registerPlugins() GST_PLUGIN_STATIC_REGISTER(opengl); GST_PLUGIN_STATIC_REGISTER(tcp); GST_PLUGIN_STATIC_REGISTER(app); -// #ifndef Q_OS_ANDROID -// GST_PLUGIN_STATIC_REGISTER(va); -// #endif #ifdef Q_OS_ANDROID GST_PLUGIN_STATIC_REGISTER(androidmedia); #elif defined(Q_OS_IOS) diff --git a/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/CMakeLists.txt b/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/CMakeLists.txt index 426ad68f3ea..8ef893697fd 100644 --- a/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/CMakeLists.txt +++ b/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/CMakeLists.txt @@ -8,26 +8,19 @@ if(MACOS) find_library(GSTREAMER_FRAMEWORK GStreamer) set(GST_PLUGINS_VERSION 1.24.12) set(GSTREAMER_FRAMEWORK_PATH "/Library/Frameworks/GStreamer.framework") - target_link_libraries(gstqml6gl - PUBLIC - "$" - ) - target_include_directories(gstqml6gl - PUBLIC - /Library/Frameworks/GStreamer.framework/Headers - ) + target_link_libraries(gstqml6gl PUBLIC "$") + target_include_directories(gstqml6gl PUBLIC "${GSTREAMER_FRAMEWORK_PATH}/Headers") else() - set(GST_COMPONENTS Allocators App Audio Codecparsers Controller Fft GlEGL GlPrototypes GlWayland GlX11 Mpegts Net Pbutils Photography Play Riff Rtp Rtsp Sdp Tag Va) + set(GST_COMPONENTS GlEgl GlPrototypes GlWayland GlX11) find_package(GStreamer REQUIRED COMPONENTS OPTIONAL_COMPONENTS ${GST_COMPONENTS}) target_link_libraries(gstqml6gl PUBLIC GStreamer::GStreamer) endif() target_link_libraries(gstqml6gl PRIVATE - Qt6::GuiPrivate - PUBLIC Qt6::Core Qt6::Gui + Qt6::GuiPrivate Qt6::Qml Qt6::Quick ) @@ -41,14 +34,12 @@ endforeach() ################################################################################ if(LINUX) - # if(NOT QGC_GST_STATIC_BUILD) - install(DIRECTORY ${GSTREAMER_LIB_PATH}/gstreamer1.0 DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(CODE "execute_process(COMMAND chmod +x \"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner\")") - install(CODE "execute_process(COMMAND chmod +x \"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/gstreamer1.0/gstreamer-1.0/gst-ptp-helper\")") - install(DIRECTORY ${GSTREAMER_LIB_PATH}/gio DESTINATION ${CMAKE_INSTALL_LIBDIR}) - get_target_property(LINKED_PLUGINS GStreamer::Plugins INTERFACE_LINK_LIBRARIES) - install(FILES ${LINKED_PLUGINS} DESTINATION ${CMAKE_INSTALL_LIBDIR}/gstreamer-1.0) - # endif() + install(DIRECTORY ${GSTREAMER_LIB_PATH}/gstreamer1.0 DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(CODE "execute_process(COMMAND chmod +x \"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner\")") + install(CODE "execute_process(COMMAND chmod +x \"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/gstreamer1.0/gstreamer-1.0/gst-ptp-helper\")") + install(DIRECTORY ${GSTREAMER_LIB_PATH}/gio DESTINATION ${CMAKE_INSTALL_LIBDIR}) + get_target_property(LINKED_PLUGINS GStreamer::Plugins INTERFACE_LINK_LIBRARIES) + install(FILES ${LINKED_PLUGINS} DESTINATION ${CMAKE_INSTALL_LIBDIR}/gstreamer-1.0) elseif(WIN32) cmake_path(CONVERT "${GSTREAMER_PREFIX}/bin/*.dll" TO_CMAKE_PATH_LIST GST_WIN_BINS_PATH) file(GLOB GST_WIN_BINS ${GST_WIN_BINS_PATH}) @@ -82,9 +73,7 @@ elseif(MACOS) PATTERN "*/pkgconfig" EXCLUDE PATTERN "*/share" EXCLUDE ) - target_compile_definitions(gstqml6gl PUBLIC QGC_GST_MACOS_FRAMEWORK) -elseif(ANDROID) - + target_compile_definitions(gstqml6gl INTERFACE QGC_GST_MACOS_FRAMEWORK) endif() ################################################################################ @@ -124,6 +113,7 @@ if(GStreamer_VERSION VERSION_GREATER_EQUAL 1.22) include(CPM) CPMAddPackage( NAME gstreamer_good_plugins + VERSION ${GST_PLUGINS_VERSION} # URL https://gitlab.freedesktop.org/gstreamer/gstreamer/-/archive/${GST_PLUGINS_VERSION}/gstreamer-${GST_PLUGINS_VERSION}.zip?path=subprojects/gst-plugins-good/ext/qt6 URL https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${GST_PLUGINS_VERSION}.tar.xz ) @@ -171,13 +161,8 @@ if(ANDROID) elseif(WIN32) target_compile_definitions(gstqml6gl PRIVATE HAVE_QT_WIN32) elseif(MACOS) - # appleframeworks - # Foundation, QuartzCore, CoreFoundation - # Cocoa target_compile_definitions(gstqml6gl PRIVATE HAVE_QT_MAC) elseif(IOS) - # appleframeworks - # Foundation, CoreFoundation, CoreGraphics, QuartzCore, UIkit target_compile_definitions(gstqml6gl PRIVATE HAVE_QT_IOS) endif()