Files
gpu-screen-recorder/include/plugins.h
2025-12-28 13:55:10 -08:00

39 lines
1.0 KiB
C

#ifndef GSR_PLUGINS_H
#define GSR_PLUGINS_H
#include "../plugin/plugin.h"
#include <stdbool.h>
#include "color_conversion.h"
#define GSR_MAX_PLUGINS 128
typedef bool (*gsr_plugin_init_func)(const gsr_plugin_init_params *params, gsr_plugin_init_return *ret);
typedef void (*gsr_plugin_deinit_func)(void *userdata);
typedef struct {
gsr_plugin_init_return data;
void *lib;
gsr_plugin_init_func gsr_plugin_init;
gsr_plugin_deinit_func gsr_plugin_deinit;
} gsr_plugin;
typedef struct {
gsr_plugin plugins[GSR_MAX_PLUGINS];
int num_plugins;
gsr_plugin_init_params init_params;
gsr_egl *egl;
unsigned int texture;
gsr_color_conversion color_conversion;
} gsr_plugins;
bool gsr_plugins_init(gsr_plugins *self, gsr_plugin_init_params init_params, gsr_egl *egl);
/* Plugins are unloaded in reverse order */
void gsr_plugins_deinit(gsr_plugins *self);
bool gsr_plugins_load_plugin(gsr_plugins *self, const char *plugin_filepath);
void gsr_plugins_draw(gsr_plugins *self);
#endif /* GSR_PLUGINS_H */