diff --git a/UI/frontend-plugins/aja-output-ui/CMakeLists.txt b/UI/frontend-plugins/aja-output-ui/CMakeLists.txt index 3bed6ee56..56c4be21e 100644 --- a/UI/frontend-plugins/aja-output-ui/CMakeLists.txt +++ b/UI/frontend-plugins/aja-output-ui/CMakeLists.txt @@ -43,14 +43,6 @@ target_link_libraries( OBS::ui-support Qt::Widgets AJA::LibAJANTV2 - $<$:ws2_32.lib> - $<$:setupapi.lib> - $<$:Winmm.lib> - $<$:netapi32.lib> - $<$:Shlwapi.lib> - "$<$:$>" - "$<$:$>" - "$<$:$>" $<$:X11::X11> $<$:Qt::GuiPrivate>) diff --git a/cmake/Modules/FindLibAJANTV2.cmake b/cmake/Modules/FindLibAJANTV2.cmake index 3ce91deed..2ae1801ff 100644 --- a/cmake/Modules/FindLibAJANTV2.cmake +++ b/cmake/Modules/FindLibAJANTV2.cmake @@ -14,8 +14,8 @@ else() endif() find_path( - AJA_LIBRARIES_INCLUDE_DIR - NAMES ajalibraries + _LIBAJANTV2_NEW_INCLUDE_DIR + NAMES libajantv2 HINTS ENV AJASDKPath${_lib_suffix} ENV @@ -32,6 +32,38 @@ find_path( PATHS /usr/include /usr/local/include /opt/local/include /sw/include PATH_SUFFIXES include) +if(${_LIBAJANTV2_NEW_INCLUDE_DIR} STREQUAL "_LIBAJANTV2_NEW_INCLUDE_DIR-NOTFOUND") + find_path( + _LIBAJANTV2_OLD_INCLUDE_DIR + NAMES libajantv2 + HINTS ENV + AJASDKPath${_lib_suffix} + ENV + AJASDKPath + ENV + DepsPath${_lib_suffix} + ENV + DepsPath + ${AJASDKPath${_lib_suffix}} + ${AJASDKPath} + ${DepsPath${_lib_suffix}} + ${DepsPath} + ${_AJA_NTV2_INCLUDE_DIRS} + PATHS /usr/include /usr/local/include /opt/local/include /sw/include + PATH_SUFFIXES include) + if(${_LIBAJANTV2_OLD_INCLUDE_DIR} STREQUAL "_LIBAJANTV2_OLD_INCLUDE_DIR-NOTFOUND") + set(AJA_LIBRARIES_INCLUDE_DIR ${_LIBAJANTV2_OLD_INCLUDE_DIR}/ajalibraries) + if(NOT LibAJANTV2_FIND_QUIETLY) + message(DEPRECATION "aja: Using old ntv2 library") + endif() + endif() +else() + set(AJA_LIBRARIES_INCLUDE_DIR ${_LIBAJANTV2_NEW_INCLUDE_DIR}/libajantv2) + if(NOT LibAJANTV2_FIND_QUIETLY) + message(STATUS "aja: Using new libajantv2 library") + endif() +endif() + find_library( AJA_NTV2_LIB NAMES ${_AJA_NTV2_LIBRARIES} ajantv2 libajantv2 @@ -99,10 +131,17 @@ find_package_handle_standard_args(LibAJANTV2 DEFAULT_MSG AJA_LIBRARIES_INCLUDE_D mark_as_advanced(AJA_LIBRARIES_INCLUDE_DIR AJA_NTV2_LIB) if(LIBAJANTV2_FOUND) - set(AJA_LIBRARIES_INCLUDE_DIR ${AJA_LIBRARIES_INCLUDE_DIR}/ajalibraries) + set(AJA_LIBRARIES_INCLUDE_DIR ${AJA_LIBRARIES_INCLUDE_DIR}) set(AJA_LIBRARIES_INCLUDE_DIRS ${AJA_LIBRARIES_INCLUDE_DIR} ${AJA_LIBRARIES_INCLUDE_DIR}/ajaanc ${AJA_LIBRARIES_INCLUDE_DIR}/ajabase ${AJA_LIBRARIES_INCLUDE_DIR}/ajantv2 ${AJA_LIBRARIES_INCLUDE_DIR}/ajantv2/includes) + if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") + list(APPEND LibAJANTV2_INCLUDE_DIRS ${AJA_LIBRARIES_INCLUDE_DIR}/ajantv2/src/win) + elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin") + list(APPEND LibAJANTV2_INCLUDE_DIRS ${AJA_LIBRARIES_INCLUDE_DIR}/ajantv2/src/mac) + elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux") + list(APPEND LibAJANTV2_INCLUDE_DIRS ${AJA_LIBRARIES_INCLUDE_DIR}/ajantv2/src/lin) + endif() set(LIBAJANTV2_LIBRARIES ${AJA_NTV2_LIB}) if(AJA_NTV2_DEBUG_LIB STREQUAL "AJA_NTV2_DEBUG_LIB-NOTFOUND") diff --git a/cmake/finders/FindLibAJANTV2.cmake b/cmake/finders/FindLibAJANTV2.cmake index 333ecb6b9..8a667a5d7 100644 --- a/cmake/finders/FindLibAJANTV2.cmake +++ b/cmake/finders/FindLibAJANTV2.cmake @@ -56,11 +56,30 @@ if(PKG_CONFIG_FOUND) endif() find_path( - LibAJANTV2_INCLUDE_DIR - NAMES ajalibraries + _LIBAJANTV2_NEW_INCLUDE_DIR + NAMES libajantv2 HINTS ${PC_LibAJANTV2_INCLUDE_DIRS} PATHS /usr/include /usr/local/include - DOC "LibAJANTV2 include directory") + DOC "LibAJANTV2 (new) include directory") +if(${_LIBAJANTV2_NEW_INCLUDE_DIR} STREQUAL "_LIBAJANTV2_NEW_INCLUDE_DIR-NOTFOUND") + find_path( + _LIBAJANTV2_OLD_INCLUDE_DIR + NAMES ajalibraries + HINTS ${PC_LibAJANTV2_INCLUDE_DIRS} + PATHS /usr/include /usr/local/include + DOC "LibAJANTV2 (old) include directory") + if(NOT ${_LIBAJANTV2_OLD_INCLUDE_DIR} STREQUAL "_LIBAJANTV2_OLD_INCLUDE_DIR-NOTFOUND") + set(LibAJANTV2_INCLUDE_DIR ${_LIBAJANTV2_OLD_INCLUDE_DIR}/ajalibraries) + if(NOT LibAJANTV2_FIND_QUIETLY) + message(DEPRECATION "aja: Using old ntv2 library") + endif() + endif() +else() + set(LibAJANTV2_INCLUDE_DIR ${_LIBAJANTV2_NEW_INCLUDE_DIR}/libajantv2) + if(NOT LibAJANTV2_FIND_QUIETLY) + message(STATUS "aja: Using new libajantv2 library") + endif() +endif() find_library( LibAJANTV2_LIBRARY_RELEASE @@ -97,7 +116,7 @@ endif() find_package_handle_standard_args( LibAJANTV2 REQUIRED_VARS LibAJANTV2_LIBRARY LibAJANTV2_INCLUDE_DIR - VERSION_VAR LibAJANTV2_VERSION REASON_FAILURE_MESSAGE LibAJANTV2_ERROR_REASON) + VERSION_VAR LibAJANTV2_VERSION REASON_FAILURE_MESSAGE ${LibAJANTV2_ERROR_REASON}) mark_as_advanced(LibAJANTV2_LIBRARY LibAJANTV2_INCLUDE_DIR) unset(LibAJANTV2_ERROR_REASON) @@ -105,11 +124,19 @@ if(LibAJANTV2_FOUND) list( APPEND LibAJANTV2_INCLUDE_DIRS - ${LibAJANTV2_INCLUDE_DIR}/ajalibraries - ${LibAJANTV2_INCLUDE_DIR}/ajalibraries/ajaanc - ${LibAJANTV2_INCLUDE_DIR}/ajalibraries/ajabase - ${LibAJANTV2_INCLUDE_DIR}/ajalibraries/ajantv2 - ${LibAJANTV2_INCLUDE_DIR}/ajalibraries/ajantv2/includes) + ${LibAJANTV2_INCLUDE_DIR} + ${LibAJANTV2_INCLUDE_DIR}/ajaanc + ${LibAJANTV2_INCLUDE_DIR}/ajabase + ${LibAJANTV2_INCLUDE_DIR}/ajantv2 + ${LibAJANTV2_INCLUDE_DIR}/ajantv2/includes) + if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") + list(APPEND LibAJANTV2_INCLUDE_DIRS ${LibAJANTV2_INCLUDE_DIR}/ajantv2/src/win) + elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin") + list(APPEND LibAJANTV2_INCLUDE_DIRS ${LibAJANTV2_INCLUDE_DIR}/ajantv2/src/mac) + elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux") + list(APPEND LibAJANTV2_INCLUDE_DIRS ${LibAJANTV2_INCLUDE_DIR}/ajantv2/src/lin) + endif() + set(LibAJANTV2_LIBRARIES ${LibAJANTV2_LIBRARY}) mark_as_advanced(LibAJANTV2_INCLUDE_DIR LibAJANTV2_LIBRARY) @@ -142,6 +169,20 @@ if(LibAJANTV2_FOUND) endif() set_target_properties(AJA::LibAJANTV2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LibAJANTV2_INCLUDE_DIRS}") + set_target_properties(AJA::LibAJANTV2 PROPERTIES INTERFACE_LINK_OPTIONS $<$:/IGNORE:4099>) + set_property( + TARGET AJA::LibAJANTV2 + APPEND + PROPERTY INTERFACE_LINK_LIBRARIES + $<$:netapi32.lib> + $<$:setupapi.lib> + $<$:shlwapi.lib> + $<$:wbemuuid.lib> + $<$:winmm.lib> + $<$:ws2_32.lib> + "$<$:$>" + "$<$:$>" + "$<$:$>") set_property( TARGET AJA::LibAJANTV2 APPEND diff --git a/plugins/aja/CMakeLists.txt b/plugins/aja/CMakeLists.txt index ffdfdf8e0..ae170e6f5 100644 --- a/plugins/aja/CMakeLists.txt +++ b/plugins/aja/CMakeLists.txt @@ -58,19 +58,7 @@ target_compile_options( aja-support PUBLIC $<$:-Wno-deprecated-declarations> $<$:-Wno-unused-variable>) -target_link_libraries( - aja - PRIVATE OBS::aja-support - $<$:netapi32.lib> - $<$:setupapi.lib> - $<$:shlwapi.lib> - $<$:winmm.lib> - $<$:ws2_32.lib> - "$<$:$>" - "$<$:$>" - "$<$:$>") - -target_link_options(aja PRIVATE $<$:/IGNORE:4099>) +target_link_libraries(aja PRIVATE OBS::aja-support) if(OS_WINDOWS) configure_file(cmake/windows/obs-module.rc.in win-aja.rc) diff --git a/plugins/aja/aja-widget-io.cpp b/plugins/aja/aja-widget-io.cpp index 18e571dfe..c7d01c0ac 100644 --- a/plugins/aja/aja-widget-io.cpp +++ b/plugins/aja/aja-widget-io.cpp @@ -1,6 +1,7 @@ #include "aja-widget-io.hpp" #include "aja-common.hpp" +#include #include #include @@ -35,21 +36,21 @@ static const WidgetInputSocket kWidgetInputSockets[] = { //NTV2InputCrosspointID | NTV2WidgetID | Name | DatastreamIndex { NTV2_INPUT_CROSSPOINT_INVALID, NTV2_WIDGET_INVALID, "", -1}, { NTV2_XptFrameBuffer1Input, NTV2_WgtFrameBuffer1, kFramebufferNickname, 0}, - { NTV2_XptFrameBuffer1BInput, NTV2_WgtFrameBuffer1, kFramebufferNickname, 1}, + { NTV2_XptFrameBuffer1DS2Input, NTV2_WgtFrameBuffer1, kFramebufferNickname, 1}, { NTV2_XptFrameBuffer2Input, NTV2_WgtFrameBuffer2, kFramebufferNickname, 0}, - { NTV2_XptFrameBuffer2BInput, NTV2_WgtFrameBuffer2, kFramebufferNickname, 1}, + { NTV2_XptFrameBuffer2DS2Input, NTV2_WgtFrameBuffer2, kFramebufferNickname, 1}, { NTV2_XptFrameBuffer3Input, NTV2_WgtFrameBuffer3, kFramebufferNickname, 0}, - { NTV2_XptFrameBuffer3BInput, NTV2_WgtFrameBuffer3, kFramebufferNickname, 1}, + { NTV2_XptFrameBuffer3DS2Input, NTV2_WgtFrameBuffer3, kFramebufferNickname, 1}, { NTV2_XptFrameBuffer4Input, NTV2_WgtFrameBuffer4, kFramebufferNickname, 0}, - { NTV2_XptFrameBuffer4BInput, NTV2_WgtFrameBuffer4, kFramebufferNickname, 1}, + { NTV2_XptFrameBuffer4DS2Input, NTV2_WgtFrameBuffer4, kFramebufferNickname, 1}, { NTV2_XptFrameBuffer5Input, NTV2_WgtFrameBuffer5, kFramebufferNickname, 0}, - { NTV2_XptFrameBuffer5BInput, NTV2_WgtFrameBuffer5, kFramebufferNickname, 1}, + { NTV2_XptFrameBuffer5DS2Input, NTV2_WgtFrameBuffer5, kFramebufferNickname, 1}, { NTV2_XptFrameBuffer6Input, NTV2_WgtFrameBuffer6, kFramebufferNickname, 0}, - { NTV2_XptFrameBuffer6BInput, NTV2_WgtFrameBuffer6, kFramebufferNickname, 1}, + { NTV2_XptFrameBuffer6DS2Input, NTV2_WgtFrameBuffer6, kFramebufferNickname, 1}, { NTV2_XptFrameBuffer7Input, NTV2_WgtFrameBuffer7, kFramebufferNickname, 0}, - { NTV2_XptFrameBuffer7BInput, NTV2_WgtFrameBuffer7, kFramebufferNickname, 1}, + { NTV2_XptFrameBuffer7DS2Input, NTV2_WgtFrameBuffer7, kFramebufferNickname, 1}, { NTV2_XptFrameBuffer8Input, NTV2_WgtFrameBuffer8, kFramebufferNickname, 0}, - { NTV2_XptFrameBuffer8BInput, NTV2_WgtFrameBuffer8, kFramebufferNickname, 1}, + { NTV2_XptFrameBuffer8DS2Input, NTV2_WgtFrameBuffer8, kFramebufferNickname, 1}, { NTV2_XptCSC1VidInput, NTV2_WgtCSC1, kCSCNickname, 0}, { NTV2_XptCSC1KeyInput, NTV2_WgtCSC1, kCSCNickname, 1}, { NTV2_XptCSC2VidInput, NTV2_WgtCSC2, kCSCNickname, 0},