diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index b6c8cc2e2..0f54c67fd 100644 --- a/plugins/CMakeLists.txt +++ b/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) diff --git a/plugins/decklink/linux/CMakeLists.txt b/plugins/decklink/linux/CMakeLists.txt new file mode 100644 index 000000000..e51cb95dd --- /dev/null +++ b/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) diff --git a/plugins/decklink/linux/platform.cpp b/plugins/decklink/linux/platform.cpp new file mode 100644 index 000000000..ed71f5dde --- /dev/null +++ b/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; +} diff --git a/plugins/decklink/platform.hpp b/plugins/decklink/platform.hpp index 99f7dab66..739ab3fa4 100644 --- a/plugins/decklink/platform.hpp +++ b/plugins/decklink/platform.hpp @@ -7,7 +7,8 @@ #include 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