DeepStream SDK中的元数据MetaData

Gst Buffer 是 Gstreamer 数据传输的基本单位。每个 Gst Buffer 都有关联的元数据。Deepstream SDK 附加 了Deepstream 元数据对象NvDsBatchMeta。要了解更多关于 Gst Buffer 的信息,请参考 Gstreamer documentation

NvDsBatchMeta : 基础元数据类型

DeepStream 使用一个可扩展的元数据标准结构。基本的元数据结构 NvDsBatchMeta 从批处理级元数据开始,这些元数据是在 Gst-nvstreammux 插件中创建的。附属的元数据结构保存帧(frame)、对象(object)、分类器(classifer)和标签数据(label)。DeepStream 还提供了一种在批处理(batch)、帧(frame)或对象(object)级别添加用户特定的元数据的机制。DeepStream 通过在 Gst-nvstreammux 插件中附加一个 NvDsBatchMeta 结构并将 GstNvDsMetaType.meta_type 设置为 NVDS_BATCH_GST_META的方法,来将元数据附加到 Gst Buffer。当您的应用程序处理 Gst Buffer 时,它可以迭代遍历附加的元数据以查找NVDS_BATCH_GST_META。函数 gst_buffer_get_nvds_batch_meta() 从 Gst Buffer 中提取 NvDsBatchMeta。(参见 source/includes/gstnvdsmeta.h 文件中的声明)。

请参阅 deepstream-test1示例应用程序以获得此函数的使用示例。更多详细信息,请参阅 NVIDIA DeepStream SDK API 参考。

官方链接中提供的图中的内容已经和DeepStream5.0中的属性不匹配,这里我重新绘制了一个类关系图。

图片12

NvDsBatchMeta 内添加用户自定义元数据

要在 NvDsBatchMeta 中的批处理、帧或对象级别附加特定于用户的元数据,必须通过调用 nvds_acquire_user_meta_from_pool()从用户元数据池中获取一个 NvDsUserMeta实例。(详情请参阅 sources/includes/nvdsmeta.h)。然后,必须初始化 NvDsUserMeta。您必须设置的成员是 user_meta_data, meta_type, copy_func, 和release_func。有关详细信息,请参阅源/apps/sample _ apps/deepstream-user-metadata-test/deepstream _ user _ metadata _ app.c 中的示例应用程序源代码。

猜你喜欢

转载自blog.csdn.net/u010414589/article/details/114981196