Forcing Deepstream to take the latest frame

• Hardware Platform (Jetson / GPU) GPU
• DeepStream Version Docker image: 5.1-21.02-triton
• JetPack Version (valid for Jetson only) NIL
• TensorRT Version
• NVIDIA GPU Driver Version (valid for GPU only) 460.91.03
• Issue Type( questions, new requirements, bugs) Question

I have a Deepstream pipeline that runs a lot slower than the input source (~3fps inference speed vs 30fps source framerate).
The current behaviour is to processes every input frame, regardless of how late the frame is with respect to real-time. However, as my application is latency sensitive, I want to change the behaviour to always take the latest frame possible.

I have tried to do this by adding a leaky queue of size 1 between the source and Deepstream elements but the problem still occurs, so I’m inclined to believe that the buffering is done within one of the Deepstream elements. What configuration can I change to force Deepstream to always take the latest available frame rather than buffer old frames?

Sorry for the late response, we will do the investigation soon.

There are several deepstream plugin which has bufferpool inside. There are some plugins which have functions to skip some frames. It depends on your pipeline and the bottleneck of your pipeline. E.G. If the slow pipeline is caused by nvinfer, you may consider “interval” property to make the speed to catch up to the source FPS. Gst-nvinfer — DeepStream 5.1 Release documentation

The interval property doesn’t give us the ideal desired behaviour, but we’ll continue testing it out.

How about the live-source property of streammux plugin? Will that signal the downstream plugins to only take the latest frame?