GStreamer之GstRegistry

GStreamer的GstRegistry是一个保存插件元数据的列表,用于查询和检索插件信息。插件信息来源于插件文件,缓存在注册表文件中,以提高查询效率。在应用启动时,按照特定路径加载插件并更新缓存。缓存可能包含未知、过时或当前信息,需要在必要时更新。初始化结束后,清理不可用的插件条目并保存脏缓存。
摘要由CSDN通过智能技术生成

一个Registry保存一组插件的元数据。

设计原理

GstRegistry对象是一个列表,此列表包含多个插件和操作插件的函数。每个GstPlugin与磁盘上的文件是一对一匹配的,并且可能会或可能不会在给定时间内加载插件。

插件信息的主要来源始终是插件文件本身。因此,应用程序想要查询指定插件的有关信息,或想要搜索满足指定条件的功能,主要的操作方法是加载每个插件并查看在默认注册表中搜集的结果信息。显然这是一个耗时的过程,因此我们将信息缓存在注册表文件中。缓存文件的格式和位置是gstreamer内部的。

在应用启动时,程序会在插件搜索路径中搜索插件,按照以下位置,顺序检查:

  • 来自 --gst-plugin-path 命令行选项的位置
  • GST_PLUGIN_PATH 环境变量
  • GST_PLUGIN_SYSTEM_PATH 环境变量
  • 默认位置(如果未设置 GST_PLUGIN_SYSTEM_PATH)。这些默认位置是: $XDG_DATA_HOME/gstreamer-$GST_API_VERSION/plugins/ 和$prefix/libs/gstreamer-$GST_API_VERSION/。 $XDG_DATA_HOME默认为 $HOME/.local/share.

注册表缓存文件是从$XDG_CACHE_HOME/gstreamer-$GST_API_VERSION/registry-$ARCH.bin (其中 $XDG_CACHE_HOME 默认为$HOME/.cache)或GST_REGISTRY env var 中列出的文件加载的 。更改注册表位置的原因之一是为了测试。如:

 对于在插件搜索路径找到的每个插件, 缓存信息可能有3种可能:

  • 缓存可能不包含有关给定文件的信息。
  • 缓存可能有陈旧的信息。
  • 缓存可能有当前信息。

在前两种情况下,加载插件并更新缓存文件。除了这些情况外,缓存中可能包含与当前进程无关的插件条目。这些被标记为对当前进程不可用。如果缓存因任何原因更新,则将其标记为dirty.

在初始化结束时,写出dirty缓存。检查每个条目以确保信息最低限度地有效。如果不是,则简单地删除该条目。

注意事项:

“缓存”和“注册表”是不同的概念。可以代表不同的插件集,由于各种原因,在初始化时,缓存存储在默认注册表中,与当前进程无关的插件用GST_PLUGIN_FLAG_CACHED位标记。这些插件在初始化结束时被删除。

原文地址:https://gstreamer.freedesktop.org/documentation/gstreamer/gstregistry.html?gi-language=c#GstRegistry

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值