xcomposite-main.cpp 1.9 KB

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