一、obs_module 介绍
obs-studio 是基于模块开发的,每个功能抽象成一个独立的模块,然后封装成一个动态库。在obs-studio启动时会
遍历动态库路径,加载所有的动态库。自己封装推流直播sdk时也要加载好这些模块插件。
obs_module 定义如下:
/* modules */struct obs_module {char *mod_name;const char *file;char *bin_path;char *data_path;void *module;bool loaded;//加载模块时会首先调用这个load函数指针//每个模块(插件plugin)都需要实现这个函数指针bool (*load)(void);void (*unload)(void);void (*post_load)(void);void (*set_locale)(const char *locale);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;//指向下一个模块
};
二、module加载过程
在指定的路径下:查找插件---》初始化插件的函数指针---》加载插件调用插件的load函数
1、设置插件的路径
代码见:windows-basic-main.cpp中
//每个插件有两个路径,一个是插件*.dll所在的文件路径bin\32bit,还有一个是插件data配置路径