Gst-nvmultistreamtiler#

The Gst-nvmultistreamtiler plugin composites a 2D tile from batched buffers. The plugin accepts batched NV12/RGBA data from upstream components. The plugin composites the tile based on stream IDs, obtained from NvDsBatchMeta and NvDsFrameMeta in row-major order (starting from source 0, left to right across the top row, then across the next row). Each source frame is scaled to the corresponding location in the tiled output buffer. The plugin can reconfigure if a new source is added and it exceeds the space allocated for tiles. It also maintains a cache of old frames to avoid display flicker if one source has a lower frame rate than other sources.

Gst-nvmultistreamtiler

Inputs and Outputs#

  • Inputs

  • Gst Buffer batched buffer

  • NvDsBatchMeta with Gst Buffer batched (batch is one or more buffers)

  • Formats supported: NV12/RGBA

  • Control Parameters

  • rows

  • columns

  • width

  • height

  • gpu-id (dGPU only)

  • compute-hw (Jetson only)

  • show-source

  • nvbuf-memory-type

  • custom-tile-config

  • square-seq-grid

  • Output

  • Gst Buffer (single frame) with composited input frames

  • Transformed metadata (NvDsBatchMeta)

  • Formats supported: NV12/RGBA

Features#

The following table summarizes the features of the plugin.

Gst-nvmultistreamtiler features#

Feature

Description

Release

Composites a 2D tile of input buffers

DS 2.0

Scales bounding box with metadata coordinates according to scaling and position in tile

DS 2.0

Multi-GPU support

DS 2.0

Shows expanded preview for a single source

DS 2.0

User configurable CUDA memory type (Pinned/Device/Unified) for output buffers

DS 3.0

Reconfigures 2D tile for new sources added at runtime

DS 3.0

Gst Properties#

The following table describes the Gst-nvmultistreamtiler plugin’s Gst properties.

Gst-nvmultistreamtiler gst properties#

Property

Meaning

Type and Range

Example Notes

rows

Number of rows in 2D tiled output

Integer, 1 to 4,294,967,295

row=2

columns

Number of columns in 2D tiled output

Integer, 1 to 4,294,967,295

columns=2

width

Width of 2D tiled output in pixels

Integer, 1 to 4,294,967,295

width=1920

height

Height of 2D tiled output in pixels

Integer, 1 to 4,294,967,295

height=1080

show-source

Scale and show frames from a single source. -1: composite and show all sources For values ≥0, frames from that source are zoomed.

Signed integer, −1 to 2,147,483,647

show-source=2

gpu-id

ID of the GPU on which device/unified memory is to be allocated, and in which buffers are copied or scaled. (dGPU only.)

Integer, 1 to 4,294,967,295

gpu-id=1

nvbuf-memory-type

Type of CUDA memory to be allocated.

For dGPU:

0 (nvbuf-mem-default): Default memory, cuda-device

1 (nvbuf-mem-cuda-pinned): Pinned/Host CUDA memory

2 (nvbuf-mem-cuda-device) Device CUDA memory

3 (nvbuf-mem-cuda-unified): Unified CUDA memory

For Jetson:

0 (nvbuf-mem-default): Default memory, surface array

4 (nvbuf-mem-surface-array): Surface array memory

Integer, 0-4

nvbuf-memory-type=1

custom-tile-config

Custom tile position and resolution. Can be configured programmatically for all or none of the sources.

Values of enum CustomTileConfig

Reserved for future use. Default: null.

compute-hw

Compute Scaling HW to use. Applicable only for Jetson. dGPU systems uses GPU by default.

0 (Default): Default, GPU for Tesla, VIC for Jetson

1 (GPU): GPU

2 (VIC): VIC

Integer: 0-2

compute-hw=1

square-seq-grid

Enable automatic square tiling according to number of sources. The tiles are placed sequentially on the grid with empty tiles at the end

Boolean

square-seq-grid=1