| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #include "test-filter.h"
- const char *test_getname(const char *locale)
- {
- return "Test";
- }
- struct test_filter *test_create(const char *settings, obs_source_t source)
- {
- struct test_filter *tf = bmalloc(sizeof(struct test_filter));
- char *effect_file;
- memset(tf, 0, sizeof(struct test_filter));
- 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) {
- test_destroy(tf);
- return NULL;
- }
- tf->texrender = texrender_create(GS_RGBA, GS_ZS_NONE);
- gs_leavecontext();
- return tf;
- }
- void test_destroy(struct test_filter *tf)
- {
- if (tf) {
- gs_entercontext(obs_graphics());
- effect_destroy(tf->whatever);
- texrender_destroy(tf->texrender);
- bfree(tf);
- gs_leavecontext();
- }
- }
- uint32_t test_get_output_flags(struct test_filter *tf)
- {
- return SOURCE_VIDEO;
- }
- void test_video_tick(struct test_filter *tf, float seconds)
- {
- texrender_reset(tf->texrender);
- }
- void test_video_render(struct test_filter *tf)
- {
- obs_source_process_filter(tf->source, tf->texrender, tf->whatever,
- 0, 0, ALLOW_DIRECT_RENDERING);
- }
|