main.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "aja-card-manager.hpp"
  2. #include <obs-module.h>
  3. #include <ajantv2/includes/ntv2devicescanner.h>
  4. OBS_DECLARE_MODULE()
  5. OBS_MODULE_USE_DEFAULT_LOCALE("aja", "en-US")
  6. MODULE_EXPORT const char *obs_module_description(void)
  7. {
  8. return "aja";
  9. }
  10. extern struct obs_source_info create_aja_source_info();
  11. struct obs_source_info aja_source_info;
  12. extern struct obs_output_info create_aja_output_info();
  13. struct obs_output_info aja_output_info;
  14. bool obs_module_load(void)
  15. {
  16. CNTV2DeviceScanner scanner;
  17. auto numDevices = scanner.GetNumDevices();
  18. if (numDevices == 0) {
  19. blog(LOG_WARNING,
  20. "No AJA devices found, skipping loading AJA plugin");
  21. return false;
  22. }
  23. aja::CardManager::Instance().EnumerateCards();
  24. aja_source_info = create_aja_source_info();
  25. obs_register_source(&aja_source_info);
  26. aja_output_info = create_aja_output_info();
  27. obs_register_output(&aja_output_info);
  28. return true;
  29. }
  30. void obs_module_post_load(void)
  31. {
  32. struct calldata params = {0};
  33. auto cardManager = &aja::CardManager::Instance();
  34. calldata_set_ptr(&params, "card_manager", (void *)cardManager);
  35. auto signal_handler = obs_get_signal_handler();
  36. signal_handler_signal(signal_handler, "aja_loaded", &params);
  37. calldata_free(&params);
  38. }
  39. void obs_module_unload(void)
  40. {
  41. aja::CardManager::Instance().ClearCardEntries();
  42. }