Skip to content

[Bug]: Loss of frames from NDI-HX camera when "Low Latency (Experimental)" mode is selected #851

@congoblue

Description

@congoblue

Operating System Version

Windows 10

OBS Version

Currently using 29.0.2 but was the same on earlier versions

NDI Tools Version

5.5.3.0 (Any NDI5 version)

Describe the bug

When the NDI-HX source is set to "Low Latency (Experimental)", OBS may drop every 3rd or 4th frame from the source causing jerky video. This happens intermittently, the source may run smoothly for a time before becoming jerky. After a time it may run smoothly again. Does not appear related to CPU or GPU load. Tested on isolated network with just NDI-HX camera, gigabit switch and OBS machine (no internet).

I enable this mode because in "Safe" latency mode, the latency appears to be variable which causes problems with audio sync.

Steps to reproduce

This may be dependent on NDI source and/or OBS machine specs. I am using HuddlecamHD-NDI camera, Windows 10 laptop with i7, Nvidia 1650Ti graphics. May be different for full NDI and NDI-HX.

  1. Set up camera source to be high bandwidth for testing (e.g. 1080p60 @ 16mbps CBR)
  2. Create NDI source set to "Low latency" mode, no hardware acceleration.
  3. Make a recording of a moving object on OBS.
  4. Play back the recording on a player which can do single step frames
  5. Observe that some frames are repeated then there is a jump to the next frame.

Expected behavior

All frames should be received as transmitted.

Screenshots

No response

Additional context

See #848
This appears to be due to obs_source_set_async_unbuffered() being set to True when the "Low latency" mode is enabled.
If this is set to False, then the frame drop does not occur, at the cost of 2 or 3 frames more latency, but still better than "Safe" latency mode.

It would be good to add an option in the source select UI to allow this option to be enabled (for absolute minimum latency) or disabled (for low latency but safe). I have made a test version of this and could submit as PR. Or perhaps offer 3 options in the latency box, "Safe" "Low" and "Minimum (experimental)" where "Low" sets the NDI-SDK to low latency but keeps the OBS frame buffering enabled.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions