decklink.hpp 976 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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. void SaveSettings();
  20. static void DevicesChanged(void *param, DeckLinkDevice *device,
  21. bool added);
  22. public:
  23. DeckLink(obs_source_t *source, DeckLinkDeviceDiscovery *discovery);
  24. virtual ~DeckLink(void);
  25. DeckLinkDevice *GetDevice() const;
  26. long long GetActiveModeId(void) const;
  27. obs_source_t *GetSource(void) const;
  28. bool Activate(DeckLinkDevice *device, long long modeId);
  29. void Deactivate();
  30. };