NvMOT_RemoveStreams in Custom Low Level Tracker Library

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) Jetson
• DeepStream Version 5.0
• JetPack Version (valid for Jetson only)
• TensorRT Version 7.1
• NVIDIA GPU Driver Version (valid for GPU only)
• Issue Type( questions, new requirements, bugs) Question
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)
• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)

I have a custom low level tracker library implementation for the gst-nvdstracker plugin. I have enabled/set pQuery->supportbatchprocessing = true in the NvMOT_Query() implementation. I have also implemented NvMOT_RemoveStreams() to clean up resources internal to the tracker when a stream is removed/unavailable for further processing but other streams in the batch are available.

I’m using video files as sources for my deepstream-app pipeline that performs object detection on a batch of N streams and the custom low level tracker library operates on the detected objects and the tracked objects are displayed using nvosd. The video sources are all varying lengths so the input streams for the deepstream app terminate at different times. I was expecting the gst-nvtracker plugin to call the NvMOT_RemoveStreams() implementation of the low level library when the video sources are exhausted but I don’t see that happening. I would like to understand if this is the expected behavior when using file sources for video or if something is not working right.


The tracker plugin in DS 5.0 or 5.1 doesn’t currently explicitly call NvMOT_RemoveStreams() even if the stream ended. I would suggest to stay tuned with the upcoming DS 6.0 GA release as it may have a different behavior for that.

1 Like

Thanks for the response. Good to know this information. Will keep an eye for the next Deepstream release for this functionality.

Hi, How can we know if a stream is ended else how can I implement custom tracker with batch processing for varying length input streams

Hello Salini,

Based on the response from Nvidia regarding NvMOT_RemoveStreams() there’s no direct way of knowing if a particular stream has ended till we receive future updates of DS. You will have to design your own stream management logic where NvMOT_Process() is called but a particular streamID you saw in frame t is not observed in frames t+1 and so on, to determine if a given stream is inactive. Hope this helps.


1 Like

Hi, Thank you for helping me, It worked and I got rid of all the crosstalks

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.