obs_core结构体分析
2024-10-08
19
0
本想着从简单的开始,但是发现核心的渲染如D3D11和新的版本基本差不多,还不如直接用新的代码调试,所以本章节放弃。
obs_core结构体主要分为四大部分:
- 第一部分是通过Load的dll,加载支持的各种模块类型,如输入模块的视频,颜色图片等。
- 第二部分是全局的信号量及处理函数。
- 第三部分是音视频功能结构体。
- 第四部分是运行时信息。如加载的的具体视频输入源
struct obs_core {
//扩展类型
DARRAY(struct obs_module) modules;//扩展DLL模块句柄
DARRAY(struct obs_source_info) input_types; //输入类型
DARRAY(struct obs_source_info) filter_types; //过滤类型
DARRAY(struct obs_source_info) transition_types;//转换类型
DARRAY(struct obs_output_info) output_types; //输出类型
DARRAY(struct obs_encoder_info) encoder_types;//编码类型
DARRAY(struct obs_service_info) service_types; //服务类型
DARRAY(struct obs_modal_ui) modal_ui_callbacks; //扩展模块ui回调函数
DARRAY(struct obs_modeless_ui) modeless_ui_callbacks;
//两个全局信号量及处理过程
signal_handler_t signals;
proc_handler_t procs;
/* segmented into multiple sub-structures to keep things a bit more
* clean and organized */
struct obs_core_video video; //视频集
struct obs_core_audio audio; //音频集
struct obs_core_data data; //模块类型实例
};
obs_core结构体与其它结构体关系
最终obs_core结构体的关系图如下: