plugin-main.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include <windows.h>
  2. #include <obs-module.h>
  3. OBS_DECLARE_MODULE()
  4. OBS_MODULE_USE_DEFAULT_LOCALE("win-capture", "en-US")
  5. extern struct obs_source_info duplicator_capture_info;
  6. extern struct obs_source_info monitor_capture_info;
  7. extern struct obs_source_info window_capture_info;
  8. extern struct obs_source_info game_capture_info;
  9. extern bool load_graphics_offsets(bool is32bit);
  10. /* temporary, will eventually be erased once we figure out how to create both
  11. * 32bit and 64bit versions of the helpers/hook */
  12. #ifdef _WIN64
  13. #define IS32BIT false
  14. #else
  15. #define IS32BIT true
  16. #endif
  17. bool obs_module_load(void)
  18. {
  19. OSVERSIONINFO osvi = {0};
  20. bool win8_or_above = false;
  21. osvi.dwOSVersionInfoSize = sizeof(osvi);
  22. if (!!GetVersionEx(&osvi)) {
  23. win8_or_above = osvi.dwMajorVersion > 6 ||
  24. (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion >= 2);
  25. }
  26. obs_enter_graphics();
  27. if (win8_or_above && gs_get_device_type() == GS_DEVICE_DIRECT3D_11)
  28. obs_register_source(&duplicator_capture_info);
  29. else
  30. obs_register_source(&monitor_capture_info);
  31. obs_leave_graphics();
  32. obs_register_source(&window_capture_info);
  33. if (load_graphics_offsets(IS32BIT)) {
  34. load_graphics_offsets(!IS32BIT);
  35. obs_register_source(&game_capture_info);
  36. }
  37. return true;
  38. }