gstreamer插件的工作机制

     Gst强大就是来自于 开发者可以按照给出的模板 添加和生产各种各样功能强大的插件, 然后将插件加入到gst的统一管理系统中,这样在应用端就可以在插件工厂中 找到插件,并利用插件的功能,Gst的插件都是在运行的时候进行动态加载的。

       gst_init(&argc,&argv);初始化gst函数库,建立内部路径列表,注册内置元件以及加载标准的plugins。总体的流程就是在调用gst_init会根据编译安装的环境变量(g_getenv("GST_REGISTRY_1_0"),g_getenv ("GST_REGISTRY")), 对插件所在的目录进行扫描,然后更新注册表。 实际上就是通过去扫描动态库所在的路径(/usr/lib/gstreamer-1.0),然后跟之前已有的注册表缓冲区去比较,有新加的库就 将库的路径 加入注册表缓冲,缺少到就从缓冲中删除掉。

执行完成之后,会预先加载一些必要的库。 随后都是根据应用程序的流程而进行动态加载的。具体流程如下图

         

 

 

1、扫描环境变量所定义的动态库的路径,更新注册表的缓存,即生成一个包含各个动态库路径的表

2、加载动态库

就是调用g_module_open, g_module_symbol,gst_plugin_register_func 跟平常动态库加载类型 就是调用dlopen,dlsys,然后调用每个插件入口函数plugin_init。plugin_init主要是调用 gst_element_register 注册插件元件的工厂类

3、创建好工厂类之后, 应用程序里面就可以调用gst_element_factory_make 从工厂元件中创建元件,如果不是预先需要加载的库,那么在创建元件的时候 从注册表缓存中找到路径 然后加库加载进来。

参考:https://blog.csdn.net/weixin_41944449/article/details/8126

猜你喜欢

转载自blog.csdn.net/H2008066215019910120/article/details/112565580
今日推荐