NVOF Gstreamer pipeline lags with camera input

Hello!

I’m currently trying to demo the nvof gstreamer pipeline based on the deepstream sample (as found in /opt/nvidia/deepstream/deepstream-5.1/sources/apps/sample_apps/deepstream-nvof-test).

The executable runs great from url sources. But when I modify the input to be ‘nvarguscamerasrc’, the performance drops.

Here is a minimal example with command line pipelines:

  • gst-launch-1.0 videotestsrc is-live=true ! nvvideoconvert ! 'video/x-raw(memory:NVMM)' ! m.sink_0 nvstreammux name=m width=640 height=480 batch-size=1 batched-push-timeout=34000 ! nvof ! nvofvisual ! nvoverlaysink → works great
  • gst-launch-1.0 nvarguscamerasrc bufapi-version=1 ! nvoverlaysink → works great
  • gst-launch-1.0 nvarguscamerasrc bufapi-version= 1 ! m.sink_0 nvstreammux name=m width=640 height=480 batch-size=1 batched-push-timeout=34000 ! nvof ! nvofvisual ! nvoverlaysink → very bad performance

Do you have any idea where this might come from? I’ve tried to tinker with the nvarguscamerasrc capabilities, with no luck to this point.

Thanks,
Mickaël

Hi,
Please try nvoverlaysink sync=0.

Thanks a lot, that is way better now.

I still wonder, however, why this is necessary? Frames arrive in order in any case, why should synchronization change anything? Is it an artifact due to the use of the multiplexer?

Hi,
It is synchronization mechanism in gstreamer frameworks. Since the source is camera source, it offers frames in steady framerate and it should be fine to disable the mechanism. Or you may try to set ts-offset to nvoverlaysink. Please refer to
Video is jittery through "capture/encode/decode/render" in the same gstreamer pipeline - #9 by DaneLLL