1
0

plugin-main.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #include <obs-module.h>
  2. #include "xcompcap-main.h"
  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, 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)
  33. {
  34. return XCompcapMain::properties();
  35. }
  36. void xcompcap_defaults(obs_data_t settings)
  37. {
  38. XCompcapMain::defaults(settings);
  39. }
  40. void xcompcap_update(void *data, obs_data_t settings)
  41. {
  42. XCompcapMain* cc = (XCompcapMain*)data;
  43. cc->updateSettings(settings);
  44. }
  45. OBS_DECLARE_MODULE()
  46. OBS_MODULE_USE_DEFAULT_LOCALE("linux-xcomposite", "en-US")
  47. static const char* xcompcap_getname(void)
  48. {
  49. return obs_module_text("XCCapture");
  50. }
  51. bool obs_module_load(void)
  52. {
  53. if (!XCompcapMain::init())
  54. return false;
  55. obs_source_info sinfo;
  56. memset(&sinfo, 0, sizeof(obs_source_info));
  57. sinfo.id = "xcomposite_input";
  58. sinfo.output_flags = OBS_SOURCE_VIDEO;
  59. sinfo.getname = xcompcap_getname;
  60. sinfo.create = xcompcap_create;
  61. sinfo.destroy = xcompcap_destroy;
  62. sinfo.properties = xcompcap_props;
  63. sinfo.defaults = xcompcap_defaults;
  64. sinfo.update = xcompcap_update;
  65. sinfo.video_tick = xcompcap_video_tick;
  66. sinfo.video_render = xcompcap_video_render;
  67. sinfo.getwidth = xcompcap_getwidth;
  68. sinfo.getheight = xcompcap_getheight;
  69. obs_register_source(&sinfo);
  70. blog(LOG_INFO, "Xcomposite capture plugin loaded");
  71. return true;
  72. }
  73. void obs_module_unload()
  74. {
  75. XCompcapMain::deinit();
  76. blog(LOG_INFO, "Xcomposite capture plugin unloaded");
  77. }