decklink.hpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma once
  2. #include "platform.hpp"
  3. #include <obs-module.h>
  4. #include <map>
  5. #include <vector>
  6. #include <mutex>
  7. class DeckLinkDeviceDiscovery;
  8. class DeckLinkDeviceInstance;
  9. class DeckLinkDevice;
  10. class DeckLinkDeviceMode;
  11. class DeckLink {
  12. protected:
  13. ComPtr<DeckLinkDeviceInstance> instance;
  14. DeckLinkDeviceDiscovery *discovery;
  15. bool isCapturing = false;
  16. obs_source_t *source;
  17. volatile long activateRefs = 0;
  18. std::recursive_mutex deviceMutex;
  19. BMDPixelFormat pixelFormat = bmdFormat8BitYUV;
  20. void SaveSettings();
  21. static void DevicesChanged(void *param, DeckLinkDevice *device,
  22. bool added);
  23. public:
  24. DeckLink(obs_source_t *source, DeckLinkDeviceDiscovery *discovery);
  25. virtual ~DeckLink(void);
  26. DeckLinkDevice *GetDevice() const;
  27. long long GetActiveModeId(void) const;
  28. obs_source_t *GetSource(void) const;
  29. inline BMDPixelFormat GetPixelFormat() const {return pixelFormat;}
  30. inline void SetPixelFormat(BMDPixelFormat format)
  31. {
  32. pixelFormat = format;
  33. }
  34. bool Activate(DeckLinkDevice *device, long long modeId);
  35. void Deactivate();
  36. };