C/C++ Sample Apps Source Details — DeepStream documentation (original) (raw)
Sample test application 1
apps/sample_apps/deepstream-test1
Sample of how to use DeepStream elements for a single H.264 stream: filesrc → decode → nvstreammux → nvinfer or nvinferserver (primary detector) → nvdsosd → renderer. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Sample test application 2
apps/sample_apps/deepstream-test2
Sample of how to use DeepStream elements for a single H.264 stream: filesrc → decode → nvstreammux → nvinfer or nvinferserver (primary detector) → nvtracker → nvinfer or nvinferserver (secondary classifier) → nvdsosd → renderer. This app uses resnet18_trafficcamnet_pruned.onnx for detection and 2 classifier models (i.e., resnet18_vehiclemakenet_pruned.onnx, resnet18_vehicletypenet_pruned.onnx).
Sample test application 3
apps/sample_apps/deepstream-test3
Builds on deepstream-test1 (simple test application 1) to demonstrate how to:
- Use multiple sources in the pipeline.
- Use a uridecodebin to accept any type of input (e.g. RTSP/File), any GStreamer supported container format, and any codec.
- Configure Gst-nvstreammux to generate a batch of frames and infer on it for better resource utilization.
- Extract the stream metadata, which contains useful information about the frames in the batched buffer.
This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Sample test application 4
apps/sample_apps/deepstream-test4
Builds on deepstream-test1 for a single H.264 stream: filesrc, decode, nvstreammux, nvinfer or nvinferserver, nvdsosd, renderer to demonstrate how to:
- Use the Gst-nvmsgconv and Gst-nvmsgbroker plugins in the pipeline.
- Create NVDS_META_EVENT_MSG type metadata and attach it to the buffer.
- Use NVDS_META_EVENT_MSG for different types of objects, e.g. vehicle and person.
- Implement “copy” and “free” functions for use if metadata is extended through the extMsg field.
This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Sample test application 5
apps/sample_apps/deepstream-test5
Builds on top of deepstream-app. Demonstrates:
- Use of Gst-nvmsgconv and Gst-nvmsgbroker plugins in the pipeline for multistream.
- How to configure Gst-nvmsgbroker plugin from the config file as a sink plugin (for KAFKA, Azure, etc.).
- How to handle the RTCP sender reports from RTSP servers or cameras and translate the Gst Buffer PTS to a UTC timestamp.
For more details refer the RTCP Sender Report callback function test5_rtcp_sender_report_callback()
registration and usage in deepstream_test5_app_main.c
. GStreamer callback registration with rtpmanager element’s “handle-sync” signal is documented in apps-common/src/deepstream_source_bin.c
.
This app uses resnet18_trafficcamnet_pruned.onnx for detection.
DeepStream 3D Multi-Modal Lidar Camera Sensor Fusion App
apps/sample_apps/deepstream-3d-lidar-sensor-fusion
The sample app deepstream-3d-lidar-sensor-fusion showcases a multi-modal sensor fusion pipeline for LiDAR and camera data using the DS3D framework. There are 2 pipelines integrated into this sample, ds3d multi-modal bevfusion with 6 cameras plus a lidar data fusion and 3D detection; v2x model Processes data from a single camera and a LiDAR, utilizing a batch size of 4.
AMQP protocol test application
libs/amqp_protocol_adaptor
Application to test AMQP protocol. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Azure MQTT test application
libs/azure_protocol_adaptor
Test application to show Azure IoT device2edge messaging and device2cloud messaging using MQTT. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
DeepStream reference application
apps/sample_apps/deepstream-app
Source code for the DeepStream reference application. This app uses resnet18_trafficcamnet_pruned.onnx for detection and 2 classifier models (i.e., resnet18_vehiclemakenet_pruned.onnx, resnet18_vehicletypenet_pruned.onnx).
Dewarper example
apps/sample_apps/deepstream-dewarper-test
Demonstrates dewarper functionality for single or multiple 360-degree camera streams. Reads camera calibration parameters from a CSV file and renders aisle and spot surfaces on the display.
Optical flow example
apps/sample_apps/deepstream-nvof-test
Demonstrates optical flow functionality for single or multiple streams. This example uses two GStreamer plugins (Gst-nvof and Gst-nvofvisual). The Gst-nvof element generates the MV (motion vector) data and attaches it as user metadata. The Gst-nvofvisual element visualizes the MV data using a predefined color wheel matrix.
Custom meta data example
apps/sample_apps/deepstream-user-metadata-test
Demonstrates how to add custom or user-specific metadata to any component of DeepStream. The test code attaches a 16-byte array filled with user data to the chosen component. The data is retrieved in another component. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
MJPEG and JPEG decoder and inferencing example
apps/sample_apps/deepstream-image-decode-test
Builds on deepstream-test3 to demonstrate image decoding instead of video. This example uses a custom decode bin so the MJPEG codec can be used as input. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Handling metadata before Gst-nvstreammux
apps/sample_apps/deepstream-gst-metadata-test
Demonstrates how to set metadata before the Gst-nvstreammux plugin in the DeepStream pipeline, and how to access it after Gst-nvstreammux. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Gst-nvinfer tensor meta flow example
apps/sample_apps/deepstream-infer-tensor-meta-app
Demonstrates how to flow and access nvinfer tensor output as metadata. NOTE: This binary is not packaged due to OpenCV deprecation. This app needs to be compiled by the user. This app uses resnet18_trafficcamnet_pruned.onnx for detection and 2 classifier models (i.e., resnet18_vehiclemakenet_pruned.onnx, resnet18_vehicletypenet_pruned.onnx).
Preprocess example
apps/sample_apps/deepstream-preprocess-test
Demonstrates inference on preprocessed ROIs configured for the streams. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
3D action recognition Reference app
apps/sample_apps/deepstream-3d-action-recognition
Demonstrates a sequence batching based 3D or 2D model inference pipeline for action recognition. It also includes a sequence based preprocess custom lib for NCSHW temporal batching. Refer Prerequisites in README before running the application. This app uses resnet18_2d_rgb_hmdb5_32.etlt for 2D and resnet18_3d_rgb_hmdb5_32.etlt for 3D action recognition.
Analytics example
apps/sample_apps/deepstream-nvdsanalytics-test
Demonstrates batched analytics like ROI filtering, Line crossing, direction detection and overcrowding. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
OpenCV example
apps/sample_apps/deepstream-opencv-test
Demonstrates the use of OpenCV in dsexample plugin. Need to compile dsexample with flag WITH_OPENCV=1
. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Image as Metadata example
Apps/sample_apps / deepstream-image-meta-test
Demonstrates how to attach encoded image as meta data and save the images in jpeg format. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Appsrc and Appsink example
apps/sample_apps/deepstream-appsrc-test
Demonstrates AppSrc and AppSink usage for consuming and giving data from non DeepStream code respectively. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Cuda Appsrc and Appsink example
apps/sample_apps/deepstream-appsrc-cuda-test
Demonstrates how cuda frames acquired from outside DeepStream can be fed to a DeepStream pipeline.
Transfer learning example
apps/sample_apps/ deepstream-transfer-learning-app
Demonstrates a mechanism to save the images for objects which have lesser confidence and the same can be used for training further. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Smart Record example
apps/sample_apps/deepstream-testsr
Demonstrates event based smart record functionality. This app uses resnet18_trafficcamnet_pruned.onnx for detection.
Audio+video+Text Synchronization (Alpha)
apps/sample_apps/deepstream-avsync-app
Demonstrates synchronization of audio, video and text output from nvdsasr in DeepStream pipeline. Note: This application requires Riva ASR services to be available. Refer prerequisites in README before running the application. This app uses Jasper models for Speech Recognition.
DeepStream NMOS Application
apps/sample_apps/deepstream-nmos
This application demonstrates how to create a DeepStream app as an NMOS Node. It uses a library (NvDsNmos) which provides the APIs to create, destroy and internally manage the NMOS Node. The NMOS Node can automatically discover and register with an NMOS Registry on the network using the AMWA IS-04 Registration API.
It also shows how to create various Video and Audio pipelines, run them simultaneously and reconfigure them based on NMOS events such as AMWA IS-05 Connection API requests from an NMOS Controller.
DeepStream UCX test
apps/sample_apps/deepstream-ucx-test
Demonstrates how to use the communication plugin gst-nvdsucx with DeepStream SDK. The application has been validated with kernel-5.15.
DeepStream 3D Depth Camera Reference App
apps/sample_apps/deepstream-3d-depth-camera
Demonstrates how to setup depth capture, depth render, 3D-point-cloud processing and 3D-points render pipelines over DS3D interfaces and custom-libs of ds3d::dataloader, ds3d::datafilter and ds3d::datarender. See more details in DeepStream 3D Depth Camera App
DeepStream 3D Lidar Data Inferencing Reference App
apps/sample_apps/deepstream-lidar-inference-app
Demonstrates how to read in point cloud data, inference pont cloud data with pointpillar 3D objects detection model with Triton, render point cloud data and 3D objects with GLES. The whole application is based on DS3D interfaces and custom-libs of ds3d::dataloader, ds3d::datafilter and ds3d::datarender. See more details in DeepStream 3D Lidar Inference App
Deepstream Server Application
apps/sample_apps/deepstream-server
Demonstrates REST API support to control DeepStream pipeline on-the-fly.
DeepStream Can Orientation Sample App
apps/sample_apps/deepstream-can-orientation-app
Demonstrates can orientation detection with CV-based VPI template matching algorithm. VPI template matching is implemented with DeepStream video template plugin. See more details in apps/sample_apps/deepstream-can-orientation-app/README
Triton Ensemble Model Example
sources/TritonBackendEnsemble
Configuration files, Triton custom C++ backend implementation and custom library implementation for Triton ensemble model example. Demonstrates use of Triton ensemble models with gst-nvinferserver plugin and how to implement custom Triton C++ backend to access DeespStream metadata like stream ID using multi-input tensors.
deepstream-multigpu-nvlink-test
apps/sample_apps/deepstream-multigpu-nvlink-test
Uses gst-nvdsxfer plugin to simulate pipelines with NVLINK enabled multi-gpu setup to achieve better performance. User can use “position” param of nvxfer config section from dsmultigpu_config.yml file to simulate gst-nvxfer plugin supported various multi-gpu usecase pipelines.
deepstream-ipc-test-app
apps/sample_apps/deepstream-ipc-test-app
Demonstrates decoder buffer sharing IPC use-case on Jetson platform for live streams to optimize NVDEC HW utilization. This example uses IPC sink and IPC source element to interconnect GStreamer pipelines that run in different processes.