#pragma once #include "decklink-device-mode.hpp" #include #include #include class DeckLinkDevice { ComPtr device; std::map inputModeIdMap; std::vector inputModes; std::map outputModeIdMap; std::vector outputModes; std::string name; std::string displayName; std::string hash; int32_t maxChannel; volatile long refCount = 1; public: DeckLinkDevice(IDeckLink *device); ~DeckLinkDevice(void); ULONG AddRef(void); ULONG Release(void); bool Init(); DeckLinkDeviceMode *FindInputMode(long long id); DeckLinkDeviceMode *FindOutputMode(long long id); const std::string& GetDisplayName(void); const std::string& GetHash(void) const; const std::vector& GetInputModes(void) const; const std::vector& GetOutputModes(void) const; const std::string& GetName(void) const; int32_t GetMaxChannel(void) const; bool GetInput(IDeckLinkInput **input); bool GetOutput(IDeckLinkOutput **output); inline bool IsDevice(IDeckLink *device_) { return device_ == device; } };