xcomposite-main.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #include <obs-module.h>
  2. #include "xcompcap-main.hpp"
  3. static void *xcompcap_create(obs_data_t *settings, obs_source_t *source)
  4. {
  5. return new XCompcapMain(settings, source);
  6. }
  7. static void xcompcap_destroy(void *data)
  8. {
  9. XCompcapMain *cc = (XCompcapMain *)data;
  10. delete cc;
  11. }
  12. static void xcompcap_video_tick(void *data, float seconds)
  13. {
  14. XCompcapMain *cc = (XCompcapMain *)data;
  15. cc->tick(seconds);
  16. }
  17. static void xcompcap_video_render(void *data, gs_effect_t *effect)
  18. {
  19. XCompcapMain *cc = (XCompcapMain *)data;
  20. cc->render(effect);
  21. }
  22. static uint32_t xcompcap_getwidth(void *data)
  23. {
  24. XCompcapMain *cc = (XCompcapMain *)data;
  25. return cc->width();
  26. }
  27. static uint32_t xcompcap_getheight(void *data)
  28. {
  29. XCompcapMain *cc = (XCompcapMain *)data;
  30. return cc->height();
  31. }
  32. static obs_properties_t *xcompcap_props(void *unused)
  33. {
  34. UNUSED_PARAMETER(unused);
  35. return XCompcapMain::properties();
  36. }
  37. void xcompcap_defaults(obs_data_t *settings)
  38. {
  39. XCompcapMain::defaults(settings);
  40. }
  41. void xcompcap_update(void *data, obs_data_t *settings)
  42. {
  43. XCompcapMain *cc = (XCompcapMain *)data;
  44. cc->updateSettings(settings);
  45. }
  46. static const char *xcompcap_getname(void *)
  47. {
  48. return obs_module_text("XCCapture");
  49. }
  50. extern "C" void xcomposite_load(void)
  51. {
  52. if (!XCompcapMain::init())
  53. return;
  54. obs_source_info sinfo;
  55. memset(&sinfo, 0, sizeof(obs_source_info));
  56. sinfo.id = "xcomposite_input";
  57. sinfo.output_flags = OBS_SOURCE_VIDEO | OBS_SOURCE_CUSTOM_DRAW |
  58. OBS_SOURCE_DO_NOT_DUPLICATE;
  59. sinfo.get_name = xcompcap_getname;
  60. sinfo.create = xcompcap_create;
  61. sinfo.destroy = xcompcap_destroy;
  62. sinfo.get_properties = xcompcap_props;
  63. sinfo.get_defaults = xcompcap_defaults;
  64. sinfo.update = xcompcap_update;
  65. sinfo.video_tick = xcompcap_video_tick;
  66. sinfo.video_render = xcompcap_video_render;
  67. sinfo.get_width = xcompcap_getwidth;
  68. sinfo.get_height = xcompcap_getheight;
  69. obs_register_source(&sinfo);
  70. }
  71. extern "C" void xcomposite_unload(void)
  72. {
  73. XCompcapMain::deinit();
  74. }