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

输入和输出#
输入
NVMM 或 RAW Gst 缓冲区。支持的格式为 S16LE 和 F32LE
控制参数
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 上设置的固定 capsProcessBuffer
- 此 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