一、GStreamer插件设计——插件注册与搜索路径
1 插件注册
1.1 元素注册定义宏
/**
* @brief: 元素注册到GStreamer中的宏定义
* @param e: 元素的名称(小写), 需要跟注册元素的时候 GST_ELEMENT_REGISTER 的第一个参数相同
* @param e_n: 元素的名称,用于元素创建 gst_element_factory_make 函数中使用
* @param r: 元素的等级
* @param t: Gtype类型系统中已经被注册的类型
*/
GST_ELEMENT_REGISTER_DEFINE(e, e_n, r, t)
1.2 元素注册宏
/**
* @brief: 元素注册到GStreamer到@plugin中
* @param element: 元素的名称,需要跟 GST_ELEMENT_REGISTER_DEFINE 的第一个参数相同
* @param plugin: 插件对象的地址
* @note: 该函数是被插件初始化函数调用
*/
GST_ELEMENT_REGISTER(element, plugin)
1.3 插件注册定义宏
注意:@name一定要和库名(libname.so)一样,否则无法搜索到该插件/**
* @brief: 在GStreamer系统中注册一个插件
* @param major: 插件的主版本号
* @param minor: 插件的次版本号
* @param name: 插件的名称,gst-inspect-1.0 可以使用@name 搜索到该插件
* @param description: 该插件的相关描述
* @param init: 插件的初始化函数
* @param version: 插件的版本号
* @param license: 插件的许可证
* @param package: 插件包所在的包名
* @param orign: 插件的来源
* @note: 以上变量一般都是在 config.h(由meson.build生成) 文件中被定义,
*/
GST_PLUGIN_DEFINE(major,minor,name,description,init,version,license,package,origin)
2 搜索路径
在启动时,会在插件搜索路径中搜索插件。按以下顺序检查以下设置:
-
–gst-plugin-path: 通过命令行选项,命令行传入搜索路径(该命令行选项是整个gst所有的,并不是gst-inspect-1.0程序仅有)。
gst-launch-1.0 --gst-plugin-path=$HOME/gst-template/gst-plugin/src/libs audiotestsrc ! my_element ! autoaudiosink
-
GST_PLUGIN_PATH: 环境变量设定搜索路径。
-
GST_PLUGIN_SYSTEM_PATH: 环境变量设定搜索路径 。
-
默认搜索路径:比如:
/usr/lib/x86_64-linux-gnu/gstreamer-1.0
和/usr/lib/aarch64-linux-gnu/gstreamer-1.0
,也就是GStreamer库文件当前目录会新建一个gstreamer-1.0
存储插件库。
2.2 问题总结
2.2.1 环境变量之间的区别
如果未设置 GST_PLUGIN_SYSTEM_PATH
,会搜索默认搜索路径,如果设置了 GST_PLUGIN_SYSTEM_PATH
就不会搜索默认的搜索路径,例子如下:
2.2.1.1 GST_PLUGIN_SYSTEM_PATH
可以看到使用该环境变量后,就不会查找默认搜索路径
2.2.1.2 GST_PLUGIN_PATH
可以看到使用该环境变量后,还会查找默认搜索路径