- Hardware Platform (GPU):
- DeepStream Version: 6.3
- NVIDIA GPU Driver Version: 535.183.06
- Issue Type: Questions
DeepStream Pipeline Issue: Displaying Side-by-Side RGBA and OSD Streams
Hello,
I am working on a DeepStream pipeline where I need to display each stream’s output in separate pop-up windows. My pipeline structure is as follows:
[some plugins] -> tee -> ofvisual ->
-> osd ->
Pipeline Overview:
- Some Plugins: These plugins output batched streams.
ofvisual
: This plugin converts the attached motion vectors to RGBA frames for each stream.nvdsosd
: This plugin draws bounding boxes for each stream.
Objective:
I aim to create a pop-up window for each stream, split into two sections:
- Left Side: Displays the RGBA frames generated by
ofvisual
. - Right Side: Displays the OSD frames with bounding boxes.
The goal is to have these two outputs tiled side by side for each stream in the same window.
Request:
I’m seeking guidance on implementing this in DeepStream. Specifically, I would appreciate advice on:
- Best practices for tiling the RGBA and OSD outputs side by side within the same window.
Any suggestions or examples would be greatly appreciated!
Approaches Tried:
1. Pipeline with nvstreamdemux
and nvmultistreamtiler
some plugins -> tee -> queue -> nvofvisual -> nvstreamdemux (src_0) -> nvstreammux -> nvmultistreamtiler
-> queue -> nvdsosd ----> nvstreamdemux (src_0)
Issue: This approach results in synchronization problems. Only one part of the output (either flow motion or OSD) is shown, depending on the order of linkage in the code. I attached a probe on the sink pads of each nvstreamdemux
to confirm the synchronization issue, and only one branch receives a buffer, as indicated by the probe output.
2. Pipeline with Tiler Configuration
nvstreamdemux ----(stream_0)-----> tee -> queue -> ofvisual -> nvstreammux -> tiler -> bins
-> queue -> nvdsosd ->
nvstreamdemux ----(stream_1)-----> tee -> queue -> ofvisual -> nvstreammux -> tiler -> bins
-> queue -> nvdsosd ->
Issue: This approach works for a single stream, but when adding another stream, the nvmultistreamtiler
reconfigures to a (1x3) layout upon receiving an event for the added stream, even if it was pre-configured. Attempting to reconfigure it at runtime has no effect.
Note: All nvmultistreamtiler
instances were configured to (1x2).
3. Pipeline with Compositor
nvstreamdemux ----(stream_0)-----> tee -> queue -> ofvisual -> compositor -> some sink bins
-> queue -> nvdsosd ->
nvstreamdemux ----(stream_1)-----> tee -> queue -> ofvisual -> compositor -> some sink bins
-> queue -> nvdsosd ->
Issue: This approach works fine for individual streams, but adding multiple streams leads to a significant drop in FPS, indicating a bottleneck. I also tried replacing the compositor with glvideomixer
, but the FPS drop persisted with multiple streams.
Any insights or solutions to these issues would be greatly appreciated!