#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); }