Nvmedia producer with multicast

Please provide the following info (check/uncheck the boxes after creating this topic):
Software Version
[yes] DRIVE OS Linux 5.2.6
DRIVE OS Linux 5.2.6 and DriveWorks 4.0
DRIVE OS Linux 5.2.0
DRIVE OS Linux 5.2.0 and DriveWorks 3.5
NVIDIA DRIVE™ Software 10.0 (Linux)
NVIDIA DRIVE™ Software 9.0 (Linux)
other DRIVE OS version

Target Operating System
[yes] Linux

Hardware Platform
NVIDIA DRIVE™ AGX Xavier DevKit (E3550)
[yes] NVIDIA DRIVE™ AGX Pegasus DevKit (E3550)

SDK Manager Version

Host Machine Version
[yes] native Ubuntu 18.04

My current project is to obtain camera data from SIPL and send the data to multiple consumers through producer created by NVStream. The problem is that if you use the multicast module, you have to know the exact number of consumers, and those consumers need to be connected to the Musticast module. In this way, they can communicate with the producer.

If a consumer interrupts and its data is not received at the same time.

My question is whether there is a way to create a Musticast that supports dynamic connectivity. Whenever a consumer is connected or disconnected, there is no impact on pipeline or other applications

Dear @user24893,
whether there is a way to create a Musticast that supports dynamic connectivity

Unfortunately, the request can not served by multicast. NvStreams makes use of inter process communication. So there as to be entries of IPC end points in /etc/nvsciipc.cfg for each communication.

I think you may have to try socket programming to share camera data across producer and consumer for your case. Please check DriveWorks SDK Reference: Inter-process Communication (IPC) Sample

Thank you for your reply. We have another way to solve this problem, by using nvStream. Here is my software framework. But there are other problems.

Compoist: get the image data, do some work such as timestamp alignment, and send the original image data to producer.
Producer: use singlecast to communicate with consumer. At the same time, call NvMedia2DBlitEx () to convert the original data into the desired image format, and send the data to consumer in package.

Here are my problems:

  1. There are two consumer connected to my service.
  2. The time for each consumer to process a graph is 20ms, but when the consumer of two processes runs at the same time, it will lead to longer processing time. Sometimes more than 40ms.
    This causes my pipeline to block and the nvsipl pipeline side displays “NOTIF_WARN_ICP_FRAME_DROP”.