#pragma once #include "DeckLinkAPI_h.h" #include "DeckLinkFrameTransfer.h" #include #include class OpenGLComposite; class DeckLinkSession { public: DeckLinkSession() = default; ~DeckLinkSession(); void ReleaseResources(); bool Start(unsigned outputFrameHeight); bool Stop(); CaptureDelegate* captureDelegate = nullptr; PlayoutDelegate* playoutDelegate = nullptr; IDeckLinkInput* input = nullptr; IDeckLinkOutput* output = nullptr; IDeckLinkKeyer* keyer = nullptr; std::deque outputVideoFrameQueue; PinnedMemoryAllocator* playoutAllocator = nullptr; BMDTimeValue frameDuration = 0; BMDTimeScale frameTimescale = 0; unsigned totalPlayoutFrames = 0; unsigned inputFrameWidth = 0; unsigned inputFrameHeight = 0; unsigned outputFrameWidth = 0; unsigned outputFrameHeight = 0; std::string inputDisplayModeName = "1080p59.94"; std::string outputDisplayModeName = "1080p59.94"; bool hasNoInputSource = true; std::string outputModelName; bool supportsInternalKeying = false; bool supportsExternalKeying = false; bool keyerInterfaceAvailable = false; bool externalKeyingActive = false; std::string statusMessage; };