1 变量
1.1 NvBufSurfaceColorFormat
NvBufSurfaceColorFormat
是NVIDIA 提供的用于描述视频帧颜色格式的枚举类型,通常在使用 NVIDIA 的多媒体处理库(如 DeepStream)时会涉及到这个枚举类型,包括了多种常见的视频颜色格式,例如 RGBA、BGRA、YUV420 等。通过指定适当的颜色格式,可以在视频处理过程中正确地解释和处理视频帧的像素数据。
2 element
3.1 capsfilter和nvvideoconvert
capsfilter
作用:用于限制数据流的格式,可以指定所需的视频格式(如分辨率、帧率、像素格式等)。
功能:在数据流传递过程中,确保只有符合特定格式要求的数据能够通过。
用途:当你需要确保数据流的格式符合特定要求时,比如将特定分辨率或帧率的视频数据传递给下游的元素时,可以使用capsfilter来进行格式筛选。
nvvideoconvert
作用:用于进行NVIDIA GPU硬件加速的视频格式转换和处理。
功能:在支持NVIDIA GPU 的环境下,可以利用硬件加速功能来提高视频格式转换的性能和效率。
用途:当你需要在使用NVIDIA GPU的系统上进行视频格式转换时,可以使用nvvideoconvert来充分利用硬件加速功能,加快数据处理速度。
综上所述,capsfilter主要用于限制和筛选数据流的格式,而nvvideoconvert则是针对NVIDIA GPU硬件加速的视频格式转换和处理。
3.2 tee
在GStreamer中,tee素用于将输入的数据流分发到多个不同的分支,可以在管道中创建多个数据流,每个数据流都是原始数据流的一个拷贝。
tee 元素通常用于需要将相同的数据传递给多个处理模块的场景,比如同时进行录制和实时播放的应用程序。
3.3 identity
在 GStreamer中,identity 元素通常用于调试和测试管道,不对数据进行任何处理,只是简单地将输入数据流原样传递到输出端,起到“透明传输”数据的作用。
由于 identity 元素不会对数据进行任何修改,因此可以用来观察数据在管道中的传输情况,或者在开发过程中进行调试。
3 函数
3.1 g_signal_connect 和 gst_pad_add_probe
g_signal_connect:
g_signal_connect 是GLib库中用于连接信号和处理函数的函数,通常用于GTK+等基于GObject的库中。
通过g_signal_connect,可以将一个对象的信号与一个处理函数进行关联,当该信号被触发时,相应的处理函数会被调用,
主要用于事件驱动的编程模型,比如当用户点击按钮时触发相应的信号,然后与之相关联的处理函数就会被执行。
gst_pad_add_probe:
gst_pad_add_probe是GStreamer库中用于在数据流传输过程中添加数据探针(probe)的函数。它允许数据流经过pad(端口)时插入自定义的处理逻辑。
通过gst_pad_add_probe,可以在数据流经过某个pad时添加探针来监视、修改或拦截数据,以实现例如调试、性能分析、数据处理等功能。
探针可以在数据流传输的不同阶段(如数据进入、离开、处理中等)插入,从而提供了非常灵活的数据处理能力。
因此,g_signal_connect 主要用于与对象信号相关联的事件处理,而gst_pad_add_probe主要用于在GStreamer数据流中插入数据探针以实现对数据流的监视和处理。
4 数据结构
https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_metadata.html
Meta data构成:
参考
https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_metadata.html