Gst-nvdsaudiotemplate#

OSS Gst-nvdsaudiotemplate 插件是一个模板插件,它为单帧/批量音频帧处理提供了一个自定义库挂钩接口。自定义库实现可能具有根据用例转换或处理输入缓冲区的算法。它支持 S16LEF32LE 输入。该插件接受批量 NVMM HW 和 RAW SW 缓冲区,并输出批量 HW 和 SW 缓冲区。

Gst-nvdsaudiotemplate

输入和输出#

  • 输入

    • NVMM 或 RAW Gst 缓冲区。支持的格式为 S16LEF32LE

  • 控制参数

    • customlib-name

    • gpu-id

    • customlib-props

  • 输出

    • 转换后的 Gst 缓冲区

特性#

下表总结了该插件的特性。

Gst-nvdsaudiotemplate 特性#

特性

描述

发布版本

简化的 API

简化的接口,用于实现自定义库以添加任何算法,而无需实现新的插件

DS 5.1

轻松数据访问

在自定义库内部轻松访问 GstBuffer 及其元数据

DS 5.1

同步和异步缓冲区处理

Buffer_Ok 是插件向下游推送缓冲区的责任。

Buffer_Async 是自定义库向下游推送缓冲区的责任。

Buffer_Error 和 Buffer_Drop 当前未实现

DS 5.1

参考实现

自定义库的参考实现提供了 transform、transform-ip、元数据处理等,可以根据用例进行修改。

DS 5.1

抽象 API

Bufferpool 创建、caps 处理作为自定义库基类中的抽象 API 提供

DS 5.1

customlib_impl 接口#

  • SetInitParams - 基于协商的 caps,此 API 创建协商分辨率的输出缓冲区池

  • HandleEvent - 此 API 处理标准 Gstreamer 事件以及自定义事件,例如 PAD_ADDED PAD_DELETED 等。

  • GetCompatibleCaps - 此 API 返回要在插件的 SINK/SRC pad 上设置的固定 caps

  • ProcessBuffer - 此 API 将 GstBuffer 传递给 customlib 以进行进一步处理

  • SetProperty - 此 API 设置底层库用于处理的 customlib 属性

Gst 属性#

下表描述了 Gst-nvdsaudiotemplate 插件的 Gst 属性。

Gst-nvsaudiotemplate gst 属性#

属性

含义

类型和范围

示例/注释

平台

gpu-id

用于解码的 GPU 设备 ID。

整数,0 到 4,294,967,295

gpu-id=0

dGPU

customlib-name

要使用的自定义库名称

字符串

默认值:null

dGPU

customlib-props

自定义库属性 (key:value) 字符串,可以多次设置,内部维护向量

字符串

默认值:null

dGPU

示例流水线#

对于单流

gst-launch-1.0 audiotestsrc wave=0 num-buffers=1000 ! audioconvert ! nvdsaudiotemplate \
 customlib-name="libcustom_impl.so" customlib-props="noise-factor:100" ! \
 wavenc ! filesink location=audio.wav buffer-mode=2

对于多流 (确保启用新的 nvstreammux)

export USE_NEW_NVSTREAMMUX=yes
gst-launch-1.0 audiotestsrc wave=0 ! audioconvert ! m.sink_0 nvstreammux name=m \
 ! nvdsaudiotemplate customlib-name="libcustom_impl.so" customlib-props="noise-factor:10" ! nvstreamdemux name=d d.src_0 \
 ! wavenc ! filesink location=audio.wav buffer-mode=2   audiotestsrc wave=1 ! audioconvert ! m.sink_1