CMakeLists.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. option(ENABLE_QSV11 "Build Intel QSV11 Hardware Encoder." TRUE)
  2. if(NOT ENABLE_QSV11)
  3. obs_status(DISABLED "obs-qsv11")
  4. return()
  5. endif()
  6. project(obs-qsv11)
  7. add_library(obs-qsv11 MODULE)
  8. add_library(OBS::qsv11 ALIAS obs-qsv11)
  9. add_library(libmfx INTERFACE)
  10. add_library(OBS::libmfx ALIAS libmfx)
  11. target_sources(
  12. libmfx
  13. INTERFACE libmfx/src/main.cpp
  14. libmfx/src/mfx_critical_section.cpp
  15. libmfx/src/mfx_dispatcher.cpp
  16. libmfx/src/mfx_dispatcher_log.cpp
  17. libmfx/src/mfx_driver_store_loader.cpp
  18. libmfx/src/mfx_dxva2_device.cpp
  19. libmfx/src/mfx_function_table.cpp
  20. libmfx/src/mfx_library_iterator.cpp
  21. libmfx/src/mfx_load_dll.cpp
  22. libmfx/src/mfx_load_plugin.cpp
  23. libmfx/src/mfx_plugin_hive.cpp
  24. libmfx/src/mfx_win_reg_key.cpp
  25. libmfx/include/msdk/include/mfxadapter.h
  26. libmfx/include/msdk/include/mfxastructures.h
  27. libmfx/include/msdk/include/mfxaudio.h
  28. libmfx/include/msdk/include/mfxaudio++.h
  29. libmfx/include/msdk/include/mfxcommon.h
  30. libmfx/include/msdk/include/mfxdefs.h
  31. libmfx/include/msdk/include/mfxjpeg.h
  32. libmfx/include/msdk/include/mfxmvc.h
  33. libmfx/include/msdk/include/mfxplugin.h
  34. libmfx/include/msdk/include/mfxplugin++.h
  35. libmfx/include/msdk/include/mfxsession.h
  36. libmfx/include/msdk/include/mfxstructures.h
  37. libmfx/include/msdk/include/mfxvideo.h
  38. libmfx/include/msdk/include/mfxvideo++.h
  39. libmfx/include/msdk/include/mfxvstructures.h
  40. libmfx/include/mfx_critical_section.h
  41. libmfx/include/mfx_dispatcher.h
  42. libmfx/include/mfx_dispatcher_defs.h
  43. libmfx/include/mfx_dispatcher_log.h
  44. libmfx/include/mfx_driver_store_loader.h
  45. libmfx/include/mfx_dxva2_device.h
  46. libmfx/include/mfx_exposed_functions_list.h
  47. libmfx/include/mfx_library_iterator.h
  48. libmfx/include/mfx_load_dll.h
  49. libmfx/include/mfx_load_plugin.h
  50. libmfx/include/mfx_plugin_hive.h
  51. libmfx/include/mfx_vector.h
  52. libmfx/include/mfx_win_reg_key.h
  53. libmfx/include/mfxaudio_exposed_functions_list.h)
  54. target_include_directories(
  55. libmfx INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/libmfx/include/msdk/include
  56. ${CMAKE_CURRENT_SOURCE_DIR}/libmfx/include)
  57. target_sources(
  58. obs-qsv11
  59. PRIVATE obs-qsv11.c
  60. obs-qsv11-plugin-main.c
  61. common_directx9.cpp
  62. common_directx9.h
  63. common_directx11.cpp
  64. common_directx11.h
  65. common_utils.cpp
  66. common_utils.h
  67. common_utils_windows.cpp
  68. device_directx9.cpp
  69. device_directx9.h
  70. QSV_Encoder.cpp
  71. QSV_Encoder.h
  72. QSV_Encoder_Internal.cpp
  73. QSV_Encoder_Internal.h
  74. bits/linux_defs.h
  75. bits/windows_defs.h)
  76. target_link_libraries(
  77. obs-qsv11
  78. PRIVATE OBS::libobs
  79. OBS::libmfx
  80. d3d9
  81. d3d11
  82. dxva2
  83. dxgi
  84. dxguid)
  85. target_compile_definitions(obs-qsv11 PRIVATE DX11_D3D)
  86. if(OS_WINDOWS)
  87. set(MODULE_DESCRIPTION "OBS QSV encoder")
  88. configure_file(${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in
  89. obs-qsv11.rc)
  90. target_sources(obs-qsv11 PRIVATE obs-qsv11.rc)
  91. target_compile_definitions(
  92. obs-qsv11 PRIVATE UNICODE _UNICODE _CRT_SECURE_NO_WARNINGS
  93. _CRT_NONSTDC_NO_WARNINGS)
  94. endif()
  95. set_target_properties(obs-qsv11 PROPERTIES FOLDER "plugins")
  96. file(GLOB _OBS_QSV11_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.c
  97. ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
  98. file(GLOB _OBS_QSV11_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
  99. ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp)
  100. source_group("obs-qsv11\\Source Files" FILES ${_OBS_QSV11_SOURCE_FILES})
  101. source_group("obs-qsv11\\Header Files" FILES ${_OBS_QSV11_HEADER_FILES})
  102. get_target_property(_LIBMFX_SOURCES OBS::libmfx INTERFACE_SOURCES)
  103. foreach(_LIBMFX_SOURCE ${_LIBMFX_SOURCES})
  104. get_filename_component(_EXT ${_LIBMFX_SOURCE} EXT)
  105. if(${_EXT} STREQUAL "hpp" OR ${_EXT} STREQUAL "h")
  106. source_group("libmfx\\Header Files" FILES ${_LIBMFX_SOURCE})
  107. elseif(${_EXT} STREQUAL "cpp" OR ${_EXT} STREQUAL "c")
  108. source_group("libmfx\\Source Files" FILES ${_LIBMFX_SOURCE})
  109. endif()
  110. endforeach()
  111. setup_plugin_target(obs-qsv11)