legacy.cmake 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. project(obs-filters)
  2. option(ENABLE_SPEEXDSP "Enable building with SpeexDSP-based noise suppression filter" ON)
  3. option(ENABLE_RNNOISE "Enable building with RNNoise noise supression filter" ON)
  4. if(OS_WINDOWS)
  5. option(ENABLE_NVAFX "Enable building with NVIDIA Audio Effects SDK (requires redistributable to be installed)" ON)
  6. option(ENABLE_NVVFX "Enable building with NVIDIA Video Effects SDK (requires redistributable to be installed)" ON)
  7. endif()
  8. add_library(obs-filters MODULE)
  9. add_library(OBS::filters ALIAS obs-filters)
  10. set(HAS_NOISEREDUCTION OFF)
  11. if(NOT ENABLE_SPEEXDSP)
  12. obs_status(DISABLED "SpeexDSP")
  13. else()
  14. find_package(Libspeexdsp REQUIRED)
  15. target_sources(obs-filters PRIVATE noise-suppress-filter.c)
  16. target_link_libraries(obs-filters PRIVATE LibspeexDSP::LibspeexDSP)
  17. target_compile_definitions(obs-filters PRIVATE LIBSPEEXDSP_ENABLED)
  18. if(OS_WINDOWS)
  19. target_link_options(obs-filters PRIVATE "LINKER:/LTCG" "LINKER:/IGNORE:4098" "LINKER:/IGNORE:4099")
  20. endif()
  21. endif()
  22. if(NOT ENABLE_RNNOISE)
  23. obs_status(DISABLED "RNNoise")
  24. else()
  25. find_package(Librnnoise QUIET)
  26. if(NOT TARGET Librnnoise::Librnnoise)
  27. obs_status(STATUS "obs-filters -> using bundled RNNoise library")
  28. add_library(obs-rnnoise INTERFACE)
  29. add_library(Librnnoise::Librnnoise ALIAS obs-rnnoise)
  30. set(_RNNOISE_SOURCES
  31. rnnoise/src/arch.h
  32. rnnoise/src/celt_lpc.c
  33. rnnoise/src/celt_lpc.h
  34. rnnoise/src/common.h
  35. rnnoise/src/denoise.c
  36. rnnoise/src/kiss_fft.c
  37. rnnoise/src/kiss_fft.h
  38. rnnoise/src/opus_types.h
  39. rnnoise/src/pitch.c
  40. rnnoise/src/pitch.h
  41. rnnoise/src/rnn_data.c
  42. rnnoise/src/rnn_data.h
  43. rnnoise/src/rnn_reader.c
  44. rnnoise/src/rnn.c
  45. rnnoise/src/rnn.h
  46. rnnoise/src/tansig_table.h
  47. rnnoise/src/_kiss_fft_guts.h
  48. rnnoise/include/rnnoise.h)
  49. target_sources(obs-rnnoise INTERFACE ${_RNNOISE_SOURCES})
  50. target_include_directories(obs-rnnoise INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/rnnoise/include")
  51. target_compile_definitions(obs-rnnoise INTERFACE COMPILE_OPUS)
  52. target_compile_options(obs-rnnoise INTERFACE "$<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-null-dereference>")
  53. if(OS_LINUX)
  54. set_property(SOURCE ${_RNNOISE_SOURCES} PROPERTY COMPILE_FLAGS -fvisibility=hidden)
  55. endif()
  56. source_group("rnnoise" FILES ${_RNNOISE_SOURCES})
  57. endif()
  58. target_sources(obs-filters PRIVATE noise-suppress-filter.c)
  59. target_link_libraries(obs-filters PRIVATE Librnnoise::Librnnoise)
  60. target_compile_definitions(obs-filters PRIVATE LIBRNNOISE_ENABLED)
  61. endif()
  62. if(NOT ENABLE_NVAFX)
  63. obs_status(DISABLED "NVIDIA Audio FX support")
  64. set(LIBNVAFX_FOUND OFF)
  65. else()
  66. obs_status(ENABLED "NVIDIA Audio FX support")
  67. target_compile_definitions(obs-filters PRIVATE LIBNVAFX_ENABLED)
  68. set(LIBNVAFX_FOUND ON)
  69. endif()
  70. if(NOT ENABLE_NVVFX)
  71. obs_status(DISABLED "NVIDIA Video FX support")
  72. set(LIBNVVFX_FOUND OFF)
  73. else()
  74. obs_status(ENABLED "NVIDIA Video FX support")
  75. set(LIBNVVFX_FOUND ON)
  76. target_compile_definitions(obs-filters PRIVATE LIBNVVFX_ENABLED)
  77. endif()
  78. if(TARGET Librnnoise::Librnnoise
  79. OR TARGET LibspeexDSP::LibspeexDSP
  80. OR LIBNVAFX_FOUND)
  81. target_compile_definitions(obs-filters PRIVATE HAS_NOISEREDUCTION)
  82. endif()
  83. target_sources(
  84. obs-filters
  85. PRIVATE obs-filters.c
  86. color-correction-filter.c
  87. async-delay-filter.c
  88. gpu-delay.c
  89. hdr-tonemap-filter.c
  90. crop-filter.c
  91. scale-filter.c
  92. scroll-filter.c
  93. chroma-key-filter.c
  94. color-key-filter.c
  95. color-grade-filter.c
  96. sharpness-filter.c
  97. eq-filter.c
  98. gain-filter.c
  99. noise-gate-filter.c
  100. mask-filter.c
  101. invert-audio-polarity.c
  102. compressor-filter.c
  103. limiter-filter.c
  104. expander-filter.c
  105. luma-key-filter.c)
  106. if(NOT OS_MACOS)
  107. target_sources(
  108. obs-filters
  109. PRIVATE data/blend_add_filter.effect
  110. data/blend_mul_filter.effect
  111. data/blend_sub_filter.effect
  112. data/chroma_key_filter.effect
  113. data/chroma_key_filter_v2.effect
  114. data/color.effect
  115. data/color_correction_filter.effect
  116. data/color_grade_filter.effect
  117. data/color_key_filter.effect
  118. data/color_key_filter_v2.effect
  119. data/crop_filter.effect
  120. data/hdr_tonemap_filter.effect
  121. data/luma_key_filter.effect
  122. data/luma_key_filter_v2.effect
  123. data/mask_alpha_filter.effect
  124. data/mask_color_filter.effect
  125. data/sharpness.effect
  126. data/rtx_greenscreen.effect)
  127. get_target_property(_SOURCES obs-filters SOURCES)
  128. set(_FILTERS ${_SOURCES})
  129. list(FILTER _FILTERS INCLUDE REGEX ".*\\.effect")
  130. source_group(
  131. TREE "${CMAKE_CURRENT_SOURCE_DIR}"
  132. PREFIX "Effect Files"
  133. FILES ${_FILTERS})
  134. endif()
  135. if(LIBNVVFX_FOUND)
  136. target_sources(obs-filters PRIVATE nvidia-greenscreen-filter.c)
  137. obs_status(STATUS "NVIDIA Video FX support enabled; requires redist to be installed by end-user")
  138. endif()
  139. target_include_directories(obs-filters PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/config>)
  140. target_link_libraries(obs-filters PRIVATE OBS::libobs)
  141. set_target_properties(obs-filters PROPERTIES FOLDER "plugins" PREFIX "")
  142. if(OS_WINDOWS)
  143. if(MSVC)
  144. target_link_libraries(obs-filters PRIVATE OBS::w32-pthreads)
  145. endif()
  146. set(MODULE_DESCRIPTION "OBS A/V Filters")
  147. configure_file(${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in obs-filters.rc)
  148. target_sources(obs-filters PRIVATE obs-filters.rc)
  149. endif()
  150. setup_plugin_target(obs-filters)