obs plugins 分析
obs 模块插件实现方式:同一导出接口名称,如:obs_module_load,然后所有插件都实现该接口
obs 模块插件加载方式调用关系(非堆栈反序,是正序)如下:obs64.exe!OBSBasic::OBSInit(void * view)obs.dll!AddExtraModulePaths() //添加插件相对于可执行程序的路径obs.dll!obs_load_all_modules()obs.dll!obs_find_modules(...)obs.dll!load_all_callback(...)obs.dll!obs_open_module(...) //使用动态库 LoadLibrary 方式加载,把加载的数据保存到全局的 struct obs_core *obs 链表结构对象中obs.dll!load_module_exports(...) //加载同一导出的接口
自定义引用插件的接口:导出需要引用的接口:extern "C" __declspec(dllexport) void xxx(...),C++ 动态获取 C 实现的接口地址必需加 extern "C" 进行导出,否则会获取不到该地址。封装获取插件接口地址的函数:
void *obs_get_module_func(const char *file, const char *func)
{struct obs_module *mod = obs->first_module;while (mod) {if(!strcmp(file, mod->file)){return os_dlsym(mod->module, func);}mod = mod->next;}return NULL;
}获取到接口指针后强制转换成具体的函数类型,如 typedef void(*TPFxxx)(...),然后直接调用即可。
obs plugins 分析相关推荐
- 开源直播工具OBS研究
项目简介 OBS - Free and open source software for live streaming and screen recording(OBS是一款开源的用于录屏直播的工具软 ...
- obs在linux下的离线安装教程,OBS手动安装插件教程
亲爱的葫芦丝们,大家好! (•̀ᴗ•́)و ̑̑ 今天给大家讲解下 -- OBS手动安装插件,建议不怕麻烦,动手能力强的主播使用~ 闲话不多说,小编我开始讲解: (。・ω・)ノ゙ 安装VC2013运行 ...
- ElasticSearch5.5.1插件分类
附官网介绍:https://www.elastic.co/guide/en/elasticsearch/plugins/5.5/intro.html 一.插件介绍 插件是以自定义方式来增强Elasti ...
- ElasticSearch 插件开发
es有丰富的插件差不多 可以满平时开发的需求,但出现奇葩需求的时候又不能完全满足,所以就需要自定义开发插件了 目前es有以下几种插件可以去自定义 Analysis Plugins 分析插件 Disco ...
- ElasticSearch es 插件开发
ElasticSearch es 插件开发 1. 插件分类 API Extension Plugins API扩展插件 通过添加新的API或功能向Elasticsearch添加新功能,通常与搜索或映射 ...
- textract_比较亚马逊textract与tesseract ocr ocr nlp用例
textract What is OCR anyway and why the buzz? Artificial Intelligence (AI) enables entities with Hum ...
- obs源码分析【一】:main函数
目录 main函数在哪里 obs项目架构 main函数浅析 crash的处理 obs配置 obs log 网络请求libcurl 主界面 Qt适配高dpi屏幕 总结 最近对obs的代码感兴趣了,在 ...
- C#调用obs studio 二次开发 源码分析 编译
C#二次开发obs studio obs studio二次开发视频教程,录制.推流.调整分辨率.调整位置.画面回调.推流回调等功能 obs二次开发还是比较繁琐的,我在学习的时候也是很痛苦,有需要的朋友 ...
- OBS框架流程和源码分析七一视频流捕获机制
1. 视频流捕获机制 1.1. 视频流捕获基本原理 所谓视频流,实际上是由一张张图像组成,由于人体眼睛的捕获频率,以及视觉暂留机制,在图像连续播放时,会让大脑以为产生连贯性的动画效果.常见的电影帧率是 ...
最新文章
- 解决MYSQL错误:ERROR 1040 (08004): Too many connections
- 零基础可以学python吗-零基础可以学会python吗?python好学吗?
- jupyter notebook妙用之%time
- 如何取消IE窗口的全屏显示
- nltk和python的关系_NLTK学习笔记(一):语言处理和Python
- python实例 99,100
- 03-git上传大项目的时很慢
- 计算机图形学研究与应用的最新进展,关于计算机图形学的发展及应用探究
- 对棋盘完美覆盖问题证明过程的质疑及其解决
- encodeURI和uncodeURIComponent的介绍
- 腾讯位置服务开发应用-使用教程,案例分享,知识总结
- IDEA 代码格式化插件Save Actions
- JDK和JRE和JVM的区别
- 基于p5实现的大五人格“线条”效果
- Go 编程语言官方文档中文版和官方教程中文版
- 3月8号女神节不知道送什么?python告诉你~(祝小仙女们节日快乐~)
- win7与internet时间同步出错_时间同步出错,教您时间同步出错
- 纯java写2D格斗游戏(一)——界面背景设置及人物的简单设置
- Redis核心技术笔记——Redis主从、主从从、切片集群
- 农业技术:从能量的角度看农业革命(垄耕种植法)