2023-08-03 23:23:07 +00:00
|
|
|
cmake_minimum_required(VERSION 3.22...3.25)
|
2023-03-26 01:55:25 +00:00
|
|
|
|
|
|
|
legacy_check()
|
2014-01-20 15:58:58 +00:00
|
|
|
|
2019-07-09 15:44:04 +00:00
|
|
|
option(ENABLE_FFMPEG_LOGGING "Enables obs-ffmpeg logging" OFF)
|
2022-03-13 10:06:11 +00:00
|
|
|
option(ENABLE_NEW_MPEGTS_OUTPUT "Use native SRT/RIST mpegts output" ON)
|
2019-07-09 15:44:04 +00:00
|
|
|
|
2024-04-13 18:01:19 +00:00
|
|
|
if(OS_LINUX)
|
|
|
|
option(ENABLE_NATIVE_NVENC "Use native NVENC implementation" ON)
|
|
|
|
endif()
|
|
|
|
|
2023-09-08 22:11:41 +00:00
|
|
|
include(cmake/dependencies.cmake)
|
2023-03-26 01:55:25 +00:00
|
|
|
|
2022-03-16 22:10:42 +00:00
|
|
|
add_library(obs-ffmpeg MODULE)
|
|
|
|
add_library(OBS::ffmpeg ALIAS obs-ffmpeg)
|
2022-02-27 14:30:40 +00:00
|
|
|
|
2022-03-16 22:10:42 +00:00
|
|
|
add_subdirectory(ffmpeg-mux)
|
2019-07-09 15:44:04 +00:00
|
|
|
|
2022-03-16 22:10:42 +00:00
|
|
|
target_sources(
|
|
|
|
obs-ffmpeg
|
2023-03-28 17:50:59 +00:00
|
|
|
PRIVATE # cmake-format: sortable
|
|
|
|
$<$<BOOL:${ENABLE_FFMPEG_LOGGING}>:obs-ffmpeg-logging.c>
|
2023-09-08 22:11:41 +00:00
|
|
|
$<$<BOOL:${ENABLE_NEW_MPEGTS_OUTPUT}>:obs-ffmpeg-mpegts.c>
|
|
|
|
$<$<BOOL:${ENABLE_NEW_MPEGTS_OUTPUT}>:obs-ffmpeg-rist.h>
|
|
|
|
$<$<BOOL:${ENABLE_NEW_MPEGTS_OUTPUT}>:obs-ffmpeg-srt.h>
|
|
|
|
$<$<BOOL:${ENABLE_NEW_MPEGTS_OUTPUT}>:obs-ffmpeg-url.h>
|
|
|
|
$<$<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>:texture-amf-opts.hpp>
|
|
|
|
$<$<PLATFORM_ID:Windows>:texture-amf.cpp>
|
2022-03-16 22:10:42 +00:00
|
|
|
obs-ffmpeg-audio-encoders.c
|
|
|
|
obs-ffmpeg-av1.c
|
2023-03-28 17:50:59 +00:00
|
|
|
obs-ffmpeg-compat.h
|
|
|
|
obs-ffmpeg-formats.h
|
|
|
|
obs-ffmpeg-hls-mux.c
|
2022-03-16 22:10:42 +00:00
|
|
|
obs-ffmpeg-mux.c
|
|
|
|
obs-ffmpeg-mux.h
|
2023-03-28 17:50:59 +00:00
|
|
|
obs-ffmpeg-nvenc.c
|
|
|
|
obs-ffmpeg-output.c
|
2023-11-30 15:36:36 +00:00
|
|
|
obs-ffmpeg-output.h
|
2022-03-16 22:10:42 +00:00
|
|
|
obs-ffmpeg-source.c
|
2023-03-28 17:50:59 +00:00
|
|
|
obs-ffmpeg-video-encoders.c
|
|
|
|
obs-ffmpeg.c)
|
|
|
|
|
2023-08-28 13:00:32 +00:00
|
|
|
target_compile_options(obs-ffmpeg PRIVATE $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-shorten-64-to-32>)
|
2023-09-08 22:11:41 +00:00
|
|
|
target_compile_definitions(obs-ffmpeg PRIVATE $<$<BOOL:${ENABLE_FFMPEG_LOGGING}>:ENABLE_FFMPEG_LOGGING>
|
|
|
|
$<$<BOOL:${ENABLE_NEW_MPEGTS_OUTPUT}>:NEW_MPEGTS_OUTPUT>)
|
2015-03-04 18:45:50 +00:00
|
|
|
|
2022-03-16 22:10:42 +00:00
|
|
|
target_link_libraries(
|
|
|
|
obs-ffmpeg
|
|
|
|
PRIVATE OBS::libobs
|
|
|
|
OBS::media-playback
|
|
|
|
OBS::opts-parser
|
|
|
|
FFmpeg::avcodec
|
|
|
|
FFmpeg::avfilter
|
|
|
|
FFmpeg::avformat
|
|
|
|
FFmpeg::avdevice
|
|
|
|
FFmpeg::avutil
|
|
|
|
FFmpeg::swscale
|
2023-09-08 22:11:41 +00:00
|
|
|
FFmpeg::swresample
|
2024-04-13 18:01:19 +00:00
|
|
|
$<TARGET_NAME_IF_EXISTS:OBS::obs-nvenc-native>
|
2023-09-08 22:11:41 +00:00
|
|
|
$<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>
|
|
|
|
$<$<PLATFORM_ID:Windows>:AMF::AMF>
|
|
|
|
$<$<PLATFORM_ID:Windows>:ws2_32>
|
|
|
|
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Libva::va>
|
|
|
|
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Libva::drm>
|
|
|
|
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Libpci::pci>
|
2023-04-30 13:26:50 +00:00
|
|
|
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Libdrm::Libdrm>
|
2023-09-08 22:11:41 +00:00
|
|
|
$<$<BOOL:${ENABLE_NEW_MPEGTS_OUTPUT}>:Librist::Librist>
|
|
|
|
$<$<BOOL:${ENABLE_NEW_MPEGTS_OUTPUT}>:Libsrt::Libsrt>)
|
2019-07-09 15:44:04 +00:00
|
|
|
|
2022-03-16 22:10:42 +00:00
|
|
|
if(OS_WINDOWS)
|
2023-03-26 01:55:25 +00:00
|
|
|
configure_file(cmake/windows/obs-module.rc.in obs-ffmpeg.rc)
|
2023-09-08 22:11:41 +00:00
|
|
|
target_sources(obs-ffmpeg PRIVATE obs-ffmpeg.rc)
|
2022-03-16 22:10:42 +00:00
|
|
|
endif()
|
|
|
|
|
2023-03-28 17:50:59 +00:00
|
|
|
# cmake-format: off
|
2023-03-26 01:55:25 +00:00
|
|
|
set_target_properties_obs(obs-ffmpeg PROPERTIES FOLDER plugins/obs-ffmpeg PREFIX "")
|
2023-03-28 17:50:59 +00:00
|
|
|
# cmake-format: on
|