mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-07-27 23:56:12 -04:00
plugins: Update Linux slice of cross-platform plugins for CMake 3.0
Also silences acknowledged compile warnings introduced by the updated compiler settings in the CMake update.
This commit is contained in:
@@ -54,7 +54,9 @@ target_sources(
|
||||
audio-repack.hpp
|
||||
main.cpp)
|
||||
|
||||
target_compile_options(aja-support PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-deprecated-declarations>)
|
||||
target_compile_options(
|
||||
aja-support PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang,GNU>:-Wno-deprecated-declarations>
|
||||
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:-Wno-unused-variable>)
|
||||
|
||||
target_link_libraries(
|
||||
aja
|
||||
|
||||
@@ -5,6 +5,10 @@ legacy_check()
|
||||
option(ENABLE_FFMPEG_LOGGING "Enables obs-ffmpeg logging" OFF)
|
||||
option(ENABLE_NEW_MPEGTS_OUTPUT "Use native SRT/RIST mpegts output" ON)
|
||||
|
||||
if(OS_LINUX)
|
||||
option(ENABLE_NATIVE_NVENC "Use native NVENC implementation" ON)
|
||||
endif()
|
||||
|
||||
include(cmake/dependencies.cmake)
|
||||
|
||||
add_library(obs-ffmpeg MODULE)
|
||||
@@ -23,9 +27,6 @@ target_sources(
|
||||
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:obs-ffmpeg-vaapi.c>
|
||||
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:vaapi-utils.c>
|
||||
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:vaapi-utils.h>
|
||||
$<$<PLATFORM_ID:Windows>:obs-nvenc-helpers.c>
|
||||
$<$<PLATFORM_ID:Windows>:obs-nvenc.c>
|
||||
$<$<PLATFORM_ID:Windows>:obs-nvenc.h>
|
||||
$<$<PLATFORM_ID:Windows>:texture-amf-opts.hpp>
|
||||
$<$<PLATFORM_ID:Windows>:texture-amf.cpp>
|
||||
obs-ffmpeg-audio-encoders.c
|
||||
@@ -58,10 +59,9 @@ target_link_libraries(
|
||||
FFmpeg::avutil
|
||||
FFmpeg::swscale
|
||||
FFmpeg::swresample
|
||||
$<$<PLATFORM_ID:Windows>:OBS::obs-nvenc-version>
|
||||
$<TARGET_NAME_IF_EXISTS:OBS::obs-nvenc-native>
|
||||
$<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>
|
||||
$<$<PLATFORM_ID:Windows>:AMF::AMF>
|
||||
$<$<PLATFORM_ID:Windows>:FFnvcodec::FFnvcodec>
|
||||
$<$<PLATFORM_ID:Windows>:ws2_32>
|
||||
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Libva::va>
|
||||
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Libva::drm>
|
||||
|
||||
@@ -26,15 +26,7 @@ endif()
|
||||
|
||||
if(OS_WINDOWS)
|
||||
find_package(AMF 1.4.29 REQUIRED)
|
||||
find_package(FFnvcodec 12.0.0.0...<12.2.0.0 REQUIRED)
|
||||
|
||||
add_library(obs-nvenc-version INTERFACE)
|
||||
add_library(OBS::obs-nvenc-version ALIAS obs-nvenc-version)
|
||||
target_sources(obs-nvenc-version INTERFACE obs-nvenc-ver.h)
|
||||
target_include_directories(obs-nvenc-version INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
add_subdirectory(obs-amf-test)
|
||||
add_subdirectory(obs-nvenc-test)
|
||||
elseif(
|
||||
OS_LINUX
|
||||
OR OS_FREEBSD
|
||||
@@ -43,6 +35,32 @@ elseif(
|
||||
find_package(Libpci REQUIRED)
|
||||
endif()
|
||||
|
||||
if(OS_WINDOWS OR (OS_LINUX AND ENABLE_NATIVE_NVENC))
|
||||
add_library(obs-nvenc-version INTERFACE)
|
||||
add_library(OBS::obs-nvenc-version ALIAS obs-nvenc-version)
|
||||
target_sources(obs-nvenc-version INTERFACE obs-nvenc-ver.h)
|
||||
target_include_directories(obs-nvenc-version INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
find_package(FFnvcodec 12.0.0.0...<12.2.0.0 REQUIRED)
|
||||
|
||||
if(OS_LINUX AND NOT TARGET OBS::glad)
|
||||
add_subdirectory("${CMAKE_SOURCE_DIR}/deps/glad" "${CMAKE_BINARY_DIR}/deps/glad")
|
||||
endif()
|
||||
|
||||
add_library(obs-nvenc-native INTERFACE)
|
||||
add_library(OBS::obs-nvenc-native ALIAS obs-nvenc-native)
|
||||
target_sources(obs-nvenc-native INTERFACE obs-nvenc-helpers.c obs-nvenc.c obs-nvenc.h)
|
||||
target_compile_definitions(obs-nvenc-native INTERFACE $<$<PLATFORM_ID:Linux>:NVCODEC_AVAILABLE>)
|
||||
target_include_directories(obs-nvenc-native INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
target_link_libraries(obs-nvenc-native INTERFACE FFnvcodec::FFnvcodec OBS::obs-nvenc-version
|
||||
$<$<PLATFORM_ID:Linux>:OBS::glad>)
|
||||
|
||||
if(OS_WINDOWS)
|
||||
add_subdirectory(obs-nvenc-test)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ENABLE_NEW_MPEGTS_OUTPUT)
|
||||
find_package(Librist QUIET)
|
||||
find_package(Libsrt QUIET)
|
||||
|
||||
@@ -34,9 +34,10 @@ target_link_libraries(obs-filters PRIVATE OBS::libobs $<$<PLATFORM_ID:Windows>:O
|
||||
|
||||
include(cmake/speexdsp.cmake)
|
||||
include(cmake/rnnoise.cmake)
|
||||
include(cmake/nvidia.cmake)
|
||||
|
||||
if(OS_WINDOWS)
|
||||
include(cmake/nvidia.cmake)
|
||||
|
||||
configure_file(cmake/windows/obs-module.rc.in obs-filters.rc)
|
||||
target_sources(obs-filters PRIVATE obs-filters.rc)
|
||||
endif()
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
if(OS_WINDOWS)
|
||||
option(ENABLE_NVAFX "Enable building with NVIDIA Audio Effects SDK (requires redistributable to be installed)" ON)
|
||||
option(ENABLE_NVVFX "Enable building with NVIDIA Video Effects SDK (requires redistributable to be installed)" ON)
|
||||
endif()
|
||||
option(ENABLE_NVAFX "Enable building with NVIDIA Audio Effects SDK (requires redistributable to be installed)" ON)
|
||||
option(ENABLE_NVVFX "Enable building with NVIDIA Video Effects SDK (requires redistributable to be installed)" ON)
|
||||
|
||||
if(ENABLE_NVAFX)
|
||||
target_enable_feature(obs-filters "NVIDIA Audio FX support" LIBNVAFX_ENABLED HAS_NOISEREDUCTION)
|
||||
|
||||
@@ -1,47 +1,53 @@
|
||||
option(ENABLE_RNNOISE "Enable building with RNNoise noise supression filter" ON)
|
||||
|
||||
if(ENABLE_RNNOISE)
|
||||
if(NOT OS_WINDOWS AND NOT OS_MACOS)
|
||||
add_library(obs-rnnoise OBJECT)
|
||||
|
||||
target_sources(
|
||||
obs-rnnoise
|
||||
PRIVATE # cmake-format: sortable
|
||||
rnnoise/src/_kiss_fft_guts.h
|
||||
rnnoise/src/arch.h
|
||||
rnnoise/src/celt_lpc.c
|
||||
rnnoise/src/celt_lpc.h
|
||||
rnnoise/src/common.h
|
||||
rnnoise/src/denoise.c
|
||||
rnnoise/src/kiss_fft.c
|
||||
rnnoise/src/kiss_fft.h
|
||||
rnnoise/src/opus_types.h
|
||||
rnnoise/src/pitch.c
|
||||
rnnoise/src/pitch.h
|
||||
rnnoise/src/rnn.c
|
||||
rnnoise/src/rnn.h
|
||||
rnnoise/src/rnn_data.c
|
||||
rnnoise/src/rnn_data.h
|
||||
rnnoise/src/rnn_reader.c
|
||||
rnnoise/src/tansig_table.h
|
||||
PUBLIC rnnoise/include/rnnoise.h)
|
||||
|
||||
add_library(Librnnoise::Librnnoise ALIAS obs-rnnoise)
|
||||
|
||||
target_include_directories(obs-rnnoise PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/rnnoise/include")
|
||||
|
||||
target_compile_definitions(obs-rnnoise PUBLIC COMPILE_OPUS)
|
||||
|
||||
target_compile_options(obs-rnnoise PRIVATE -Wno-newline-eof -Wno-error=null-dereference)
|
||||
|
||||
set_target_properties(obs-rnnoise PROPERTIES FOLDER plugins/obs-filters/rnnoise POSITION_INDEPENDENT_CODE TRUE)
|
||||
else()
|
||||
if(OS_WINDOWS OR OS_MACOS)
|
||||
find_package(Librnnoise REQUIRED)
|
||||
else()
|
||||
find_package(Librnnoise)
|
||||
|
||||
target_sources(obs-filters PRIVATE noise-suppress-filter.c)
|
||||
if(NOT TARGET Librnnoise::Librnnoise)
|
||||
message(WARNING "No RNNoise library found. Using internal RNNoise version instead.")
|
||||
add_library(obs-rnnoise OBJECT)
|
||||
|
||||
target_sources(
|
||||
obs-rnnoise
|
||||
PRIVATE # cmake-format: sortable
|
||||
rnnoise/src/_kiss_fft_guts.h
|
||||
rnnoise/src/arch.h
|
||||
rnnoise/src/celt_lpc.c
|
||||
rnnoise/src/celt_lpc.h
|
||||
rnnoise/src/common.h
|
||||
rnnoise/src/denoise.c
|
||||
rnnoise/src/kiss_fft.c
|
||||
rnnoise/src/kiss_fft.h
|
||||
rnnoise/src/opus_types.h
|
||||
rnnoise/src/pitch.c
|
||||
rnnoise/src/pitch.h
|
||||
rnnoise/src/rnn.c
|
||||
rnnoise/src/rnn.h
|
||||
rnnoise/src/rnn_data.c
|
||||
rnnoise/src/rnn_data.h
|
||||
rnnoise/src/rnn_reader.c
|
||||
rnnoise/src/tansig_table.h
|
||||
PUBLIC rnnoise/include/rnnoise.h)
|
||||
|
||||
add_library(Librnnoise::Librnnoise ALIAS obs-rnnoise)
|
||||
|
||||
target_include_directories(obs-rnnoise PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/rnnoise/include")
|
||||
|
||||
target_compile_definitions(obs-rnnoise PUBLIC COMPILE_OPUS)
|
||||
|
||||
target_compile_options(obs-rnnoise PRIVATE -Wno-newline-eof -Wno-error=null-dereference)
|
||||
|
||||
set_target_properties(obs-rnnoise PROPERTIES FOLDER plugins/obs-filters/rnnoise POSITION_INDEPENDENT_CODE TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_sources(obs-filters PRIVATE noise-suppress-filter.c)
|
||||
|
||||
target_link_libraries(obs-filters PRIVATE Librnnoise::Librnnoise)
|
||||
|
||||
target_enable_feature(obs-filters "RNNoise noise suppression" LIBRNNOISE_ENABLED HAS_NOISEREDUCTION)
|
||||
else()
|
||||
target_disable_feature(obs-filters "RNNoise noise suppression")
|
||||
|
||||
@@ -55,11 +55,11 @@ target_include_directories(
|
||||
"$<$<NOT:$<PLATFORM_ID:Windows>>:${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/libftl/posix>")
|
||||
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
|
||||
target_compile_options(ftl-sdk PRIVATE -Wno-error=enum-conversion)
|
||||
target_compile_options(ftl-sdk PRIVATE -Wno-error=enum-conversion -Wno-error=maybe-uninitialized)
|
||||
endif()
|
||||
|
||||
target_sources(obs-outputs PRIVATE ftl-stream.c)
|
||||
target_link_libraries(obs-outputs PRIVATE ftl-sdk)
|
||||
target_enable_feature(obs-outputs "FTL protocol support")
|
||||
|
||||
set_target_properties(ftl-sdk PROPERTIES FOLDER plugins/obs-outputs)
|
||||
set_target_properties(ftl-sdk PROPERTIES FOLDER plugins/obs-outputs POSITION_INDEPENDENT_CODE TRUE)
|
||||
|
||||
@@ -3,24 +3,22 @@ cmake_minimum_required(VERSION 3.22...3.25)
|
||||
legacy_check()
|
||||
|
||||
macro(check_vlc_path)
|
||||
if(OS_WINDOWS OR OS_MACOS)
|
||||
if(NOT EXISTS "${VLC_PATH}/include/vlc/libvlc.h")
|
||||
message(FATAL_ERROR "Unable to find libvlc.h. Check if VLC_PATH set correctly.")
|
||||
endif()
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(PC_Libvlc QUIET libvlc)
|
||||
endif()
|
||||
|
||||
target_include_directories(vlc-video PRIVATE "${VLC_PATH}/include/vlc")
|
||||
elseif(
|
||||
OS_LINUX
|
||||
OR OS_FREEBSD
|
||||
OR OS_OPENBSD)
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(PC_Libvlc QUIET libvlc)
|
||||
endif()
|
||||
find_path(
|
||||
LibVLC_INCLUDE_DIR
|
||||
NAMES vlc/libvlc.h
|
||||
HINTS ${PC_Libvlc_INCLUDEDIR} ${VLC_PATH}/include
|
||||
PATHS /usr/include /usr/local/include
|
||||
DOC "LibVLC include directory")
|
||||
|
||||
if(PC_Libvlc_INCLUDEDIR)
|
||||
target_include_directories(vlc-video PRIVATE "${PC_Libvlc_INCLUDEDIR}/vlc")
|
||||
endif()
|
||||
if(LibVLC_INCLUDE_DIR)
|
||||
target_include_directories(vlc-video PRIVATE "${LibVLC_INCLUDE_DIR}")
|
||||
else()
|
||||
message(FATAL_ERROR "Required system header <vlc/libvlc.h> not found.")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
#include <obs-module.h>
|
||||
#include <libvlc.h>
|
||||
#include <vlc/libvlc.h>
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <basetsd.h>
|
||||
typedef SSIZE_T ssize_t;
|
||||
#endif
|
||||
|
||||
#include <libvlc_media.h>
|
||||
#include <libvlc_events.h>
|
||||
#include <libvlc_media_list.h>
|
||||
#include <libvlc_media_player.h>
|
||||
#include <libvlc_media_list_player.h>
|
||||
#include <vlc/libvlc_media.h>
|
||||
#include <vlc/libvlc_events.h>
|
||||
#include <vlc/libvlc_media_list.h>
|
||||
#include <vlc/libvlc_media_player.h>
|
||||
#include <vlc/libvlc_media_list_player.h>
|
||||
|
||||
extern libvlc_instance_t *libvlc;
|
||||
extern uint64_t time_start;
|
||||
|
||||
Reference in New Issue
Block a user