Browse Source

decklink: Add Linux DeckLink project

The code specific to Linux helps convert `const char *` instances to
`std::string`s.
Skyler Lipthay 11 years ago
parent
commit
70f8369ae3

+ 1 - 0
plugins/CMakeLists.txt

@@ -13,6 +13,7 @@ elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
 	add_subdirectory(linux-pulseaudio)
 	add_subdirectory(linux-v4l2)
 	add_subdirectory(linux-jack)
+	add_subdirectory(decklink/linux)
 endif()
 
 add_subdirectory(image-source)

+ 45 - 0
plugins/decklink/linux/CMakeLists.txt

@@ -0,0 +1,45 @@
+project(linux-decklink)
+
+set(linux-decklink-sdk_HEADERS
+	decklink-sdk/DeckLinkAPI.h
+	decklink-sdk/DeckLinkAPIConfiguration.h
+	decklink-sdk/DeckLinkAPIDeckControl.h
+	decklink-sdk/DeckLinkAPIDiscovery.h
+	decklink-sdk/DeckLinkAPIModes.h
+	decklink-sdk/DeckLinkAPITypes.h
+	decklink-sdk/DeckLinkAPIVersion.h
+	decklink-sdk/LinuxCOM.h
+	)
+
+set(linux-decklink-sdk_SOURCES
+	decklink-sdk/DeckLinkAPIDispatch.cpp
+	)
+
+set(linux-decklink_HEADERS
+	../platform.hpp
+	../decklink.hpp
+	../decklink-device-instance.hpp
+	../decklink-device-discovery.hpp
+	../decklink-device.hpp
+	../decklink-device-mode.hpp
+	)
+
+set(linux-decklink_SOURCES
+	../plugin-main.cpp
+	../decklink.cpp
+	../decklink-device-instance.cpp
+	../decklink-device-discovery.cpp
+	../decklink-device.cpp
+	../decklink-device-mode.cpp
+	platform.cpp)
+
+add_library(linux-decklink MODULE
+	${linux-decklink_SOURCES}
+	${linux-decklink_HEADERS}
+	${linux-decklink-sdk_HEADERS}
+	${linux-decklink-sdk_SOURCES})
+
+target_link_libraries(linux-decklink
+	libobs)
+
+install_obs_plugin_with_data(linux-decklink ../data)

+ 12 - 0
plugins/decklink/linux/platform.cpp

@@ -0,0 +1,12 @@
+#include "../platform.hpp"
+
+bool DeckLinkStringToStdString(decklink_string_t input, std::string& output)
+{
+	if (input == nullptr)
+		return false;
+
+	output = std::string(input);
+	free((void *)input);
+
+	return true;
+}

+ 2 - 1
plugins/decklink/platform.hpp

@@ -7,7 +7,8 @@
 #include <CoreFoundation/CoreFoundation.h>
 typedef CFStringRef decklink_string_t;
 #elif defined(__linux__)
-// TODO: Linux support
+#include "linux/decklink-sdk/DeckLinkAPI.h"
+typedef const char *decklink_string_t;
 #endif
 
 #include <util/windows/HRError.hpp>