xcomposite-main.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 |
  58. OBS_SOURCE_CUSTOM_DRAW |
  59. OBS_SOURCE_DO_NOT_DUPLICATE;
  60. sinfo.get_name = xcompcap_getname;
  61. sinfo.create = xcompcap_create;
  62. sinfo.destroy = xcompcap_destroy;
  63. sinfo.get_properties = xcompcap_props;
  64. sinfo.get_defaults = xcompcap_defaults;
  65. sinfo.update = xcompcap_update;
  66. sinfo.video_tick = xcompcap_video_tick;
  67. sinfo.video_render = xcompcap_video_render;
  68. sinfo.get_width = xcompcap_getwidth;
  69. sinfo.get_height = xcompcap_getheight;
  70. obs_register_source(&sinfo);
  71. }
  72. extern "C" void xcomposite_unload(void)
  73. {
  74. XCompcapMain::deinit();
  75. }