obs-studio/test/test-input/test-filter.c
jp9000 0b4a259e56 Remove 'locale' parameter from all callbacks
The locale parameter was a mistake, because it puts extra needless
burden upon the module developer to have to handle this variable for
each and every single callback function.  The parameter is being removed
in favor of a single centralized module callback function that
specifically updates locale information for a module only when needed.
2014-06-25 12:36:26 -07:00

68 lines
1.3 KiB
C

#include <obs.h>
struct test_filter {
obs_source_t source;
effect_t whatever;
};
static const char *filter_getname(void)
{
return "Test";
}
static void filter_destroy(void *data)
{
struct test_filter *tf = data;
if (tf) {
gs_entercontext(obs_graphics());
effect_destroy(tf->whatever);
bfree(tf);
gs_leavecontext();
}
}
static void *filter_create(obs_data_t settings, obs_source_t source)
{
struct test_filter *tf = bzalloc(sizeof(struct test_filter));
char *effect_file;
gs_entercontext(obs_graphics());
effect_file = obs_find_plugin_file("test-input/test.effect");
tf->source = source;
tf->whatever = gs_create_effect_from_file(effect_file, NULL);
bfree(effect_file);
if (!tf->whatever) {
filter_destroy(tf);
return NULL;
}
gs_leavecontext();
UNUSED_PARAMETER(settings);
return tf;
}
static void filter_render(void *data, effect_t effect)
{
struct test_filter *tf = data;
obs_source_process_filter(tf->source, tf->whatever, 0, 0, GS_RGBA,
ALLOW_DIRECT_RENDERING);
UNUSED_PARAMETER(effect);
}
struct obs_source_info test_filter = {
.id = "test_filter",
.type = OBS_SOURCE_TYPE_FILTER,
.output_flags = OBS_SOURCE_VIDEO,
.getname = filter_getname,
.create = filter_create,
.destroy = filter_destroy,
.video_render = filter_render
};