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存储插件库。

注意:gstreamer搜索目录的时候,会进行递归所有目录搜索

alt text

2.2 问题总结

2.2.1 环境变量之间的区别

如果未设置 GST_PLUGIN_SYSTEM_PATH,会搜索默认搜索路径,如果设置了 GST_PLUGIN_SYSTEM_PATH 就不会搜索默认的搜索路径,例子如下:

2.2.1.1 GST_PLUGIN_SYSTEM_PATH

可以看到使用该环境变量后,就不会查找默认搜索路径

alt text

2.2.1.2 GST_PLUGIN_PATH

可以看到使用该环境变量后,还会查找默认搜索路径

alt text