platform.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "../platform.hpp"
  2. #include <util/platform.h>
  3. IDeckLinkDiscovery *CreateDeckLinkDiscoveryInstance(void)
  4. {
  5. IDeckLinkDiscovery *instance;
  6. const HRESULT result =
  7. CoCreateInstance(CLSID_CDeckLinkDiscovery, nullptr, CLSCTX_ALL,
  8. IID_IDeckLinkDiscovery, (void **)&instance);
  9. return result == S_OK ? instance : nullptr;
  10. }
  11. IDeckLinkIterator *CreateDeckLinkIteratorInstance(void)
  12. {
  13. IDeckLinkIterator *iterator;
  14. const HRESULT result =
  15. CoCreateInstance(CLSID_CDeckLinkIterator, nullptr, CLSCTX_ALL,
  16. IID_IDeckLinkIterator, (void **)&iterator);
  17. return result == S_OK ? iterator : nullptr;
  18. }
  19. IDeckLinkVideoConversion *CreateVideoConversionInstance(void)
  20. {
  21. IDeckLinkVideoConversion *conversion;
  22. const HRESULT result = CoCreateInstance(CLSID_CDeckLinkVideoConversion,
  23. nullptr, CLSCTX_ALL,
  24. IID_IDeckLinkVideoConversion,
  25. (void **)&conversion);
  26. return result == S_OK ? conversion : nullptr;
  27. }
  28. bool DeckLinkStringToStdString(decklink_string_t input, std::string &output)
  29. {
  30. if (input == nullptr)
  31. return false;
  32. size_t len = wcslen(input);
  33. size_t utf8_len = os_wcs_to_utf8(input, len, nullptr, 0);
  34. output.resize(utf8_len);
  35. os_wcs_to_utf8(input, len, &output[0], utf8_len);
  36. return true;
  37. }