image-source.dll-大纲
2024-06-21
8
0
导出函数集
image-source.dll的导出函数遵循OBS扩展模块规则,导出的函数存储于struct obs_module中。
struct obs_module {
char *mod_name; //没有扩展名dll的文件名
const char *file;//文件名 xxx.dll
char *bin_path; //完整的dll的PathName
char *data_path;//配置文件ini路径
void *module; //LoadLibrary返回的HMODULE实例
bool loaded; //obs_init_module函数中调用bool (*load)(void);的返回值
bool (*load)(void);//必须存在
void (*unload)(void);
void (*post_load)(void);
void (*set_locale)(const char *locale);// 参数obs->locale
bool (*get_string)(const char *lookup_string, const char **translated_string);
void (*free_locale)(void);
uint32_t (*ver)(void);//必须存在
void (*set_pointer)(obs_module_t *module);//必须存在
const char *(*name)(void);
const char *(*description)(void);
const char *(*author)(void);
struct obs_module *next;//链表,下一个。第一个存在obs->first_module;
};
我们使用工具查看image-source.dll,用来验证其导出的函数。
初始化
image-source.dll根据 https://www.pnpon.com/article/detail-696.html 一切可知,在其初始化时,会调用2个函数,分别为:
- obs_module_load
- obs_module_post_load
不过明显,image-source.dll不具有函数obs_module_post_load,故只会调用obs_module_load。
obs_module_load函数用于向OBS内核注册其提供的源:
bool obs_module_load(void)
{
obs_register_source(&image_source_info);
obs_register_source(&color_source_info_v1);
obs_register_source(&color_source_info_v2);
obs_register_source(&color_source_info_v3);
obs_register_source(&slideshow_info);
obs_register_source(&slideshow_info_mk2);
return true;
}
关于obs_register_source可见:https://www.pnpon.com/article/detail-635.html
image-source.dll注册的6个源,类型均为OBS_SOURCE_TYPE_INPUT,具体可见:https://www.pnpon.com/article/detail-690.html
这些注册的源均会存储在:obs->input_types 中。