legacy.cmake 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. project(obs-ffmpeg)
  2. option(ENABLE_FFMPEG_LOGGING "Enables obs-ffmpeg logging" OFF)
  3. option(ENABLE_NEW_MPEGTS_OUTPUT "Use native SRT/RIST mpegts output" ON)
  4. find_package(
  5. FFmpeg REQUIRED
  6. COMPONENTS avcodec
  7. avfilter
  8. avdevice
  9. avutil
  10. swscale
  11. avformat
  12. swresample)
  13. add_library(obs-ffmpeg MODULE)
  14. add_library(OBS::ffmpeg ALIAS obs-ffmpeg)
  15. add_subdirectory(ffmpeg-mux)
  16. if(ENABLE_NEW_MPEGTS_OUTPUT)
  17. find_package(Librist QUIET)
  18. find_package(Libsrt QUIET)
  19. if(NOT TARGET Librist::Librist AND NOT TARGET Libsrt::Libsrt)
  20. obs_status(
  21. FATAL_ERROR
  22. "SRT and RIST libraries not found! Please install SRT and RIST libraries or set ENABLE_NEW_MPEGTS_OUTPUT=OFF.")
  23. elseif(NOT TARGET Libsrt::Libsrt)
  24. obs_status(FATAL_ERROR "SRT library not found! Please install SRT library or set ENABLE_NEW_MPEGTS_OUTPUT=OFF.")
  25. elseif(NOT TARGET Librist::Librist)
  26. obs_status(FATAL_ERROR "RIST library not found! Please install RIST library or set ENABLE_NEW_MPEGTS_OUTPUT=OFF.")
  27. endif()
  28. endif()
  29. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/obs-ffmpeg-config.h.in ${CMAKE_BINARY_DIR}/config/obs-ffmpeg-config.h)
  30. target_sources(
  31. obs-ffmpeg
  32. PRIVATE obs-ffmpeg.c
  33. obs-ffmpeg-video-encoders.c
  34. obs-ffmpeg-audio-encoders.c
  35. obs-ffmpeg-av1.c
  36. obs-ffmpeg-nvenc.c
  37. obs-ffmpeg-output.c
  38. obs-ffmpeg-mux.c
  39. obs-ffmpeg-mux.h
  40. obs-ffmpeg-hls-mux.c
  41. obs-ffmpeg-source.c
  42. obs-ffmpeg-compat.h
  43. obs-ffmpeg-formats.h
  44. ${CMAKE_BINARY_DIR}/config/obs-ffmpeg-config.h)
  45. target_include_directories(obs-ffmpeg PRIVATE ${CMAKE_BINARY_DIR}/config)
  46. target_link_libraries(
  47. obs-ffmpeg
  48. PRIVATE OBS::libobs
  49. OBS::media-playback
  50. OBS::opts-parser
  51. FFmpeg::avcodec
  52. FFmpeg::avfilter
  53. FFmpeg::avformat
  54. FFmpeg::avdevice
  55. FFmpeg::avutil
  56. FFmpeg::swscale
  57. FFmpeg::swresample)
  58. if(ENABLE_NEW_MPEGTS_OUTPUT)
  59. target_sources(obs-ffmpeg PRIVATE obs-ffmpeg-mpegts.c obs-ffmpeg-srt.h obs-ffmpeg-rist.h obs-ffmpeg-url.h)
  60. target_link_libraries(obs-ffmpeg PRIVATE Librist::Librist Libsrt::Libsrt)
  61. if(OS_WINDOWS)
  62. target_link_libraries(obs-ffmpeg PRIVATE ws2_32.lib)
  63. endif()
  64. target_compile_definitions(obs-ffmpeg PRIVATE NEW_MPEGTS_OUTPUT)
  65. endif()
  66. if(ENABLE_FFMPEG_LOGGING)
  67. target_sources(obs-ffmpeg PRIVATE obs-ffmpeg-logging.c)
  68. endif()
  69. set_target_properties(obs-ffmpeg PROPERTIES FOLDER "plugins/obs-ffmpeg" PREFIX "")
  70. if(OS_WINDOWS)
  71. find_package(AMF 1.4.29 REQUIRED)
  72. add_subdirectory(obs-amf-test)
  73. add_subdirectory(obs-nvenc-test)
  74. if(MSVC)
  75. target_link_libraries(obs-ffmpeg PRIVATE OBS::w32-pthreads)
  76. endif()
  77. target_link_libraries(obs-ffmpeg PRIVATE AMF::AMF)
  78. set(MODULE_DESCRIPTION "OBS FFmpeg module")
  79. configure_file(${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in obs-ffmpeg.rc)
  80. target_sources(
  81. obs-ffmpeg
  82. PRIVATE texture-amf.cpp
  83. texture-amf-opts.hpp
  84. jim-nvenc.c
  85. jim-nvenc.h
  86. jim-nvenc-helpers.c
  87. jim-nvenc-ver.h
  88. obs-ffmpeg.rc)
  89. elseif(OS_POSIX AND NOT OS_MACOS)
  90. find_package(Libva REQUIRED)
  91. find_package(Libpci REQUIRED)
  92. target_sources(obs-ffmpeg PRIVATE obs-ffmpeg-vaapi.c vaapi-utils.c vaapi-utils.h)
  93. target_link_libraries(obs-ffmpeg PRIVATE Libva::va Libva::drm LIBPCI::LIBPCI)
  94. endif()
  95. setup_plugin_target(obs-ffmpeg)