Analysis
Version 6.1
Introduction
The Analysis tool enables expert users to analyze the performance of NDI network connections by providing key statistics that would otherwise be difficult to recover separately. It offers detailed information about the sources available on a network and their connection types, making it a valuable tool for debugging systems and identifying the root causes of potential issues.
Disclaimers
"There are three kinds of lies: lies, damned lies, and statistics." (Mark Twain, Benjamin Disraeli, et al)
In general, if you donβt actually see a problem, you donβt need this tool.
Analysis is capable of identifying deviations that are, for all practical purposes, meaningless. Much ado about (very, very slightly more than) nothing is effectively time and effort wasted. The Analysis tool is provided to help you better diagnose and understand network issues. While it produces a deluge of detail about network connections and NDI streams, the human eye is by far the best arbiter of video performance and quality.
Ultimately your eye provides a superior real-time analysis, and one which is inherently more tolerant. In certain cases when subjective issues are visible, lower-level analysis of the root problem may be required to understand the underlying factors. While we would love to help every user with every problem, the sheer numbers of those populating βthe NDI nationβ make this quite impossible. We do, however, offer professional services to those who need assistance in diagnosing issues or help with large scale, complex NDI networking issues.
You can always reach out to support here or visit our community forums here.
Finding All Sources on the Network
Analysis can be used in order to locate NDI sources on the local network. To achieve this you would run:
NDIAnalysis.exe /find
Because it might take a few seconds to locate all sources on a network, you can specify a timeout β i.e., how long Analysis should scan the network. The default timeout is 5 seconds, but you can specify any number you wish. The following example invokes a 10 second time out for locating sources:
NDIAnalysis.exe /find /time:10
If you need to quit, press CTRL+C to cause Analysis to exit
By default Analysis will only only locate sources that are in the Public group. To find sources in other groups, one or more groups can be specified to locate sources in:
NDIAnalysis.exe /find:"Cameras"
NDIAnalysis.exe /find:"Public,Studio 1"
Example output from the finder is outlined below.
Getting Source Statistics
Analysis implements a special version of NDI that will receive all data from a source, and provide diagnosis on that data. It is important to know that Analysis does not decode any data. This means that the CPU performance of the host machine on does not significantly impact the results shown. Analysis can thus be considered to correctly measure stream details as they might be received in an ideal receive instance. That is, only up-stream CPU performance, network, network infra-structure and machine network performance have an impact on the results.
To perform an analysis of a source you could enter the following:
NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)"
Don't forget to press CTRL+C to exit quickly. Otherwise, to limit the duration of the analysis to just one minute, you could enter the following:
NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /time:60
By default, Analysis will request the video stream to be in high bandwidth mode. High bandwidth mode is the full resolution and best quality mode for the video stream. If you wish to run analysis in low bandwidth mode, you could enter the following:
NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /lowQ
The Analysis tool also has a frame checker mode, by default this is disabled. This is mostly useful when there is a suspected corruption in the video bitstream. To enable the frame checker mode, you could enter the following:
NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /framecheck
Normally Analysis will output statistics about both the video and audio data from a source. It can be restricted to video only or audio only, for example:
NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /videoonly
NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /audiooonly
All of the above modes can be used together. The following is an example run of NDI analysis application with all of the fields described in the notes, along with comments on the meaning and interpretation of the information provided.
Source Color Information and HDR
In frame checker mode (see above), NDIAnalysis will also output any NDI color information if present. For example:
To reduce clutter in the output, color information is only shown when its status changes rather than on every frame.
If the source is HEVC compressed, then frame checker mode can be used to determine if the video uses 8-bit (SDR) or 10-bit (HDR) color values. NDIAnalysis will usually output this when a keyframe in an HEVC stream is received:
12:16:39.748: HEVC frame with timecode 0 is a keyframe and indicates a bitdepth of 10 bits
but may also output the bitdepth on other frames where an SPS element is found with bitdepth information in it.
Understanding Performance
Analysis now includes the ability to write out a CSV file that includes information about the timing of every video frame captured. This is enabled at the command line with the following example:
NDIAnalysis.exe /source:"My Source (Channel 1)" /csvvideo:"my source.csv" /time:120
This will then write out a file called βmy source.csvβ that will include a huge list of every video frame received, the time at which it was received and the details of every frame. An example of this output is illustrated below.
Audio frames can also be captured, for example:
NDIAnalysis.exe /source:"My Source (Channel 1)" /csvaudio:"my source.csv" /time:120
Video and audio frames can be captured together, as long as separate files are used:
NDIAnalysis.exe /source:"My Source (Channel 1)" /csvvideo:"my video source.csv" /csvaudio:"my audio source.csv" /time:120
The created files are text files in comma separated values format. They can be opened in any spreadsheet application, or inspected in a text editor.
Beware that timestamp and timecode values may be very large whole numbers, so when opened in a spreadsheet a suitable number format should be chosen for those columns which does not lose precision or truncates the values.
00:17:54.73 8
0
0
17212618746625500
0
17212618746966600
0
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
41.71
237893
8 Mode 2
00:17:54.76 8
30.01
30.01
17212618747035200
40.97
17212618747383700
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
83.42
248295
[dTime < Prev frame duration] 8 Mode 2 Frame arrived early compared to intended frame rate.
00:17:54.80 9
70.98
40.97
17212618747455500
42.03
17212618747800800
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
125.12
248146
9 Mode 2
00:17:54.85 2
113.98
43
17212618747875000
41.95
17212618748217800
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
166.83
241047
2 Mode 2
00:17:54.89 4
155.99
42.01
17212618748285100
41
17212618748634900
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
208.54
249379
4 Mode 2
00:17:54.93 5
196.92
40.94
17212618748704800
41.97
17212618749052000
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
250.25
240985
5 Mode 2
00:17:54.97 7
238.92
41.99
17212618749124400
41.97
17212618749469100
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
291.96
250443
7 Mode 2
00:17:55.01 9
280.91
41.99
17212618749534700
41.03
17212618749886200
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
333.67
241389
9 Mode 2
00:17:55.06 0
321.88
40.97
17212618749954300
41.96
17212618750303300
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
375.37
250595
0 Mode 2
00:17:55.10 2
363.91
42.03
17212618750374500
42.02
17212618750720300
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
417.08
242025
2 Mode 2
00:17:55.14 4
405.88
41.97
17212618750794300
41.98
17212618751137400
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
458.79
252542
4 Mode 2
00:17:55.18 6
447.87
41.99
17212618751204300
41
17212618751554500
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
500.5
253334
6 Mode 2
00:17:55.22 7
488.84
40.97
17212618751623900
41.96
17212618751971600
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
542.21
242861
7 Mode 2
00:17:55.26 9
530.81
41.97
17212618752043800
41.99
17212618752388700
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
583.92
255295
9 Mode 2
00:17:55.31 1
572.8
42
17212618752453700
40.99
17212618752805800
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
625.62
243193
1 Mode 2
00:17:55.35 4
615.81
43.01
17212618752873700
42
17212618753222800
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
667.33
254911
4 Mode 2
00:17:55.39 3
654.96
39.15
17212618753293300
41.96
17212618753639900
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
709.04
244730
3 Mode 2
00:17:55.43 6
697.69
42.72
17212618753714100
42.08
17212618754057000
41.71
1920
1040
1.85
progressive
SpeedHQ
23.98
41.71
750.75
253564
6 Mode 2
Video CSV File
The reason that this is very valuable is that if you wish to determine why you are seeing problems sending video over the network then you can dump the CSV data at two different locations on the network, for instance you can capture it on the sending machine and also on the receiving machine. You can now look at the βtimestampβ data on each frame and locate frames that exactly match between different locations and verify whether any frames are dropped (the timestamp is present on the sender side but not on the receiver side) or if the frames are delivered late (measuring the dTime). Note that there is always some variability on most typical networks and so some level of jitter is to be expected but if there are large timing hits then there clearly is something on the network that is stopping the smooth flow of packets (e.g. congestion control on a router).
System time (utc): The local time in UTC at which the frame was received by NDI Analysis.
Elapsed time (ms): The number of milliseconds of system time elapsed in the current session. Notionally this is the time point at the start of this frame.
dTime (ms): The time difference in milliseconds between the receiving time of this frame and the previous frame. Ideally this should be equal to the frame rate, but usually varies depending on network conditions and fluctuations in frame generation.
Timestamp (100ns): The timestamp of the frame, as specified in the frame's header. This is typically set when the frame is submitted to NDI by the system creating the stream. It is in units of 100 nanoseconds. It is usually related to the originating system's clock, but the exact relationship (particularly when the zero time was) is undefined.
dTimestamp (ms): The difference in milliseconds between the timestamp of this frame and the previous frame. Typically this represents the rate at which the source is submitting the frames to NDI.
Timecode (100ns): The timecode of the frame, as specified in the frame's header, in units of 100 nanoseconds. Usually this is an ideal time mark for the frame, set by the source generating the frames.
dTimecode (ms): The difference in milliseconds between the timecodes of this frame and the previous frame. Usually this is equal to the duration of the frames as indicated by the frame rate.
X resolution, Y resolution: The image resolution of the frame, in pixels.
Aspect ratio: The aspect ratio of the frame, as specified in the frame's header.
Frame type: Indicates if the frame is progressive, fielded, or interleaved.
Codec: The codec used for the frame, plus if the frame includes an alpha channel or not.
Frame rate: The frame rate of the frame, as specified in the frame's header.
Frame duration (ms): The frame duration in milliseconds. This is derived from the frame rate in the frame's header.
Stream duration (ms): The sum of the frame durations of all the frames received so far (including this one). As this uses the frame rate specified in the frame header, it is an ideal value. It should remain close to the elapsed time with some fixed offset.
Data size (Bytes): The number of bytes of image data in the frame. If the frame is compressed then this is the size of the compressed data.
Notes: NDI Analysis will report any potential issues here, such as a frame arriving significantly later than expected or the stream not providing sufficient frames to keep up with the intended frame rate. These can be starting points for further investigation.
Audio CSV File
The audio CSV file is similar to the video CSV file and shares many of the same columns. Instead of the video frame specific columns it has these audio frame columns:
Sample rate: The sample rate of the frame, as specified in the frame's header.
Num channels: The number of channels in the audio frame, as specified in the frame's header.
Num Samples: The number of samples in the audio frame.
Last updated
Was this helpful?