decklink: Add Mac DeckLink project
The code specific to Mac OS X helps convert `CFString` instances to `std::string`s.
This commit is contained in:
parent
fd83f5c85f
commit
496031e8c8
@ -7,6 +7,7 @@ elseif(APPLE)
|
||||
add_subdirectory(mac-avcapture)
|
||||
add_subdirectory(mac-capture)
|
||||
add_subdirectory(mac-syphon)
|
||||
add_subdirectory(decklink/mac)
|
||||
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
|
||||
add_subdirectory(linux-capture)
|
||||
add_subdirectory(linux-pulseaudio)
|
||||
|
50
plugins/decklink/mac/CMakeLists.txt
Normal file
50
plugins/decklink/mac/CMakeLists.txt
Normal file
@ -0,0 +1,50 @@
|
||||
project(mac-decklink)
|
||||
|
||||
find_library(COREFOUNDATION CoreFoundation)
|
||||
|
||||
include_directories(${COREFOUNDATION})
|
||||
|
||||
set(mac-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/DeckLinkAPIStreaming.h
|
||||
decklink-sdk/DeckLinkAPITypes.h
|
||||
decklink-sdk/DeckLinkAPIVersion.h
|
||||
)
|
||||
|
||||
set(mac-decklink-sdk_SOURCES
|
||||
decklink-sdk/DeckLinkAPIDispatch.cpp
|
||||
)
|
||||
|
||||
set(mac-decklink_HEADERS
|
||||
../platform.hpp
|
||||
../decklink.hpp
|
||||
../decklink-device-instance.hpp
|
||||
../decklink-device-discovery.hpp
|
||||
../decklink-device.hpp
|
||||
../decklink-device-mode.hpp
|
||||
)
|
||||
|
||||
set(mac-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(mac-decklink MODULE
|
||||
${mac-decklink_SOURCES}
|
||||
${mac-decklink_HEADERS}
|
||||
${mac-decklink-sdk_HEADERS}
|
||||
${mac-decklink-sdk_SOURCES})
|
||||
|
||||
target_link_libraries(mac-decklink
|
||||
libobs
|
||||
${COREFOUNDATION})
|
||||
|
||||
install_obs_plugin_with_data(mac-decklink ../data)
|
22
plugins/decklink/mac/platform.cpp
Normal file
22
plugins/decklink/mac/platform.cpp
Normal file
@ -0,0 +1,22 @@
|
||||
#include "../platform.hpp"
|
||||
|
||||
bool DeckLinkStringToStdString(decklink_string_t input, std::string& output)
|
||||
{
|
||||
const CFStringRef string = static_cast<CFStringRef>(input);
|
||||
const CFIndex length = CFStringGetLength(string);
|
||||
const CFIndex maxLength = CFStringGetMaximumSizeForEncoding(length,
|
||||
kCFStringEncodingASCII) + 1;
|
||||
|
||||
char * const buffer = new char[maxLength];
|
||||
|
||||
const bool result = CFStringGetCString(string, buffer, maxLength,
|
||||
kCFStringEncodingASCII);
|
||||
|
||||
if (result)
|
||||
output = std::string(buffer);
|
||||
|
||||
delete[] buffer;
|
||||
CFRelease(string);
|
||||
|
||||
return result;
|
||||
}
|
@ -3,7 +3,9 @@
|
||||
#if defined(_WIN32)
|
||||
// TODO: Windows support
|
||||
#elif defined(__APPLE__)
|
||||
// TODO: Mac support
|
||||
#include "mac/decklink-sdk/DeckLinkAPI.h"
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
typedef CFStringRef decklink_string_t;
|
||||
#elif defined(__linux__)
|
||||
// TODO: Linux support
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user