60
社区成员
gst-dsexample基于GStreamer开发,继承至GstBaseTransform类。gst-dsexample中共包含四个文件:gstdsexample.h,gstdsexample.cpp,dsexample_lib.h,dsexample_lib.c。gstdsexample主要实现插件的初始化,插件的注册等功能。dsexample_lib主要负责插件具体功能的实现,如目标检测与目标分类。每个插件均可单独配置不同的参数,用于对插件功能进行设置,如配置处理图像的宽和高、使用GPU的ID等。插件按数据流处理方式可分为直通式与非直通式。直通模式下,数据流直接通过插件,插件仅对流过的数据进行处理,并将处理后的结果附加在数据上传递给下游插件。如获取图像数据并通过算法进行目标检测,将目标检测结果附加在数据中,传递给下游组件,便于后续的分析。gst-dsexample就是直通式插件,获取图像数据并经过算法分析后,将分析结果附加在gst-buffer里,传递给下游组件。非直通模式下,数据流被插件截取并处理后再传递给下游插件,传递给下游的数据流可能由本插件生成,而不再是原始数据。例如图像缩放插件,当图像被放大时,图像数据空间已经改变,必须由缩放插件自行开辟数据空间,并将放大后的图像数据传递给下游。直通与非直通的区别,核心就在于数据流管理方式的不同。下面将对gst-dsexample的插件源码进行解析,关于GStreamer插件相关知识参考GStreamer官方介绍或者后续技术总结,本文会忽略相关知识。