| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- project(obs-ffmpeg)
- option(ENABLE_FFMPEG_LOGGING "Enables obs-ffmpeg logging" OFF)
- option(ENABLE_NEW_MPEGTS_OUTPUT "Use native SRT/RIST mpegts output" ON)
- find_package(
- FFmpeg REQUIRED
- COMPONENTS avcodec
- avfilter
- avdevice
- avutil
- swscale
- avformat
- swresample)
- add_library(obs-ffmpeg MODULE)
- add_library(OBS::ffmpeg ALIAS obs-ffmpeg)
- add_subdirectory(ffmpeg-mux)
- if(ENABLE_NEW_MPEGTS_OUTPUT)
- find_package(Librist QUIET)
- find_package(Libsrt QUIET)
- if(NOT TARGET Librist::Librist AND NOT TARGET Libsrt::Libsrt)
- obs_status(
- FATAL_ERROR
- "SRT and RIST libraries not found! Please install SRT and RIST libraries or set ENABLE_NEW_MPEGTS_OUTPUT=OFF.")
- elseif(NOT TARGET Libsrt::Libsrt)
- obs_status(FATAL_ERROR "SRT library not found! Please install SRT library or set ENABLE_NEW_MPEGTS_OUTPUT=OFF.")
- elseif(NOT TARGET Librist::Librist)
- obs_status(FATAL_ERROR "RIST library not found! Please install RIST library or set ENABLE_NEW_MPEGTS_OUTPUT=OFF.")
- endif()
- endif()
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/obs-ffmpeg-config.h.in ${CMAKE_BINARY_DIR}/config/obs-ffmpeg-config.h)
- target_sources(
- obs-ffmpeg
- PRIVATE obs-ffmpeg.c
- obs-ffmpeg-video-encoders.c
- obs-ffmpeg-audio-encoders.c
- obs-ffmpeg-av1.c
- obs-ffmpeg-nvenc.c
- obs-ffmpeg-output.c
- obs-ffmpeg-mux.c
- obs-ffmpeg-mux.h
- obs-ffmpeg-hls-mux.c
- obs-ffmpeg-source.c
- obs-ffmpeg-compat.h
- obs-ffmpeg-formats.h
- ${CMAKE_BINARY_DIR}/config/obs-ffmpeg-config.h)
- target_include_directories(obs-ffmpeg PRIVATE ${CMAKE_BINARY_DIR}/config)
- 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
- FFmpeg::swresample)
- if(ENABLE_NEW_MPEGTS_OUTPUT)
- target_sources(obs-ffmpeg PRIVATE obs-ffmpeg-mpegts.c obs-ffmpeg-srt.h obs-ffmpeg-rist.h obs-ffmpeg-url.h)
- target_link_libraries(obs-ffmpeg PRIVATE Librist::Librist Libsrt::Libsrt)
- if(OS_WINDOWS)
- target_link_libraries(obs-ffmpeg PRIVATE ws2_32.lib)
- endif()
- target_compile_definitions(obs-ffmpeg PRIVATE NEW_MPEGTS_OUTPUT)
- endif()
- if(ENABLE_FFMPEG_LOGGING)
- target_sources(obs-ffmpeg PRIVATE obs-ffmpeg-logging.c)
- endif()
- set_target_properties(obs-ffmpeg PROPERTIES FOLDER "plugins/obs-ffmpeg" PREFIX "")
- if(OS_WINDOWS)
- find_package(AMF 1.4.29 REQUIRED)
- add_subdirectory(obs-amf-test)
- add_subdirectory(obs-nvenc-test)
- if(MSVC)
- target_link_libraries(obs-ffmpeg PRIVATE OBS::w32-pthreads)
- endif()
- target_link_libraries(obs-ffmpeg PRIVATE AMF::AMF)
- set(MODULE_DESCRIPTION "OBS FFmpeg module")
- configure_file(${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in obs-ffmpeg.rc)
- target_sources(
- obs-ffmpeg
- PRIVATE texture-amf.cpp
- texture-amf-opts.hpp
- jim-nvenc.c
- jim-nvenc.h
- jim-nvenc-helpers.c
- jim-nvenc-ver.h
- obs-ffmpeg.rc)
- elseif(OS_POSIX AND NOT OS_MACOS)
- find_package(Libva REQUIRED)
- find_package(Libpci REQUIRED)
- target_sources(obs-ffmpeg PRIVATE obs-ffmpeg-vaapi.c vaapi-utils.c vaapi-utils.h)
- target_link_libraries(obs-ffmpeg PRIVATE Libva::va Libva::drm LIBPCI::LIBPCI)
- endif()
- setup_plugin_target(obs-ffmpeg)
|