Skip to navigation

Gst-nvmultistreamtiler

View as Markdown

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

FeatureDescriptionRelease
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

PropertyMeaningType and RangeExample Notes
rowsNumber of rows in 2D tiled outputInteger,
1 to 4,294,967,295
row=2
columnsNumber of columns in 2D tiled outputInteger,
1 to 4,294,967,295
columns=2
widthWidth of 2D tiled output in pixelsInteger,
1 to 4,294,967,295
width=1920
heightHeight of 2D tiled output in pixelsInteger,
1 to 4,294,967,295
height=1080
show-sourceScale 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,647show-source=2
gpu-idID 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-typeType 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-4nvbuf-memory-type=1
custom-tile-configCustom tile position and resolution. Can be configured programmatically for all or none of the sources.Values of enum CustomTileConfigReserved for future use.
Default: null.
compute-hwCompute 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-2compute-hw=1
square-seq-gridEnable automatic square tiling according to number of sources.
The tiles are placed sequentially on the grid with empty tiles at the end
Booleansquare-seq-grid=1
buffer-pool-sizeSize of the nvtiler output buffer poolInteger,
4 to 10
buffer-pool-size=4
interpolation-methodInterpolation method used for scaling; see Gst-nvvideoconvert for the shared enum valuesEnuminterpolation-method=1