main.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. auto num = cardManager->NumCardEntries();
  35. blog(LOG_WARNING, "aja main card manager: %lu", cardManager);
  36. blog(LOG_WARNING, "NUM CARDS: %lu", num);
  37. calldata_set_ptr(&params, "card_manager", (void *)cardManager);
  38. auto signal_handler = obs_get_signal_handler();
  39. signal_handler_signal(signal_handler, "aja_loaded", &params);
  40. calldata_free(&params);
  41. }
  42. void obs_module_unload(void)
  43. {
  44. aja::CardManager::Instance().ClearCardEntries();
  45. }