aja: Disable plugin if no devices are found

This commit is contained in:
Colin Edwards 2021-12-07 18:52:12 -06:00 committed by GitHub
parent b4cfc6bcf4
commit 54e5252906
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 61 additions and 13 deletions

View File

@ -83,27 +83,59 @@ add_library(aja-output-ui MODULE
${aja-output-ui_SOURCES}
${aja-output-ui_UI_HEADERS})
if (APPLE)
target_compile_definitions(aja-output-ui PUBLIC
AJAMac
AJA_MAC)
set(aja_LIBRARIES
$<IF:$<CONFIG:Debug>,${LIBAJANTV2_DEBUG_LIBRARIES},${LIBAJANTV2_LIBRARIES}>
libobs)
# macOS
if(APPLE)
set(aja_COMPILE_DEFS
AJAMac
AJA_MAC)
find_library(IOKIT_FRAMEWORK Iokit)
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
find_library(APPKIT_FRAMEWORK AppKit)
list(APPEND aja_LIBRARIES
${IOKIT_FRAMEWORK}
${COREFOUNDATION_LIBRARY}
${APPKIT_FRAMEWORK})
# Windows
elseif(WIN32)
target_compile_definitions(aja-output-ui PUBLIC
AJA_WINDOWS
_WINDOWS
WIN32
MSWindows)
set(aja_COMPILE_DEFS
AJA_WINDOWS
_WINDOWS
WIN32
MSWindows)
if(CMAKE_BUILD_TYPE STREQUAL Debug)
list(APPEND aja_COMPILE_DEFS
_DEBUG)
else()
list(APPEND aja_COMPILE_DEFS
NDEBUG)
endif()
list(APPEND aja_LIBRARIES
ws2_32.lib
setupapi.lib
Winmm.lib
netapi32.lib
Shlwapi.lib)
# Linux
elseif(UNIX AND NOT APPLE)
target_compile_definitions(aja-output-ui PUBLIC
AJA_LINUX
AJALinux)
set(aja_COMPILE_DEFS
AJA_LINUX
AJALinux)
endif()
target_include_directories(aja-output-ui PUBLIC
${LIBAJANTV2_INCLUDE_DIRS})
target_compile_definitions(aja-output-ui PUBLIC ${aja_COMPILE_DEFS})
target_link_libraries(aja-output-ui
${frontend-tools_PLATFORM_LIBS}
${aja_LIBRARIES}
obs-frontend-api
Qt5::Widgets
libobs)

View File

@ -11,6 +11,7 @@
#include <util/platform.h>
#include <media-io/video-io.h>
#include <media-io/video-frame.h>
#include <ajantv2/includes/ntv2devicescanner.h>
OBS_DECLARE_MODULE()
OBS_MODULE_USE_DEFAULT_LOCALE("aja-output-ui", "en-US")
@ -310,6 +311,13 @@ static void OBSEvent(enum obs_frontend_event event, void *)
bool obs_module_load(void)
{
CNTV2DeviceScanner scanner;
auto numDevices = scanner.GetNumDevices();
if (numDevices == 0) {
return false;
}
addOutputUI();
obs_frontend_add_event_callback(OBSEvent, nullptr);

View File

@ -1,5 +1,6 @@
#include "aja-card-manager.hpp"
#include <obs-module.h>
#include <ajantv2/includes/ntv2devicescanner.h>
OBS_DECLARE_MODULE()
OBS_MODULE_USE_DEFAULT_LOCALE("aja", "en-US")
@ -17,6 +18,13 @@ struct obs_output_info aja_output_info;
bool obs_module_load(void)
{
CNTV2DeviceScanner scanner;
auto numDevices = scanner.GetNumDevices();
if (numDevices == 0) {
return false;
}
aja::CardManager::Instance().EnumerateCards();
aja_source_info = create_aja_source_info();