提交 496031e8 编写于 作者: S Skyler Lipthay

decklink: Add Mac DeckLink project

The code specific to Mac OS X helps convert `CFString` instances to
`std::string`s.
上级 fd83f5c8
......@@ -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)
......
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)
#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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册