0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
obs-studio/plugins/obs-qsv11/CMakeLists.txt
Alexandre Biny b276b1633e obs-qsv11: Use d3d9 allocator on Win7
Use a d3d9 device and allocator to encode in QSV.

This fixes a random crash that could only happen on Windows 7. The QSV
Deviced returned a DEVICE_FAILURE after a random amount of time with the
old method.

This fix is totally based on Shinck's QSVHelper.exe patch for OBS
Classic (see
https://obsproject.com/forum/threads/0-633b-qsvhelper-exe-was-killed-encode-failed.19230/page-3#post-161984
for more information)

This is more like a proof of concept, but that fix is currently stable
and tested more than 50 hours, with a single session of +14 hours.

That commit doesn't respect all OBS Guidelines. It is currently
recommended to wait for a more "cleaner" implementation.
2016-12-23 07:49:12 -08:00

93 lines
2.5 KiB
CMake

project(obs-qsv11)
include_directories(libmfx/include/msdk/include)
include_directories(libmfx/include)
set(obs-qsv11_libmfx_SOURCES
libmfx/src/main.cpp
libmfx/src/mfx_critical_section.cpp
libmfx/src/mfx_dispatcher.cpp
libmfx/src/mfx_dispatcher_log.cpp
libmfx/src/mfx_dxva2_device.cpp
libmfx/src/mfx_function_table.cpp
libmfx/src/mfx_library_iterator.cpp
libmfx/src/mfx_load_dll.cpp
libmfx/src/mfx_load_plugin.cpp
libmfx/src/mfx_plugin_hive.cpp
libmfx/src/mfx_win_reg_key.cpp
)
set(obs-qsv11_libmfx_HEADERS
libmfx/include/msdk/include/mfxastructures.h
libmfx/include/msdk/include/mfxaudio.h
libmfx/include/msdk/include/mfxaudio++.h
libmfx/include/msdk/include/mfxcommon.h
libmfx/include/msdk/include/mfxdefs.h
libmfx/include/msdk/include/mfxjpeg.h
libmfx/include/msdk/include/mfxmvc.h
libmfx/include/msdk/include/mfxplugin.h
libmfx/include/msdk/include/mfxplugin++.h
libmfx/include/msdk/include/mfxsession.h
libmfx/include/msdk/include/mfxstructures.h
libmfx/include/msdk/include/mfxvideo.h
libmfx/include/msdk/include/mfxvideo++.h
libmfx/include/msdk/include/mfxvstructures.h
libmfx/include/mfx_critical_section.h
libmfx/include/mfx_dispatcher.h
libmfx/include/mfx_dispatcher_defs.h
libmfx/include/mfx_dispatcher_log.h
libmfx/include/mfx_dxva2_device.h
libmfx/include/mfx_exposed_functions_list.h
libmfx/include/mfx_library_iterator.h
libmfx/include/mfx_load_dll.h
libmfx/include/mfx_load_plugin.h
libmfx/include/mfx_plugin_hive.h
libmfx/include/mfx_vector.h
libmfx/include/mfx_win_reg_key.h
libmfx/include/mfxaudio_exposed_functions_list.h
)
set(obs-qsv11_SOURCES
common_directx9.cpp
common_directx11.cpp
common_utils.cpp
common_utils_windows.cpp
device_directx9.cpp
QSV_Encoder.cpp
QSV_Encoder_Internal.cpp
obs-qsv11.c
obs-qsv11-plugin-main.c)
set(obs-qsv11_HEADERS
bits/linux_defs.h
bits/windows_defs.h
common_directx9.h
common_directx11.h
device_directx9.h
common_utils.h
QSV_Encoder.h
QSV_Encoder_Internal.h)
add_library(obs-qsv11 MODULE
${obs-qsv11_SOURCES}
${obs-qsv11_HEADERS}
${obs-qsv11_libmfx_SOURCES}
${obs-qsv11_libmfx_HEADERS}
)
target_link_libraries(obs-qsv11
libobs
d3d9
d3d11
dxva2
dxgi
)
target_compile_definitions(obs-qsv11 PRIVATE DX11_D3D)
source_group("obs-qsv11\\Source Files" FILES ${obs-qsv11_SOURCES})
source_group("obs-qsv11\\Header Files" FILES ${obs-qsv11_HEADERS})
source_group("libmfx\\Source Files" FILES ${obs-qsv11_libmfx_SOURCES})
source_group("libmfx\\Header Files" FILES ${obs-qsv11_libmfx_HEADERS})
install_obs_plugin_with_data(obs-qsv11 data)