CMake: GStreamer Fixes

This commit is contained in:
Holden
2025-02-12 01:57:41 -05:00
committed by Holden Ramsey
parent e795048f1a
commit 3722312b05
11 changed files with 83 additions and 201 deletions
-1
View File
@@ -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 }}
-1
View File
@@ -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 }}
-1
View File
@@ -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 }}
+1 -1
View File
@@ -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
-1
View File
@@ -23,7 +23,6 @@ jobs:
ARTIFACT: QGroundControl.app
PACKAGE: QGroundControl
QT_VERSION: 6.8.2
GST_VERSION: 1.22.12
steps:
- name: Checkout repo
-1
View File
@@ -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
+1 -1
View File
@@ -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
+66 -158
View File
@@ -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)
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
gstva
gstvaapi
gstvideoparsersbad
gstx264
gstva
gstapp
gstvaapi
# 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)
################################################################################
@@ -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)
@@ -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)
@@ -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
"$<LINK_LIBRARY:FRAMEWORK,/Library/Frameworks/GStreamer.framework>"
)
target_include_directories(gstqml6gl
PUBLIC
/Library/Frameworks/GStreamer.framework/Headers
)
target_link_libraries(gstqml6gl PUBLIC "$<LINK_LIBRARY:FRAMEWORK,${GSTREAMER_FRAMEWORK_PATH}>")
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()