Vi2: low latency mode


I’m using a custom camera with triggered image acquisition at Jetson Nano.
By default, there is a delay of two frames due to the ring buffer in vi_channel.c.
The low latency mode (v4l2-ctl -c low_latency_mode=1) solves the delay.

Now I wonder why low latency mode is not the default.

Looking at vi2_fops.c I basically just see the following differences:

  1. In default mode, there is only one kthread that handles capturing and releasing buffers to user space.
    In low latency mode, there are two kthreads: one for capturing frames and one for releasing buffers to user space.
  2. In default mode, frames are placed into a ring buffer and released with a two frames delay.
    In low latency mode frames are released as soon as MW_ACK_DONE syncpt is reached (so when frame is written to memory as far as I understand).

These differences don’t seem problematic to me.

So do I miss anything important?
Are there any disadvantages when using low latency mode in comparison to the default mode?


This mode was implement later and didn’t verify the stability enough to change it as default.
You can change the default value if there’s no any problem for your sensors.

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