obs-studio/plugins/decklink/decklink-device.hpp

58 lines
1.7 KiB
C++
Raw Normal View History

2018-06-23 17:21:07 -05:00
#pragma once
#include "decklink-device-mode.hpp"
#include <map>
#include <string>
#include <vector>
#include <stdint.h>
2018-06-23 17:21:07 -05:00
class DeckLinkDevice {
ComPtr<IDeckLink> device;
2018-09-25 17:51:32 -05:00
std::map<long long, DeckLinkDeviceMode *> inputModeIdMap;
std::vector<DeckLinkDeviceMode *> inputModes;
std::map<long long, DeckLinkDeviceMode *> outputModeIdMap;
std::vector<DeckLinkDeviceMode *> outputModes;
std::string name;
std::string displayName;
std::string hash;
int32_t maxChannel;
2018-06-23 17:21:07 -05:00
decklink_bool_t supportsExternalKeyer;
decklink_bool_t supportsInternalKeyer;
int keyerMode;
volatile long refCount = 1;
public:
DeckLinkDevice(IDeckLink *device);
~DeckLinkDevice(void);
ULONG AddRef(void);
ULONG Release(void);
bool Init();
2018-09-25 17:51:32 -05:00
DeckLinkDeviceMode *FindInputMode(long long id);
DeckLinkDeviceMode *FindOutputMode(long long id);
const std::string& GetDisplayName(void);
const std::string& GetHash(void) const;
2018-09-25 17:51:32 -05:00
const std::vector<DeckLinkDeviceMode *>& GetInputModes(void) const;
const std::vector<DeckLinkDeviceMode *>& GetOutputModes(void) const;
2018-06-23 17:21:07 -05:00
const bool GetSupportsExternalKeyer(void) const;
const bool GetSupportsInternalKeyer(void) const;
int GetKeyerMode(void);
void SetKeyerMode(int newKeyerMode);
const std::string& GetName(void) const;
int32_t GetMaxChannel(void) const;
bool GetInput(IDeckLinkInput **input);
2018-09-25 17:51:32 -05:00
bool GetOutput(IDeckLinkOutput **output);
2018-06-23 17:21:07 -05:00
bool GetKeyer(IDeckLinkKeyer **keyer);
inline bool IsDevice(IDeckLink *device_)
{
return device_ == device;
}
};