Gst-nvdsaudiotemplate

The OSS Gst-nvdsaudiotemplate plugin is a template plugin which provides a custom library hooking interface for single/batched audio frame(s) processing. Custom lib implementation may have algorithms to transform or process input buffers depending upon the use case. It can support S16LE and F32LE inputs. The plugin accepts batched NVMM HW and RAW SW buffers, and outputs batched HW and SW buffers.

Gst-nvdsaudiotemplate

Inputs and Outputs

  • Inputs

    • NVMM or RAW Gst Buffers. Supported formats are S16LE and F32LE

  • Control parameters

    • customlib-name

    • gpu-id

    • customlib-props

  • Output

    • Transformed Gst Buffer

Features

The following table summarizes the features of the plugin.

Gst-nvdsaudiotemplate features

Feature

Description

Release

Simplified APIs

Simplified interface to implement custom library to add any algorithm without implementing new plugin

DS 5.1

Easy Data Accessing

Easy access to GstBuffer and it’s metadata inside custom library

DS 5.1

Synchronous and Asynchronous Buffer Processing

Buffer_Ok is the responsibility of the plugin to push the buffer downstream.

Buffer_Async is the responsibility of the custom library to push the buffer downstream.

Buffer_Error and Buffer_Drop are currently not implemented

DS 5.1

Reference Impl.

Reference implementation of custom library provides transform, transform-ip, metadata handling etc. which can be modified as per the use case.

DS 5.1

Abstraction APIs

Bufferpool creation, caps handling provided as an abstraction API inside customlib base class

DS 5.1

customlib_impl Interfaces

  • SetInitParams - Based on the negotiated caps, this API creates output buffer pool of the negotiated resolution

  • HandleEvent - This API handles standard Gstreamer events as well as custom events such as PAD_ADDED PAD_DELETED etc.

  • GetCompatibleCaps - This API returns the fixated caps to be set on either SINK / SRC pad of the plugin

  • ProcessBuffer - This API passes the GstBuffer to customlib for further processing

  • SetProperty - This API sets the customlib properties that are used by the underlying library for processing

Gst Properties

The following table describes the Gst properties of the Gst-nvdsaudiotemplate plugin.

Gst-nvsaudiotemplate gst properties

Property

Meaning

Type and Range

Example/Notes

Platforms

gpu-id

Device ID of GPU to use for decoding.

Integer, 0 to 4,294,967,295

gpu-id=0

dGPU

customlib-name

custom library Name to be used

String

Default: null

dGPU

customlib-props

Custom Library Properties (key:value) string, can be set multiple times,vector is maintained internally

String

Default: null

dGPU

Sample pipelines

For single stream:

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

For Multi-stream (Ensure that new nvstreammux is enabled):

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