plugin-main.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. static const char* xcompcap_getname(void)
  47. {
  48. /* TODO: locale */
  49. return "Xcomposite capture";
  50. }
  51. bool obs_module_load(uint32_t libobs_version)
  52. {
  53. UNUSED_PARAMETER(libobs_version);
  54. if (!XCompcapMain::init())
  55. return false;
  56. obs_source_info sinfo;
  57. memset(&sinfo, 0, sizeof(obs_source_info));
  58. sinfo.id = "xcomposite_input";
  59. sinfo.output_flags = OBS_SOURCE_VIDEO;
  60. sinfo.getname = xcompcap_getname;
  61. sinfo.create = xcompcap_create;
  62. sinfo.destroy = xcompcap_destroy;
  63. sinfo.properties = xcompcap_props;
  64. sinfo.defaults = xcompcap_defaults;
  65. sinfo.update = xcompcap_update;
  66. sinfo.video_tick = xcompcap_video_tick;
  67. sinfo.video_render = xcompcap_video_render;
  68. sinfo.getwidth = xcompcap_getwidth;
  69. sinfo.getheight = xcompcap_getheight;
  70. obs_register_source(&sinfo);
  71. blog(LOG_INFO, "Xcomposite capture plugin loaded");
  72. return true;
  73. }
  74. void obs_module_unload()
  75. {
  76. XCompcapMain::deinit();
  77. blog(LOG_INFO, "Xcomposite capture plugin unloaded");
  78. }