obs-studio/plugins/linux-capture/xcomposite-main.cpp

94 lines
2.0 KiB
C++
Raw Normal View History

2014-04-28 17:59:53 -07:00
#include <obs-module.h>
#include "xcompcap-main.hpp"
2014-04-28 17:59:53 -07:00
static void *xcompcap_create(obs_data_t *settings, obs_source_t *source)
2014-04-28 17:59:53 -07:00
{
return new XCompcapMain(settings, source);
}
static void xcompcap_destroy(void *data)
{
XCompcapMain *cc = (XCompcapMain *)data;
2014-04-28 17:59:53 -07:00
delete cc;
}
static void xcompcap_video_tick(void *data, float seconds)
2014-04-28 17:59:53 -07:00
{
XCompcapMain *cc = (XCompcapMain *)data;
2014-04-28 17:59:53 -07:00
cc->tick(seconds);
}
static void xcompcap_video_render(void *data, gs_effect_t *effect)
2014-04-28 17:59:53 -07:00
{
XCompcapMain *cc = (XCompcapMain *)data;
2014-04-28 17:59:53 -07:00
cc->render(effect);
}
static uint32_t xcompcap_getwidth(void *data)
2014-04-28 17:59:53 -07:00
{
XCompcapMain *cc = (XCompcapMain *)data;
2014-04-28 17:59:53 -07:00
return cc->width();
}
static uint32_t xcompcap_getheight(void *data)
2014-04-28 17:59:53 -07:00
{
XCompcapMain *cc = (XCompcapMain *)data;
2014-04-28 17:59:53 -07:00
return cc->height();
}
static obs_properties_t *xcompcap_props(void *unused)
2014-04-28 17:59:53 -07:00
{
UNUSED_PARAMETER(unused);
return XCompcapMain::properties();
2014-04-28 17:59:53 -07:00
}
void xcompcap_defaults(obs_data_t *settings)
2014-04-28 17:59:53 -07:00
{
XCompcapMain::defaults(settings);
}
void xcompcap_update(void *data, obs_data_t *settings)
2014-04-28 17:59:53 -07:00
{
XCompcapMain *cc = (XCompcapMain *)data;
2014-04-28 17:59:53 -07:00
cc->updateSettings(settings);
}
static const char *xcompcap_getname(void *)
2014-04-28 17:59:53 -07:00
{
2014-07-09 22:12:57 -07:00
return obs_module_text("XCCapture");
2014-04-28 17:59:53 -07:00
}
extern "C" void xcomposite_load(void)
2014-04-28 17:59:53 -07:00
{
if (!XCompcapMain::init())
return;
2014-04-28 17:59:53 -07:00
obs_source_info sinfo;
memset(&sinfo, 0, sizeof(obs_source_info));
sinfo.id = "xcomposite_input";
sinfo.output_flags = OBS_SOURCE_VIDEO | OBS_SOURCE_CUSTOM_DRAW |
OBS_SOURCE_DO_NOT_DUPLICATE;
2014-04-28 17:59:53 -07:00
sinfo.get_name = xcompcap_getname;
sinfo.create = xcompcap_create;
sinfo.destroy = xcompcap_destroy;
sinfo.get_properties = xcompcap_props;
sinfo.get_defaults = xcompcap_defaults;
sinfo.update = xcompcap_update;
sinfo.video_tick = xcompcap_video_tick;
sinfo.video_render = xcompcap_video_render;
sinfo.get_width = xcompcap_getwidth;
sinfo.get_height = xcompcap_getheight;
2019-07-27 21:59:16 -07:00
sinfo.icon_type = OBS_ICON_TYPE_WINDOW_CAPTURE,
2014-04-28 17:59:53 -07:00
obs_register_source(&sinfo);
}
extern "C" void xcomposite_unload(void)
2014-04-28 17:59:53 -07:00
{
XCompcapMain::deinit();
}