### Start Kafka Server and Create Topic Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_3D_MultiModal_Lidar_Camera_BEVFusion.html Sets up a Kafka server and creates a topic named 'quick-test' for messaging tests. This is part of the IoT messaging setup. ```bash $ docker run -p 9092:9092 apache/kafka:3.7.0 # start kafka server with port 9092 $ bin/kafka-topics.sh --create --topic quick-test --bootstrap-server localhost:9092 # creat topic 'quick-test' ``` -------------------------------- ### start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1GuardDataRender.html Starts the data rendering process with the given configuration and path. ```APIDOC ## start ### Description Initiates the data rendering process. This method configures and starts the underlying abiDataRender. ### Parameters * `const std::string &content`: The configuration content for the rendering process. * `const std::string &path`: An optional path for additional configuration or resources. ### Returns * `ErrCode`: The status code indicating the result of the operation. ``` -------------------------------- ### Setup Sample Data Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/Pipetuner-guide.html Unzip and run the setup script for sample data. Choose 'deepstream' or 'metropolis' based on your usage. ```bash $ unzip pipe-tuner-sample.zip $ cd pipe-tuner-sample/scripts $ # DeepStream or Metropolis Microservices users should run only one of the following two commands based on their usage $ bash setup.sh deepstream # DeepStream users $ bash setup.sh metropolis # Metropolis Microservices users ``` -------------------------------- ### Pipeline Control Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2service-maker_2includes_2pipeline_8hpp_source.html Methods for installing listeners, preparing, and starting the pipeline. ```APIDOC ## Pipeline Control ### Description Methods for installing listeners, preparing, and starting the pipeline. ### Methods - `Pipeline& install(std::function keyboard_listener)` - `int prepare()` - `int prepare(std::function listener)` - `Pipeline& start()` - `Pipeline& start(std::function listener)` ``` -------------------------------- ### Install Confluent Platform and Add Repository Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Installation.html Sets up the Confluent Platform repository and installs the platform. This is a prerequisite for installing librdkafka. ```bash sudo mkdir -p /etc/apt/keyrings wget -qO - https://packages.confluent.io/deb/8.0/archive.key | gpg \ --dearmor | sudo tee /etc/apt/keyrings/confluent.gpg > /dev/null CP_DIST=$(lsb_release -cs) echo "Types: deb URIs: https://packages.confluent.io/deb/8.0 Suites: stable Components: main Architectures: $(dpkg --print-architecture) Signed-by: /etc/apt/keyrings/confluent.gpg Types: deb URIs: https://packages.confluent.io/clients/deb/ Suites: ${CP_DIST} Components: main Architectures: $(dpkg --print-architecture) Signed-By: /etc/apt/keyrings/confluent.gpg" | sudo tee /etc/apt/sources.list.d/confluent-platform.sources > /dev/null sudo apt-get update && sudo apt-get install confluent-platform ``` -------------------------------- ### Compile and Install Gst-nvreplay Plugin Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvreplay.html Navigate to the plugin's source directory and use make to compile and install. Ensure you use sudo with make install for system-wide installation. ```bash cd deepstream/sources/gst-plugins/gst-nvreplay/ make && sudo -E make install ``` -------------------------------- ### Start DeepStream Docker Container Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_on_WSL2.html Starts the DeepStream Docker container with necessary privileges and configurations for GPU access and display forwarding. Requires x11-xserver-utils to be installed. ```bash $ sudo apt install x11-xserver-utils $ xhost + $ sudo docker run -it --privileged --rm --name=docker --net=host --gpus all -e DISPLAY=$DISPLAY -e CUDA_CACHE_DISABLE=0 -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics --device /dev/snd -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/deepstream:9.0-triton-multiarch ``` -------------------------------- ### Install and Configure Nginx for RTMP Server Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_AVSync.html Installs Nginx and the RTMP module, then configures it to serve live RTMP streams. This setup is necessary for simulating RTMP input streams. ```bash $ apt-get update $ apt-get install nginx -y $ apt-get install libnginx-mod-rtmp -y $ vim /etc/nginx/nginx.conf #add below content rtmp { server { listen 1935; chunk_size 4096; application live { live on; record off; } } } $ service nginx restart ``` -------------------------------- ### Run 12-Camera Example Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_MV3DT.html Execute the 12-camera synthetic warehouse dataset example. Ensure you have followed the prerequisite steps before running. ```bash sudo xhost + # Grant container access to display ./scripts/test_12cam_ds.sh ``` -------------------------------- ### start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classdeepstream_1_1NvDsTilerEventHandler.html Starts the tiler event handler, including creating the X window and starting event handler threads. ```APIDOC ## bool start() ### Description Starts the event handling mechanism for the tiler. This typically involves creating an X window for display and launching threads to handle keyboard and X events. ### Returns - **true** if the event handler started successfully. - **false** otherwise. ``` -------------------------------- ### Start Implementation Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1impl_1_1SyncImplDataLoader.html Abstract method to start the data loading process with specified content and path. Must be implemented by derived classes. ```APIDOC ## startImpl ### Description Abstract method to start the data loading process with specified content and path. Must be implemented by derived classes. ### Signature virtual ErrCode startImpl(const std::string &content, const std::string &path) = 0 ``` -------------------------------- ### DsExampleCtxInit Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/sources_2gst-plugins_2gst-dsexample_2dsexample__lib_2dsexample__lib_8h.html Initializes the DeepStream example context. This function should be called before any other example library functions. ```APIDOC ## DsExampleCtxInit() ### Description Initializes the DeepStream example context. ### Signature ```c DsExampleCtx* DsExampleCtxInit(DsExampleInitParams *init_params) ``` ### Parameters * `init_params` (DsExampleInitParams *) - Pointer to the initialization parameters structure. ``` -------------------------------- ### Example Mosquitto Config File Path Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmsgbroker.html An example of how to specify a configuration file path when running the Mosquitto broker. ```bash mosquitto -c /etc/mosquitto/mosquitto.conf ``` -------------------------------- ### start() Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classgstnvinfer_1_1DsNvInferImpl.html Starts the inference process. ```APIDOC ## NvDsInferStatus start() ### Description Starts the inference process. ### Returns - NvDsInferStatus - Status of the start operation. ``` -------------------------------- ### Run 4-Camera Example Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_MV3DT.html Execute the 4-camera synthetic warehouse dataset example. Ensure you have followed the prerequisite steps before running. ```bash sudo xhost + # Grant container access to display ./scripts/test_4cam_ds.sh ``` -------------------------------- ### install Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/functions_func_i.html Installs a component, likely within a pipeline. ```APIDOC ## install() ### Description Installs a component, likely within a pipeline. ### Signature install() : deepstream::Pipeline ``` -------------------------------- ### start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1GuardDataMixer.html Starts the data mixer with the specified configuration and path. ```APIDOC ## start ### Description Starts the data mixer, initializing it with the provided configuration content and an optional path. This method typically invokes `abiDataMixer::start_i(...)`. ### Parameters - **content** (const std::string&): The configuration content for the mixer. - **path** (const std::string&): An optional path related to the configuration. ### Returns - **ErrCode**: The status code indicating the result of the operation. ### Example ```cpp ErrCode c = guardMixer.start(configContent, configPath); DS_ASSERT(isGood(c)); ``` ``` -------------------------------- ### start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1GuardDataLoader.html Starts the data loading process with specified content and an optional path. ```APIDOC ## start() ### Description Initiates the data loading process, specifying the content to load and an optional file path. ### Signature `ErrCode ds3d::GuardDataProcess< abiDataLoader , >::start(const std::string & _content, const std::string & _path = "")` ### Parameters * `_content` (const std::string &) - The content identifier or data to load. * `_path` (const std::string &) - Optional path to the data source. ``` -------------------------------- ### Example AI Assistant Query Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_AI_Agent_Skill.html This is an example of a query you can ask your AI coding assistant to test the DeepStream skill installation. ```text Create a DeepStream pipeline that reads a video file and runs object detection using ResNet18 TrafficCamNet model. ``` -------------------------------- ### Example DeepStream Pipeline with Gst-nvstreammux Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_troubleshooting.html This is an example of a DeepStream pipeline that includes the Gst-nvstreammux plugin, which is required starting with DeepStream 4.0. ```bash Gst nvv4l2decoder --> Gst nvstreammux --> Gst nvinfer --> Gst nvtracker --> Gst nvmultistreamtiler --> Gst nvvideoconvert --> Gst nvosd --> Gst nveglglessink ``` -------------------------------- ### Starting the Civetweb Web Server Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2includes_2civetweb_8h_source.html Use mg_start to initialize and launch the Civetweb server. Provide a callback structure and configuration options. Ensure signal handlers for SIGCHLD and SIGPIPE are managed after calling this function if custom processing is needed. ```c const char *options[] = { "document_root", "/var/www", "listening_ports", "80,443s", NULL }; struct mg_context *ctx = mg_start(&my_func, NULL, options); ``` -------------------------------- ### mg_start2 Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2includes_2civetweb_8h.html Starts a Civetweb server instance with initialization data. ```APIDOC ## mg_start2 ### Description Starts a Civetweb server instance with initialization data. ### Signature ```c CIVETWEB_API struct mg_context * | mg_start2 (struct mg_init_data *init, struct mg_error_data *error) ``` ### Parameters * **init** (struct mg_init_data *) - Initialization data for the server. * **error** (struct mg_error_data *) - Structure to store error information. ``` -------------------------------- ### getBufOffset() Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classnvdsinferserver_1_1BaseBatchBuffer.html Gets the offset from the start of the memory allocation to the buffer pointer. ```APIDOC ## getBufOffset() ### Description Gets the offset from the start of the memory allocation to the buffer pointer. This is needed for sharing CUDA memory with Triton server. ### Signature `size_t nvdsinferserver::BaseBatchBuffer::getBufOffset(uint32_t _batchIdx) const` ### Implements nvdsinferserver::IBatchBuffer ### Reimplemented in nvdsinferserver::RefBatchBuffer, nvdsinferserver::BatchSurfaceBuffer, nvdsinferserver::SurfaceBuffer ### Definition `9.0/sources/libs/nvdsinferserver/infer_batch_buffer.h:100` ``` -------------------------------- ### Setup Files Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/sources_2apps_2sample__apps_2deepstream-transfer-learning-app_2image__meta__consumer_8h_source.html A private helper function responsible for setting up necessary output files, potentially creating or opening files for writing metadata. ```cpp bool setup_files(); ``` -------------------------------- ### Build and Install DeepStream Can Orientation App Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Can_Orientation.html Navigate to the application's source directory and use 'make' to build and 'make install' to install the DeepStream Can Orientation application. ```bash make make install ``` -------------------------------- ### start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classgstnvinferserver_1_1GstNvInferServerImpl.html Reads the configuration file and sets up the processing context for inference. ```APIDOC ## NvDsInferStatus start () ### Description Reads the configuration file and sets up processing context. ### Returns - NvDsInferStatus - Status of the operation. ``` -------------------------------- ### getBufOffset Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classnvdsinferserver_1_1CudaTensorBuf.html Gets the offset from the start of the memory allocation to the buffer pointer for a specific batch index. ```APIDOC ## size_t getBufOffset(uint32_t batchIdx) const ### Description Gets the offset from the start of the memory allocation to the buffer pointer for a specific batch index. This is an override from a base class. ### Parameters * **batchIdx** (uint32_t) - The index of the batch. ### Returns (size_t) The offset in bytes. ``` -------------------------------- ### Dsexample Plugin on dGPU Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_FAQ.html Example of using the dsexample plugin for full-frame processing on a dGPU. ```bash gst-launch-1.0 filesrc location = ./streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! m.sink_0 nvstreammux name=m width=1280 height=720 batch-size=1 ! nvinfer config-file-path= ./configs/deepstream-app/config_infer_primary.txt \ ! dsexample full-frame=1 ! nvvideoconvert ! nvdsosd ! nveglglessink sync=0 ``` -------------------------------- ### setup Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/functions_func_s.html Sets up the SensorFusionApp. ```APIDOC ## setup() ### Description Sets up the SensorFusionApp. ### Signature `setup() : SensorFusionApp` ``` -------------------------------- ### StartWithParams() Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classnvdsspeech_1_1IDSCustomLibrary.html Starts the custom speech library with specified creation parameters. This method is typically called during the library's setup phase. ```APIDOC ## StartWithParams() ### Description Starts the custom speech library with specified creation parameters. This method is typically called during the library's setup phase. ### Method virtual bool ### Parameters - **_params_** (DSCustom_CreateParams *): Pointer to the structure containing creation parameters. ### Response - **bool**: Returns true if the library started successfully with the given parameters, false otherwise. ``` -------------------------------- ### nvdsinferserver::BaseBatchBuffer::getBufOffset Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classnvdsinferserver_1_1ImageAlignBuffer.html Gets the offset from the start of the memory allocation to the buffer pointer. This is needed for sharing CUDA memory with the Triton server. ```APIDOC ## getBufOffset() ### Description Gets the offset from the start of the memory allocation to the buffer pointer. Needed for sharing CUDA memory with Triton server. ### Signature `size_t nvdsinferserver::BaseBatchBuffer::getBufOffset(uint32_t _batchIdx) const` ### Implements `nvdsinferserver::IBatchBuffer::getBufOffset` ### Reimplemented in `nvdsinferserver::RefBatchBuffer` `nvdsinferserver::BatchSurfaceBuffer` `nvdsinferserver::SurfaceBuffer` ### Definition `sources/libs/nvdsinferserver/infer_batch_buffer.h:100` ``` -------------------------------- ### Sample Pipeline: Preprocess in PGIE mode for Multi-stream (dGPU) Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdspreprocess.html Demonstrates a sample pipeline for preprocessing in PGIE mode for multiple streams on a dGPU. Ensure appropriate configuration file and library paths are set. ```bash gst-launch-1.0 filesrc location = /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 ! qtdemux ! \ h264parse ! nvv4l2decoder ! m.sink_0 nvstreammux name=m batch-size=4 width=1920 height=1080 ! nvvideoconvert ! \ nvdspreprocess config-file= /opt/nvidia/deepstream/deepstream/sources/gst-plugins/gst-nvdspreprocess/config_preprocess.txt ! \ nvinfer config-file-path= /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_infer_primary.txt \ input-tensor-meta=1 batch-size=8 ! nvmultistreamtiler width=1920 height=1080 ! nvvideoconvert ! nvdsosd ! nveglglessink \ filesrc location = /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! \ m.sink_1 filesrc location = /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! \ nvv4l2decoder ! m.sink_2 filesrc location = /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 ! qtdemux ! \ h264parse ! nvv4l2decoder ! m.sink_3 ``` -------------------------------- ### Install NVIDIA Driver 590.48.01 Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Installation.html Download and install the NVIDIA driver version 590.48.01. The commands change the file permissions and then run the installer, bypassing version checks. ```bash $ chmod 755 NVIDIA-Linux-x86_64-590.48.01.run $ sudo ./NVIDIA-Linux-x86_64-590.48.01.run --no-cc-version-check ``` -------------------------------- ### GET_FILE_PATH Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2apps_2apps-common_2includes_2deepstream__common_8h.html This macro is used to get the file path. It checks if the path starts with "file://" and adjusts the path accordingly. ```APIDOC ## Macro: GET_FILE_PATH ### Description This macro returns the file path, stripping the "file://" prefix if present. ### Macro Signature `GET_FILE_PATH(path)` ### Parameters * `path` (string) - The input file path. ### Value Returns the adjusted file path. ``` -------------------------------- ### initFrom Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/functions_func_i.html Initializes settings from a repository. ```APIDOC ## initFrom() ### Description Initializes settings from a repository. ### Signature initFrom() : nvdsinferserver::triton::RepoSettings ``` -------------------------------- ### GstAudio2VideoClass Structure Definition Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2gst-plugins_2gst-nvdsA2Vtemplate_2gstaudio2video_8h_source.html Defines the class structure for GstAudio2Video, containing virtual functions for setup, rendering, deciding allocation, and getting latency. ```c struct _GstAudio2VideoClass { /*< private >*/ GstElementClass parent_class; /*< public >*/ /* virtual function, called whenever the format changes */ gboolean (*setup) (GstAudio2Video * scope); /* virtual function for rendering a frame */ gboolean (*render) (GstAudio2Video * scope, GstBuffer * audio, GstVideoFrame * video); gboolean (*decide_allocation) (GstAudio2Video * scope, GstQuery *query); /* get latency of GstAudio2Video. It can be used while responding to latency * query at child class. */ GstClockTime (*get_latency) (GstAudio2Video * scope); }; ``` -------------------------------- ### BatchSurfaceBuffer::SurfaceBuffer::getBufOffset Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/sources_2libs_2nvdsinferserver_2infer__surface__bufs_8h_source.html Gets the offset from the start of the memory allocation to the buffer pointer for a given batch index. This is useful for understanding memory layout. ```APIDOC ## getBufOffset ### Description Get the offset from start of the memory allocation to the buffer pointer. ### Parameters * **batchIdx** (uint32_t) - The index of the buffer within the batch. ### Returns * size_t - The offset in bytes. ``` -------------------------------- ### start() Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1GuardDataProcess.html Initiates the data processing operation. It requires content and an optional path to start the process. ```APIDOC ## start() ### Description Starts the data processing operation with the given content and path. ### Method `ErrCode ds3d::GuardDataProcess< abiDataProcessorT >::start(const std::string & _content_, const std::string & _path_ = "") ### Parameters * `_content_` (const std::string &) - The content to process. * `_path_` (const std::string &) - Optional path for the content. Defaults to an empty string. ``` -------------------------------- ### mg_start2 Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/sources_2includes_2civetweb_8h_source.html Initializes and starts a Civetweb server instance. This function is experimental. ```APIDOC ## mg_start2 ### Description Initializes and starts a Civetweb server instance. ### Method `mg_start2` ### Parameters - `init` (struct mg_init_data *) - Initialization data, including callbacks and user data. - `error` (struct mg_error_data *) - Structure to store error information. ### Return Value Returns a pointer to the `mg_context` structure on success, or NULL on failure. ``` -------------------------------- ### getBufOffset Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classnvdsinferserver_1_1CudaTensorBuf.html Gets the offset from the start of the memory allocation to the buffer pointer. This is crucial for sharing CUDA memory with the Triton server and implements the IBatchBuffer interface. ```APIDOC ## getBufOffset() ### Description Gets the offset from the start of the memory allocation to the buffer pointer. This is crucial for sharing CUDA memory with the Triton server and implements the IBatchBuffer interface. ### Method Signature `size_t nvdsinferserver::BaseBatchBuffer::getBufOffset(uint32_t _batchIdx_) const` ### Parameters * `_batchIdx_` (uint32_t) - The index of the batch for which to get the buffer offset. ``` -------------------------------- ### MQTT Broker Configuration File Example Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmsgbroker.html This is an example configuration file for an MQTT broker. It includes settings for username, password, client ID, and TLS encryption options. ```ini [message-broker] username = user password = password client-id = uniqueID #enable-tls = 1 #tls-cafile = #tls-capath = #tls-certfile = #tls-keyfile = #share-connection = 1 #loop-timeout = 2000 #keep-alive = 60 ``` -------------------------------- ### setup Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/functions_s.html Sets up internal components or applications. Associated with _GstAudio2VideoClass and SensorFusionApp. ```APIDOC ## setup ### Description Sets up internal components or applications. ### Signature `setup : _GstAudio2VideoClass, SensorFusionApp` ``` -------------------------------- ### SurfaceBuffer::getBufOffset Method Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2libs_2nvdsinferserver_2infer__surface__bufs_8h_source.html Gets the offset from the start of the memory allocation to the buffer pointer for a given batch index. This is an override method from a base class. ```cpp size_t getBufOffset(uint32_t batchIdx) const override ``` -------------------------------- ### startImpl Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1impl_1_1BaseImplDataLoader.html Virtual method to start the implementation, taking content and path as arguments. This is a pure virtual function. ```APIDOC ## startImpl() ### Description Virtual method to start the implementation, taking content and path as arguments. ### Method Signature `virtual ErrCode ds3d::impl::BaseImplDataProcessor< abiDataLoader , >::startImpl(const std::string & _content_, const std::string & _path_)` ### Status Protected pure virtual inherited. ### Implemented In `ds3d::impl::lidarsource::LidarFileSourceImpl`. ``` -------------------------------- ### Run deepstream-audio Quick Start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_audio.html Navigate to the configuration directory and execute the deepstream-audio application with the specified configuration file to quickly test audio inference. ```bash cd /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-audio/configs deepstream-audio -c ds_audio_sonyc_test_config.txt ``` -------------------------------- ### GuardDataFilter Usage Example Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1GuardDataFilter.html Demonstrates the typical usage of GuardDataFilter for managing abiDataFilter. It shows how to take ownership, set callbacks, start, process data, and stop the filter. ```cpp abiRefDataFilter* rawRef = creator(); GuardDataFilter guardFilter(rawRef, true); // take the ownership of rawRef guardFilter.setUserData(userdata, [](void*){ ...free... }); guardFilter.setErrorCallback([](ErrCode c, const char* msg){ stderr << msg; }); ErrCode c = guardFilter.start(config, path); DS_ASSERT(isGood(c)); c = guardFilter.start(config, path); // invoke abiDataFilter::start_i(...) GuardDataMap inputData = ...; // prepare input data // invoke abiDataFilter::process_i(...) c = guardFilter.process(inputData, [](ErrCode c, const abiRefDataMap* d){ GuardDataMap outputData(*d); // output data processing std::cout << "output data processing starts" << std::endl; }, [](ErrCode c, const abiRefDataMap d){ GuardDataMap doneData(*d); std::cout << "input data consumed" << std::endl; }); DS_ASSERT(isGood(c)); //... wait for all data processed before stop c = guardFilter.flush(); c = guardFilter.stop(); // invoke abiDataFilter::stop_i(...) guardFilter.reset(); // destroy abiRefDataFilter, when all reference // destroyed, abiDataFilter would be freed. ``` -------------------------------- ### Running Generated DeepStream App (Docker) Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_AI_Agent_Skill.html Commands to run a DeepStream application within a Docker container. This includes starting the appropriate container and installing dependencies inside it. ```bash # x86_64 dGPU docker run -it --rm --runtime=nvidia --network=host --gpus all \ -v $(pwd):/app -w /app \ nvcr.io/nvidia/deepstream:9.0-triton-multiarch ``` ```bash # ARM SBSA (DGX Spark, GH200, GB200) docker run -it --rm --runtime=nvidia --network=host --gpus all \ -v $(pwd):/app -w /app \ nvcr.io/nvidia/deepstream:9.0-triton-sbsa-dgx-spark ``` ```bash pip install -r requirements.txt # if generated python3 .py [arguments] ``` -------------------------------- ### create_dsexample_bin Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2apps_2apps-common_2includes_2deepstream__dsexample_8h.html Creates a DeepStream DS Example bin. This function initializes and configures a DeepStream DS example component. ```APIDOC ## Function Documentation ## ◆ create_dsexample_bin() gboolean create_dsexample_bin | ( | NvDsDsExampleConfig * | _config_ , ---|---|---|--- | | NvDsDsExampleBin * | _bin_ | ) | | ### Description Creates a DeepStream DS Example bin. ### Parameters - **_config_** (NvDsDsExampleConfig *) - Pointer to the configuration structure. - **_bin_** (NvDsDsExampleBin *) - Pointer to the DS Example bin structure to be created. ``` -------------------------------- ### Download Riva Quick Start Package Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdsasr.html Downloads the Riva Quick Start package and navigates into the extracted directory. Ensure you have the NGC CLI configured. ```bash $ ngc registry resource download-version nvidia/riva/riva_quickstart:1.5.0-beta $ cd riva_quickstart_v1.5.0-beta ``` -------------------------------- ### Sample Pipeline: Preprocess in PGIE mode for single stream (dGPU) Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdspreprocess.html Demonstrates a sample pipeline for preprocessing in PGIE mode for a single stream on a dGPU. Ensure appropriate configuration file and library paths are set. ```bash gst-launch-1.0 filesrc location = /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 !qtdemux ! \ h264parse ! nvv4l2decoder ! m.sink_0 nvstreammux name=m batch-size=1 width=1920 height=1080 ! nvvideoconvert ! \ nvdspreprocess config-file= /opt/nvidia/deepstream/deepstream/sources/gst-plugins/gst-nvdspreprocess/config_preprocess.txt ! \ nvinfer config-file-path= /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_infer_primary.txt \ input-tensor-meta=1 batch-size=7 ! nvmultistreamtiler width=1920 height=1080 ! nvvideoconvert ! nvdsosd ! nveglglessink ``` -------------------------------- ### Gst-NvDsUcx Client Source Example (DS Node 2) Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdsucx.html This Gstreamer pipeline uses `nvdsucxclientsrc` to receive video data from a remote server and process it. Ensure the server is started before the client. ```bash gst-launch-1.0 nvdsucxclientsrc addr=192.168.100.1 port=4000 nvbuf-memory-type=2 num-nvbuf=4 buf-type=nvdsucx-buf-video ! \ 'video/x-raw(memory:NVMM),format=NV12,width=1920,height=1080,framerate=30/1' ! \ queue ! nvvideoconvert ! nvv4l2h264enc ! h264parse ! qtmux name=mux_0 ! \ filesink sync=1 async=0 qos=0 location=~/out_1080p.mp4 ``` -------------------------------- ### Gst-NvDsUcx Server Sink Example (DS Node 1) Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdsucx.html This Gstreamer pipeline uses `nvdsucxserversink` to send video data from a decoded source to a remote server. Ensure the server is started before the client. ```bash gst-launch-1.0 uridecodebin uri="file:///sample_1080p.mp4" async-handling=1 name=src1 src1. ! \ queue ! nvvideoconvert ! 'video/x-raw(memory:NVMM),format=NV12,width=1920,height=1080' ! \ nvdsucxserversink addr=192.168.100.1 port=4000 buf-type=nvdsucx-buf-video ``` -------------------------------- ### mg_start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/search/functions_d.html Starts the CivetWeb server. ```APIDOC ## mg_start ### Description Starts the CivetWeb server. ### Signature ```c struct mg_context *mg_start(const struct mg_callbacks *callbacks, void *user_data, const char **configuration_options) ``` ### Parameters - **callbacks** (const struct mg_callbacks *) - A structure containing callback functions. - **user_data** (void *) - User-defined data to be passed to callbacks. - **configuration_options** (const char **) - An array of configuration options. ``` -------------------------------- ### mg_start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2includes_2civetweb_8h.html Starts the Civetweb server with specified callbacks and configuration. ```APIDOC ## mg_start() CIVETWEB_API struct mg_context* mg_start(const struct mg_callbacks * _callbacks_, void * _user_data_, const char ** _configuration_options_) ``` -------------------------------- ### GuardDataLoader Usage Example Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1GuardDataLoader.html Demonstrates the typical usage of GuardDataLoader for managing an abiDataLoader instance. It shows how to take ownership, set user data and error callbacks, start, read, and stop the data loader. ```cpp abiRefDataLoader* rawRefLoader = creator(); GuardDataLoader guardLoader(rawRefLoader, true); // take the ownership of rawRefLoader guardLoader.setUserData(userdata, [](void*){ ...free... }); guardLoader.setErrorCallback([](ErrCode c, const char* msg){ stderr << msg; }); ErrCode c = guardLoader.start(config, path); DS_ASSERT(isGood(c)); c = guardLoader.start(config, path); // invoke abiDataLoader::start_i(...) GuardDataMap data; c = guardLoader.read(data); // invoke abiDataLoader::read_i(...) DS_ASSERT(isGood(c)); DS_ASSERT(data); ... // access data c = guardLoader.stop(); // invoke abiDataLoader::stop_i(...) guardLoader.reset(); // destroy abiRefDataLoader, when all reference // destroyed, abiDataLoader would be freed. ``` -------------------------------- ### GuardDataMixer Usage Example Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1GuardDataMixer.html Demonstrates the typical lifecycle and usage of GuardDataMixer, including ownership management, setting callbacks, starting, processing, flushing, and stopping operations. It shows how GuardDataMixer automatically manages the underlying abiRefDataMixer. ```cpp abiRefDataMixer* rawRef = creator(); GuardDataMixer guardMixer(rawRef, true); // take the ownership of rawRef guardMixer.setUserData(userdata, [](void*){ ...free... }); guardMixer.setErrorCallback([](ErrCode c, const char* msg){ stderr << msg; }); ErrCode c = guardMixer.start(config, path); DS_ASSERT(isGood(c)); c = guardMixer.start(config, path); // invoke abiDataMixer::start_i(...) GuardDataMap inputData = ...; // prepare input data // invoke abiDataMixer::process_i(...) c = guardMixer.process(inputData, [](ErrCode c, const abiRefDataMap* d){ GuardDataMap outputData(d); // output data processing std::cout << "output data processing starts" << std::endl; }, [](ErrCode c, const abiRefDataMap d){ GuardDataMap doneData(*d); std::cout << "input data consumed" << std::endl; }); DS_ASSERT(isGood(c)); //... wait for all data processed before stop c = guardMixer.flush(); c = guardMixer.stop(); // invoke abiDataMixer::stop_i(...) guardMixer.reset(); // destroy abiRefDataMixer, when all reference // destroyed, abiDataMixer would be freed. ``` -------------------------------- ### start_i Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1abiDataRender.html Initializes the data processor with configuration string and path. This is a pure virtual function. ```APIDOC ## start_i() ### Description Initializes the data processor with a configuration string and a file path. ### Signature `virtual ErrCode ds3d::abiProcess::start_i(const char * _configStr_, uint32_t _strLen_, const char * _path_)` ### Parameters * `_configStr_` (const char *) - The configuration string. * `_strLen_` (uint32_t) - The length of the configuration string. * `_path_` (const char *) - The path for initialization. ### Remarks This is a pure virtual function inherited by various implementations. ``` -------------------------------- ### Function Prototypes Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/sources_2apps_2audio__apps_2deepstream__asr__tts__app_2deepstream__asr__tts__app_8h_source.html Declarations for functions used in the DeepStream ASR TTS application, covering pipeline creation, renderer pipeline creation, pipeline starting, pipeline destruction, getting the number of sources, and parsing configuration files. ```c int create_pipeline(AppCtx *appctx, int stream_num, StreamCtx *sctx, GstElement **p_proxy_audio_sink); int create_renderer_pipeline(AppCtx *appctx); int start_pipeline(int stream_num, StreamCtx *sctx); int destroy_pipeline(StreamCtx *sctx); guint get_num_sources (gchar *cfg_file_path); g gboolean parse_config_file (AppCtx *appctx, gchar *config_file); ``` -------------------------------- ### DsExampleCtxInit Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2gst-plugins_2gst-dsexample-cuda_2dsexample__lib_2dsexample__lib_8h.html Initializes the DeepStream example context with the provided parameters. ```APIDOC ## DsExampleCtxInit() ### Description Initializes the DeepStream example context. ### Signature DsExampleCtx* DsExampleCtxInit(DsExampleInitParams *init_params) ### Parameters - **init_params** (*DsExampleInitParams* *) - Pointer to the initialization parameters. ``` -------------------------------- ### Get Message Broker Protocol Name Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmsgbroker.html Obtain the name of the underlying protocol used by the adapter library. Examples include "KAFKA", "AMQP", "AZURE_DEVICE_CLIENT", and "AZURE_MODULE_CLIENT". ```c char *nvds_msgapi_get_protocol_name(void); ``` -------------------------------- ### Install MQTT Dependencies: ssl Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmsgbroker.html Install the SSL development libraries required for the MQTT protocol adapter. ```bash sudo apt-get install libssl-dev ``` -------------------------------- ### GuardDataBridge Usage Example Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1GuardDataBridge.html Demonstrates the typical usage of GuardDataBridge for managing abiDataBridge operations, including setting user data, error callbacks, starting, processing, flushing, and stopping the bridge. It also shows how the bridge handles resource management automatically. ```cpp abiRefDataBridge* rawRef = creator(); GuardDataBridge guardFilter(rawRef, true); // take the ownership of rawRef guardFilter.setUserData(userdata, [](void*){ ...free... }); guardFilter.setErrorCallback([](ErrCode c, const char* msg){ stderr << msg; }); ErrCode c = guardFilter.start(config, path); DS_ASSERT(isGood(c)); c = guardFilter.start(config, path); // invoke abiDataBridge::start_i(...) GuardDataMap inputData = ...; // prepare input data // invoke abiDataBridge::process_i(...) c = guardFilter.process(inputData, [](ErrCode c, const abiRefDataMap* d){ GuardDataMap outputData(*d); // output data processing std::cout << "output data processing starts" << std::endl; }, [](ErrCode c, const abiRefDataMap d){ GuardDataMap doneData(*d); std::cout << "input data consumed" << std::endl; }); DS_ASSERT(isGood(c)); //... wait for all data processed before stop c = guardFilter.flush(); c = guardFilter.stop(); // invoke abiDataBridge::stop_i(...) guardFilter.reset(); // destroy abiRefDataBridge, when all reference // destroyed, abiDataBridge would be freed. ``` -------------------------------- ### Custom Message Properties Example Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmsgbroker.html Example of how to specify multiple custom key-value pairs for MQTT messages. ```ini custom_msg_properties = ex2: key1=value1;key2=value2;key3=value3; ``` -------------------------------- ### SensorFusionApp::setup Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classSensorFusionApp.html Initializes the SensorFusionApp with a configuration path and a window closed callback. ```APIDOC ## SensorFusionApp::setup ### Description Initializes the SensorFusionApp with a configuration path and a window closed callback. ### Signature ```cpp ErrCode SensorFusionApp::setup(const std::string & _configPath_, std::function< void()> _windowClosed_) ``` ### Parameters * **_configPath_** (const std::string &) - The path to the configuration file. * **_windowClosed_** (std::function< void()>) - A callback function to be executed when the window is closed. ``` -------------------------------- ### Install System Dependencies Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Libraries.html Execute the provided script to install necessary system packages for DeepStream Libraries. ```bash sudo sh scripts/install_sys_pkgs.sh ``` -------------------------------- ### Install Azure Adapter Dependencies (Ubuntu 24.04) Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmsgbroker.html Installs required dependencies for Azure adapters on Ubuntu 24.04. ```bash sudo apt-get install -y libcurl3 libssl-dev uuid-dev libglib2.0 libglib2.0-dev ``` -------------------------------- ### mg_start2 Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2includes_2civetweb_8h.html Initializes and starts a Civetweb web server context with specified initialization and error data. ```APIDOC ## mg_start2() CIVETWEB_API struct mg_context* mg_start2(struct mg_init_data *_init_, struct mg_error_data *_error_) ``` -------------------------------- ### mg_start2 Function Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/sources_2includes_2civetweb_8h_source.html Starts a Civetweb server instance with the provided initialization data. This function is experimental. ```c CIVETWEB_API struct mg_context * mg_start2(struct mg_init_data *init, struct mg_error_data *error); ``` -------------------------------- ### Navigate to Sample App Directory Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_3D_MultiModal_Lidar_Camera_V2XFusion.html Change the current directory to the sample application's root folder. Grant read/write permissions if necessary, especially when running on a Jetson host. ```bash cd /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-3d-lidar-sensor-fusion # sudo chmod -R a+rw . # Grant read/write permission if running on Jetson host ``` -------------------------------- ### Verify Ubuntu Installation in WSL Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_on_WSL2.html Checks if Ubuntu has been successfully installed and is recognized by WSL. If not found, re-run the install command. ```bash $ wsl --list ``` -------------------------------- ### Installing GStreamer Prerequisites Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_FAQ.html Installs essential packages required for compiling and installing newer versions of GStreamer on a Debian-based system. ```bash apt-get install python3-pip pip3 install meson pip3 install ninja apt-get install libmount-dev apt-get install flex apt-get install flex bison apt-get install libglib2.0-dev ``` -------------------------------- ### mg_start2 Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/sources_2includes_2civetweb_8h_source.html Starts the Civetweb server with initialization data and error handling. ```APIDOC ## mg_start2 ### Description Starts the Civetweb server with initialization data and error handling. ### Signature ```c CIVETWEB_API struct mg_context * mg_start2(struct mg_init_data *init, struct mg_error_data *error) ``` ### Parameters * **init** (struct mg_init_data *) - Pointer to initialization data. * **error** (struct mg_error_data *) - Pointer to structure for error information. ### Return Value Returns a pointer to the created context on success, or NULL on failure. ``` -------------------------------- ### Install MQTT Dependencies: mosquitto Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmsgbroker.html Install the mosquitto client library and broker, which are dependencies for the MQTT protocol adapter. ```bash sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa sudo apt-get update sudo apt-get install libmosquitto-dev mosquitto ``` -------------------------------- ### DsExampleCtxInit Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2gst-plugins_2gst-dsexample_2dsexample__lib_2dsexample__lib_8h_source.html Initializes the library context for dsexample operations. It takes initialization parameters and returns a context pointer. ```APIDOC ## DsExampleCtxInit ### Description Initializes the library context. Requires `DsExampleInitParams` as input and returns a pointer to the initialized `DsExampleCtx`. ### Signature DsExampleCtx * DsExampleCtxInit (DsExampleInitParams *init_params) ### Parameters * **init_params** (*DsExampleInitParams* *) - Pointer to a structure containing initialization parameters such as processing width and height. ``` -------------------------------- ### Set Up Inference Builder Virtual Environment Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Inference_Builder.html Creates and activates a Python virtual environment, then installs dependencies using pip. Ensure you are in the cloned repository directory. ```bash cd inference_builder git submodule update --init --recursive python3 -m venv .venv source .venv/bin/activate pip3 install -r requirements.txt ``` -------------------------------- ### Start Custom Dataloader Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_3D_Custom_Manual.html Manually starting a custom dataloader using the GuardDataLoader interface. This is an alternative to automatic starting via a Gst-pipeline. ```cpp GuardDataLoader dataloader = loaderSrc.customProcessor; ErrCode c = dataloader.start(); ``` -------------------------------- ### Start and Wait for Pipeline Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_service_maker_python_into_to_pipeline_api.html This snippet shows how to start a pipeline defined by a YAML configuration file and wait for its completion. Ensure the 'my_config.yaml' file exists and is correctly configured. ```python Pipeline(name="sample-pipeline", config_file="my_config.yaml").start().wait() ``` -------------------------------- ### start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1GuardDataBridge.html Starts the GuardDataBridge with specified content and path. ```APIDOC ## start ErrCode start(const std::string &content, const std::string &path="") Starts the GuardDataBridge with specified content and path. Parameters: - content: The content string for starting the bridge. - path: The path string (optional). Returns: - ErrCode: The status code of the operation. Example Usage: ```cpp ErrCode c = guardFilter.start(config, path); DS_ASSERT(isGood(c)); ``` Definition at line 100 of file databridge.hpp. ``` -------------------------------- ### Build Custom Sequence Preprocess Library and Application Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_3D_Action.html Navigate to the application source directory and run 'make' followed by 'make install' to build the custom sequence preprocess library and application. Check the source code for implementation details of other order formats. ```bash $ make $ make install ``` -------------------------------- ### Build and Install deepstream-lidar-inference-app Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_3D_Lidar_Inference.html Commands to build and install the deepstream-lidar-inference-app from source. Ensure you are in the application's source directory. ```bash sudo make sudo make install ``` -------------------------------- ### start_i() Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/classds3d_1_1impl_1_1SyncImplDataLoader.html Initializes the data processor with configuration string, length, and path. This is an overloaded method, with this specific signature likely used for certain initialization scenarios. ```APIDOC ## start_i() [1/2] ### Description Initializes the data processor with configuration string, length, and path. ### Signature `ErrCode ds3d::impl::BaseImplDataProcessor< abiDataLoader , >::start_i(const char * _configStr_, uint32_t _strLen_, const char * _path_) ` ### Remarks Implements `ds3d::abiProcess`. ### Definition File: `sources/includes/ds3d/common/impl/impl_dataprocess.h`, Line: 50 ``` ```APIDOC ## start_i() [2/2] ### Description Initializes the data processor with configuration string, length, and path. This overload is identical to the first in terms of parameters and purpose. ### Signature `ErrCode ds3d::impl::BaseImplDataProcessor< abiDataLoader , >::start_i(const char * _configStr_, uint32_t _strLen_, const char * _path_) ` ### Remarks Implements `ds3d::abiProcess`. ### Definition File: `9.0/sources/includes/ds3d/common/impl/impl_dataprocess.h`, Line: 50 ``` -------------------------------- ### Install DeepStream SDK using Debian Package Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Installation.html Installs the DeepStream SDK by directly installing a Debian package file using the apt-get package manager. ```bash sudo apt-get install ./deepstream-9.0_9.0.0-1_arm64.deb ``` -------------------------------- ### Sample Pipeline: Preprocess in PGIE mode for Multi-stream (Jetson) Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdspreprocess.html Demonstrates a sample pipeline for preprocessing in PGIE mode for multiple streams on a Jetson device. Ensure appropriate configuration file and library paths are set. ```bash gst-launch-1.0 filesrc location = /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 ! qtdemux ! \ h264parse ! nvv4l2decoder ! m.sink_0 nvstreammux name=m batch-size=4 width=1920 height=1080 ! nvvideoconvert ! \ nvdspreprocess config-file= /opt/nvidia/deepstream/deepstream/sources/gst-plugins/gst-nvdspreprocess/config_preprocess.txt ! \ nvinfer config-file-path= /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_infer_primary.txt \ input-tensor-meta=1 batch-size=8 ! nvmultistreamtiler width=1920 height=1080 ! nvvideoconvert ! nvdsosd ! nv3dsink \ filesrc location = /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! \ m.sink_1 filesrc location = /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! \ nvv4l2decoder ! m.sink_2 filesrc location = /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 ! qtdemux ! \ h264parse ! nvv4l2decoder ! m.sink_3 ``` -------------------------------- ### mg_start Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/sdk-api/9_80_2sources_2includes_2civetweb_8h_source.html Starts the Civetweb server with specified callbacks, user data, and configuration options. ```APIDOC ## mg_start ### Description Starts the Civetweb server. ### Method CIVETWEB_API ### Endpoint N/A (Function Call) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```c struct mg_context *mg_start(const struct mg_callbacks *callbacks, void *user_data, const char **configuration_options) ``` ### Response #### Success Response (200) Returns a pointer to the `mg_context` structure on success. #### Response Example ```c struct mg_context * ``` ```