The NDI timecode values for receiving interlaced streams seem incorrect.

brianjford

New member
We are receiving an NDI stream of 1080i/59.94. Each frame should be 333667 apart on the 100ns timecode values (33.3ms); however we are not seeing that.
We get different results depending on if we use NDIlib_recv_color_format_fastest or NDIlib_recv_color_format_BGRX_BGRA.

When using NDIlib_recv_color_format_BGRX_BGRA, each interleaved frame we receive has a timecode difference of 667334 (66ms, twice as long as I expect).

When using NDIlib_recv_color_format_fastest we receive discrete fields and the timestamp difference between for the upper field we receive is 166883 (which is correct), but then the lower field has a timestamp difference of 500501 (when it should also be 166883, 16.6ms).

The sender is not specifying the timecode value directly but is allowing NDI SDK to synthesize it.
We are using NDI 5 libraries.


Hope someone can help.
Thanks
 
This thread is a year old, but I believe it's related to the discussion on this thread.

Given that it's a year later:
  • Have you been able to resolve the issue with later SDKs (or with any code changes)?
  • Do you see this regardless of other settings, or only in lowest-latency mode? (I see it in lowest-latency mode, but not otherwise - which isn't actually helpful as my application is very latency-sensitive.)
  • Have you tried earlier SDKs? I'm still using SDK 4.6.2 in order to avoid this issue.
 
Useful Info
- Timecode and Timestamps in NDI are 2 different things.
- NDI generally sets the timestamps as frames are sent from the sender you are receiving from, at the time the data is sent out
- NDI does not set timecode (unless the app explicitly tells it to synthesise) otherwise the timecode values are set by the sending device. It may be that device is sending invalid timecode
- In some modes and some devices when sending interleaved NDI data, the NDI send function will emit both fields close together with a long gap until the next field pair (almost 1 full frame)
- When using the BGRA mode, unless you set "allow fields", you will get frame based data, BOB Deinterlaced.
 
Back
Top