瀏覽代碼

aja: Disable plugin if no devices are found

Colin Edwards 3 年之前
父節點
當前提交
54e5252906

+ 45 - 13
UI/frontend-plugins/aja-output-ui/CMakeLists.txt

@@ -83,27 +83,59 @@ add_library(aja-output-ui MODULE
 	${aja-output-ui_SOURCES}
 	${aja-output-ui_SOURCES}
 	${aja-output-ui_UI_HEADERS})
 	${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)
 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)
 elseif(UNIX AND NOT APPLE)
-	target_compile_definitions(aja-output-ui PUBLIC
-		AJA_LINUX
-		AJALinux)
+	set(aja_COMPILE_DEFS
+			AJA_LINUX
+			AJALinux)
 endif()
 endif()
 
 
 target_include_directories(aja-output-ui PUBLIC
 target_include_directories(aja-output-ui PUBLIC
 	${LIBAJANTV2_INCLUDE_DIRS})
 	${LIBAJANTV2_INCLUDE_DIRS})
-
+target_compile_definitions(aja-output-ui PUBLIC ${aja_COMPILE_DEFS})
 target_link_libraries(aja-output-ui
 target_link_libraries(aja-output-ui
 	${frontend-tools_PLATFORM_LIBS}
 	${frontend-tools_PLATFORM_LIBS}
+	${aja_LIBRARIES}
 	obs-frontend-api
 	obs-frontend-api
 	Qt5::Widgets
 	Qt5::Widgets
 	libobs)
 	libobs)

+ 8 - 0
UI/frontend-plugins/aja-output-ui/aja-ui-main.cpp

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

+ 8 - 0
plugins/aja/main.cpp

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