# Analysis

## 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.

{% hint style="warning" %}
Analysis is currently not available on the Tools Launcher. You can download it [**here from our main website**](https://ndi.video/tools/analysis/)
{% endhint %}

> "There are three kinds of lies: lies, damned lies, and statistics." (Mark Twain, Benjamin Disraeli, et al)&#x20;

*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.&#x20;

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.

{% hint style="info" %}
You can always [reach out to support here](https://ndi.video/resources/support/) or visit our [community forums here.](https://community.ndi.video/mod/forum/view.php?id=39)
{% endhint %}

## 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:&#x20;

`NDIAnalysis.exe /find`&#x20;

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:&#x20;

`NDIAnalysis.exe /find /time:10`&#x20;

{% hint style="success" %}
If you need to quit, press **CTRL+C** to cause Analysis to exit
{% endhint %}

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:&#x20;

`NDIAnalysis.exe /find:"Cameras"`&#x20;

`NDIAnalysis.exe /find:"Public,Studio 1"`

**Example output from the finder is outlined below.**&#x20;

<pre data-overflow="wrap"><code>NDI Analysis v6.0.0.0 (<a data-footnote-ref href="#user-content-fn-1">note 1</a>)
Copyright (C) 2023 Vizrt NDI AB. All rights reserved.

NDI version : 6.0.0.0 (<a data-footnote-ref href="#user-content-fn-2">note 2</a>)

Searching for NDI sources ... (4 found) (<a data-footnote-ref href="#user-content-fn-3">note 3</a>)
    1: name="IPC (Channel 1 - Virtual PTZ)" (<a data-footnote-ref href="#user-content-fn-4">note 4</a>)
       host="192.168.1.191" (<a data-footnote-ref href="#user-content-fn-5">note 5</a>
       )
       type="NDI|HX (Camera)" (<a data-footnote-ref href="#user-content-fn-6">note 6</a>)
    2: name="IPC (Channel 1)" host="192.168.1.191" type="NDI|HX (Camera)"
    3: name="QUASIRANDOM (FaceTime HD Camera (Built-in))" (<a data-footnote-ref href="#user-content-fn-7">note 7</a>)
       host="192.168.1.193" (<a data-footnote-ref href="#user-content-fn-8">note 8</a>)
       port="5962" (<a data-footnote-ref href="#user-content-fn-9">note 9</a>)
       type="NDI" (<a data-footnote-ref href="#user-content-fn-10">note 10</a>)
    4: name="QUASIRANDOM (NVIDIA GeForce GT 650M 1)" host="192.168.1.193" port="5961" type="NDI"
</code></pre>

## 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:&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)"`&#x20;

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`&#x20;

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:&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /lowQ`&#x20;

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:&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /framecheck`&#x20;

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:&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /videoonly`&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /audiooonly`&#x20;

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.

<pre data-overflow="wrap"><code>NDI Analysis v6.0.0.0 
Copyright (C) 2023 Vizrt NDI AB. All rights reserved.

NDI version : 6.0.0.0

21:15:19.257: Video receiver creation succeeded. (<a data-footnote-ref href="#user-content-fn-11">note 1</a>)
21:15:19.257: Audio receiver creation succeeded. (<a data-footnote-ref href="#user-content-fn-12">note 2</a>)
21:15:23.287: Audio connection opened. (<a data-footnote-ref href="#user-content-fn-13">note 3</a>)
21:15:23.287: Video connection opened. (<a data-footnote-ref href="#user-content-fn-14">note 4</a>)
21:15:23.295: Capabilities, Recordable=false (<a data-footnote-ref href="#user-content-fn-15">note 5</a>)
21:15:23.295: Capabilities, PTZ control=false 
21:15:23.295: Capabilities, KVM control=false 
21:15:23.295: Product, Long name=Scan Converter v2 (<a data-footnote-ref href="#user-content-fn-16">note 6</a>)
21:15:23.295: Product, Short name=Scan Converter v2 
21:15:23.295: Product, Model=Scan Converter v2 
21:15:23.295: Product, Version=2.0000.0000 
21:15:23.296: Product, Serial number=0000 
21:15:23.472: Audio format changed. 44100Hz, 2 channels. (<a data-footnote-ref href="#user-content-fn-17">note 7</a>)
21:15:24.756: Video format changed. 1920x1200, progressive, aspect ratio=1.60, frame rate=60.00, no alpha channel. (<a data-footnote-ref href="#user-content-fn-18">note 8</a>)
21:15:24.258: Audio data rate (MBps). Avg=1.43 (<a data-footnote-ref href="#user-content-fn-19">note 9</a>)
21:15:24.258: Audio size (kB). Min=5.89 Avg=5.89 +/- 0.00 Max=5.89 
21:15:24.259: Audio recv (mS). Min=29.05 Avg=33.16 +/- 2.96 Max=39.23 
21:15:24.259: Audio send (mS). Min=29.01 Avg=33.13 +/- 4.77 Max=42.53 
21:15:29.259: Video data rate (MBps). Avg=69.39 (<a data-footnote-ref href="#user-content-fn-20">note 10</a>)
21:15:29.259: Video size (kB). Min=289.90 Avg=292.33 +/- 8.09 Max=320.91 (<a data-footnote-ref href="#user-content-fn-21">note 11</a>)
21:47:48.216: Video recv (mS). Min=11.44 Avg=16.66 +/- 2.30 Max=24.73 (<a data-footnote-ref href="#user-content-fn-22">note 12</a>)
21:47:48.217: Video send (mS). Min=8.72 Avg=16.67 +/- 1.47 Max=24.70 (<a data-footnote-ref href="#user-content-fn-23">note 13</a>)
21:15:29.260: Audio data rate (MBps). Avg=1.42 
21:15:29.260: Audio size (kB). Min=5.89 Avg=5.89 +/- 0.00 Max=5.89 (<a data-footnote-ref href="#user-content-fn-24">note 14</a>)
21:15:29.260: Audio recv (mS). Min=30.58 Avg=33.33 +/- 2.80 Max=40.16 (<a data-footnote-ref href="#user-content-fn-25">note 15</a>)
21:15:29.261: Audio send (mS). Min=27.98 Avg=33.32 +/- 4.81 Max=42.53 (<a data-footnote-ref href="#user-content-fn-26">note 16</a>)
21:15:34.262: Video data rate (MBps). Avg=82.48
21:15:34.262: Video size (kB). Min=284.67 Avg=286.25 +/- 7.71 Max=334.25
21:15:34.263: Video recv (mS). Min=14.29 Avg=38.13 +/- 34.44 Max=387.31
21:15:34.264: Video send (mS). Min=6.58 Avg=38.13 +/- 34.81 Max=388.28
21:15:34.264: Audio data rate (MBps). Avg=1.42 
21:15:34.265: Audio size (kB). Min=5.89 Avg=5.89 +/- 0.00 Max=5.89 
21:15:34.265: Audio recv (mS). Min=30.55 Avg=33.37 +/- 2.74 Max=39.66 
21:15:34.266: Audio send (mS). Min=28.02 Avg=33.39 +/- 4.69 Max=42.04 
21:15:39.266: Video data rate (MBps). Avg=124.18 
21:15:39.266: Video size (kB). Min=281.54 Avg=297.39 +/- 8.12 Max=311.32 
21:15:39.266: Video recv (mS). Min=14.06 Avg=31.00 +/- 46.95 Max=315.53 
21:15:39.266: Video send (mS). Min=4.70 Avg=31.00 +/- 47.64 Max=317.90 
21:15:39.267: Audio data rate (MBps). Avg=1.42 
21:15:39.267: Audio size (kB). Min=5.89 Avg=5.89 +/- 0.00 Max=5.89 
21:15:39.267: Audio recv (mS). Min=30.53 Avg=33.32 +/- 2.60 Max=39.65 
21:15:39.268: Audio send (mS). Min=28.49 Avg=33.32 +/- 4.61 Max=42.05 
21:24:44.547: Video receiver destroyed. (<a data-footnote-ref href="#user-content-fn-27">note 17</a>) 
21:24:44.652: Audio receiver destroyed. (<a data-footnote-ref href="#user-content-fn-28">note 18</a>) 
</code></pre>

<details>

<summary>Note 12</summary>

This is one of the most important measures. and represents the frame rate of data actually received from the network. In this example we are watching 60 Hz video; the frame rate indicates an average frame time of 16.66 ms, which is expected. Because this is on a real network with computers that are doing other things, the variance is 2.3 ms, a value which is much smaller than a frame. If the variance number becomes too large there might be dropped frames.&#x20;

All NDI applications should be designed to support frames within the Nyquist sampling limit, which would mean that any frame variance in the range of half the average should be the lowest reliable limit that would not require additional buffering or latency to display smoothly. At 60 Hz, this would require that the maximum reliable zero latency transfer rates would be 16.68 ms +/- 8.34 ms.

\
The minimum and maximum times are important; thus the largest delivery time (which is 24 ms in the example) provides a very important diagnostic tool. If you see values that are over 150 ms or so, it is very likely that network frames were dropped, and you should take steps to ensure that there is no packet loss on the network. It is important to bear in mind that some NDI sources might not send video frames if there is no video change occurring. Indeed, the example listed above is from Scan Converter 2 which does not provide new frames when there is no activity on-screen (thus reducing CPU time, GPU time and bandwidth or network time).&#x20;

For advanced diagnosis of problems, the video receipt time can be combined with the video sending times described in the next note. It is important to observe these two values when looking at large maximum frame receipt times.&#x20;

Some key reference times related to video timing are listed below (in milliseconds):&#x20;

* 60 Hz = 16.66 ms&#x20;
* 59.97 Hz = 16.67 ms&#x20;
* 50 Hz = 20 ms&#x20;
* 30 Hz = 33.33 ms&#x20;
* 29.97 Hz = 33.36 ms&#x20;
* 25 Hz = 40 ms

</details>

## Source Color Information and HDR

In frame checker mode (see above), NDIAnalysis will also output any NDI color information if present. For example:

{% code overflow="wrap" %}

```
12:01:14.674: Color info changed. primaries=bt_709, transfer function=bt_709, matrix coefficients=bt_709
... 
12:01:18.573: Color info changed. primaries=bt_2100, transfer function=bt_2100_hlg, matrix coefficients=bt_2100 
...
12:01:23.165: Color info not found.
```

{% endcode %}

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`&#x20;

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.&#x20;

**Audio frames** can also be captured, for example:&#x20;

`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.&#x20;

{% hint style="warning" %}
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.
{% endhint %}

<table data-full-width="true"><thead><tr><th width="158">System time (utc)</th><th width="114">Elapsed (ms)</th><th width="88" align="right">dTime (ms)</th><th width="162">Timestamp (100ns)</th><th width="151">dTimestamp (ms)</th><th width="143">Timecode (100ns)</th><th>dTimecode (ms)</th><th width="113">X resolution</th><th width="108">Y resolution</th><th width="109">Aspect ratio</th><th width="120">Frame type</th><th width="101">Codec</th><th width="99">Frame rate</th><th>Frame duration (ms)</th><th>Stream duration (ms)</th><th width="131">Data size (Bytes)</th><th width="227">Notes</th></tr></thead><tbody><tr><td>00:17:54.73<br>8</td><td>0</td><td align="right">0</td><td>17212618746625500</td><td>0</td><td>17212618746966600</td><td>0</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>41.71</td><td>237893</td><td>8 Mode 2</td></tr><tr><td>00:17:54.76<br>8</td><td>30.01</td><td align="right">30.01</td><td>17212618747035200</td><td>40.97</td><td>17212618747383700</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>83.42</td><td>248295</td><td>[dTime &#x3C; Prev frame duration] 8 Mode 2 Frame arrived early compared to intended frame rate.</td></tr><tr><td>00:17:54.80<br>9</td><td>70.98</td><td align="right">40.97</td><td>17212618747455500</td><td>42.03</td><td>17212618747800800</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>125.12</td><td>248146</td><td>9 Mode 2</td></tr><tr><td>00:17:54.85<br>2</td><td>113.98</td><td align="right">43</td><td>17212618747875000</td><td>41.95</td><td>17212618748217800</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>166.83</td><td>241047</td><td>2 Mode 2</td></tr><tr><td>00:17:54.89<br>4</td><td>155.99</td><td align="right">42.01</td><td>17212618748285100</td><td>41</td><td>17212618748634900</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>208.54</td><td>249379</td><td>4 Mode 2</td></tr><tr><td>00:17:54.93<br>5</td><td>196.92</td><td align="right">40.94</td><td>17212618748704800</td><td>41.97</td><td>17212618749052000</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>250.25</td><td>240985</td><td>5 Mode 2</td></tr><tr><td>00:17:54.97<br>7</td><td>238.92</td><td align="right">41.99</td><td>17212618749124400</td><td>41.97</td><td>17212618749469100</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>291.96</td><td>250443</td><td>7 Mode 2</td></tr><tr><td>00:17:55.01<br>9</td><td>280.91</td><td align="right">41.99</td><td>17212618749534700</td><td>41.03</td><td>17212618749886200</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>333.67</td><td>241389</td><td>9 Mode 2</td></tr><tr><td>00:17:55.06<br>0</td><td>321.88</td><td align="right">40.97</td><td>17212618749954300</td><td>41.96</td><td>17212618750303300</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>375.37</td><td>250595</td><td>0 Mode 2</td></tr><tr><td>00:17:55.10<br>2</td><td>363.91</td><td align="right">42.03</td><td>17212618750374500</td><td>42.02</td><td>17212618750720300</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>417.08</td><td>242025</td><td>2 Mode 2</td></tr><tr><td>00:17:55.14<br>4</td><td>405.88</td><td align="right">41.97</td><td>17212618750794300</td><td>41.98</td><td>17212618751137400</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>458.79</td><td>252542</td><td>4 Mode 2</td></tr><tr><td>00:17:55.18<br>6</td><td>447.87</td><td align="right">41.99</td><td>17212618751204300</td><td>41</td><td>17212618751554500</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>500.5</td><td>253334</td><td>6 Mode 2</td></tr><tr><td>00:17:55.22<br>7</td><td>488.84</td><td align="right">40.97</td><td>17212618751623900</td><td>41.96</td><td>17212618751971600</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>542.21</td><td>242861</td><td>7 Mode 2</td></tr><tr><td>00:17:55.26<br>9</td><td>530.81</td><td align="right">41.97</td><td>17212618752043800</td><td>41.99</td><td>17212618752388700</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>583.92</td><td>255295</td><td>9 Mode 2</td></tr><tr><td>00:17:55.31<br>1</td><td>572.8</td><td align="right">42</td><td>17212618752453700</td><td>40.99</td><td>17212618752805800</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>625.62</td><td>243193</td><td>1 Mode 2</td></tr><tr><td>00:17:55.35<br>4</td><td>615.81</td><td align="right">43.01</td><td>17212618752873700</td><td>42</td><td>17212618753222800</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>667.33</td><td>254911</td><td>4 Mode 2</td></tr><tr><td>00:17:55.39<br>3</td><td>654.96</td><td align="right">39.15</td><td>17212618753293300</td><td>41.96</td><td>17212618753639900</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>709.04</td><td>244730</td><td>3 Mode 2</td></tr><tr><td>00:17:55.43<br>6</td><td>697.69</td><td align="right">42.72</td><td>17212618753714100</td><td>42.08</td><td>17212618754057000</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>750.75</td><td>253564</td><td>6 Mode 2</td></tr></tbody></table>

## Video CSV File&#x20;

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).&#x20;

**System time (utc)**: The local time in UTC at which the frame was received by NDI Analysis.&#x20;

**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.&#x20;

**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.&#x20;

**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.&#x20;

**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.&#x20;

**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.&#x20;

**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.&#x20;

**X resolution, Y resolution**: The image resolution of the frame, in pixels.&#x20;

**Aspect ratio**: The aspect ratio of the frame, as specified in the frame's header.&#x20;

**Frame type**: Indicates if the frame is progressive, fielded, or interleaved.&#x20;

**Codec**: The codec used for the frame, plus if the frame includes an alpha channel or not.&#x20;

**Frame rate**: The frame rate of the frame, as specified in the frame's header.&#x20;

**Frame duration (ms)**: The frame duration in milliseconds. This is derived from the frame rate in the frame's header.&#x20;

**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.&#x20;

**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:&#x20;

**Sample rate**: The sample rate of the frame, as specified in the frame's header.&#x20;

**Num channels**: The number of channels in the audio frame, as specified in the frame's header.&#x20;

**Num Samples**: The number of samples in the audio frame.

[^1]: This indicates NDIAnalysis.exe’s version number. Newer versions will be required periodically as subsequent versions of NDI include new capabilities that qualify for analysis. NDI is, however, backwards and forwards compatible. So any version of Analysis will work with any version of NDI, whether a past or future release.&#x20;

[^2]: This indicates the exact version of NDI that this analysis tool was compiled against.&#x20;

[^3]: While searching for sources on the network, this line indicates how many seconds are left in the search and how many sources have already been detected.

[^4]: Sources are listed alphabetically with a number at the beginning of the line. The first entry for each source is its name. Entries are normally formatted as a machine name and a channel name set off by parentheses. (*In the example above, the machine name is “IPC” and the channel name is “Channel 1 – Virtual PTZ”*.)

[^5]: The remote IP address will be listed for all sources. It's possible for a source to exist on more than one network card, resulting in it technically having multiple IP addresses. In those cases, Analysis lists just one address – the one visible to the local host. This does not preclude NDI from using all source and destination NICs for transfer. NDI negotiates all connected IP addresses for any device (*both remotely on the sending machine and locally on receiving machines*), and spreads traffic across all available paths between them. Interestingly, when a source is actually on the local IP address, NDI does not use external network IPs at all. Rather, a direct loop-back connection is used for improved performance.&#x20;

[^6]: The source type is listed for all sources. There are currently two major types: the first being ‘true’ NDI sources, which are listed simply as “NDI” and “NDI|HX” sources. These use higher efficiency NDI modes and are commonly used on embedded devices. (*In this example, the device is an “NDI|HX” source.*)

[^7]: Another source, from a computer named “QUASIRANDOM” and having a channel name “FaceTime HD Camera (Built-in)”, is also listed. This example entry is from a version of NDI Scan Converter that is providing a web-cam source.&#x20;

[^8]: This is the IP address of the machine on which the (NDI Scan Converter) source is present.

[^9]: For NDI sources where it is applicable, the remote port address of the connection is displayed (*certain connection types do not provide this information, since they do not define listening port numbers*). Source types of “NDI” will almost always list the port number on which the connection is made. It is not uncommon, however, for the initial connection to be made on the port number specified while the actual data is transferred on one or more different ports. This is very common for connections using either unicast or multicast UDP modes.&#x20;

[^10]: This particular source is a full NDI source.&#x20;

[^11]: This entry indicates that the receiver for the video stream has been opened and is awaiting a connection. As will be apparent in all of the log items, the time when this event occurred is indicated at the beginning of the line. Time is formatted as hours, minutes, seconds and milliseconds. If the system clock is accurately synchronized to an external clock these values can be correlated with centrally clocked events that are known.&#x20;

[^12]: This indicates that the receiver for the audio stream has been opened and is awaiting a connection.

[^13]: This entry indicates that the audio connection has been opened and is ready to receive audio data. An open connection might not immediately receive data if extra data processing (e.g. adapting to network jitter) is required but the link has been communicated. If this is an UDP unicast or UDP multicast network this would indicate that the connection is fully configured, IP addresses and ports are known, and that all network paths from the sender to the receiver are likewise now known.&#x20;

[^14]: This entry indicates that the video connection has been opened and is ready to receive audio data. As in note 3, this indicates that all network settings are now known. However, it might still take a second or two before decoding of video data is actually ready to begin.&#x20;

[^15]: Once a connection is established, the capabilities of that connection are shared between senders and receivers. In this example the source supports record operations but neither PTZ control nor KVM control is available. A number of additional properties that can be reported and the set of capabilities can be extended in the future. Specifically, you can determine almost all the capabilities of a PTZ camera and whether these are provided virtually (e.g. virtual pan and scan) or in true physical form (e.g. servos controlling a position). Camera capabilities such as exposure control, iris control, etc., are also reported.&#x20;

[^16]: The product description is often supplied if it is provided by the sender. This may include the product name, who it is made by, unit serial number, and more. These entries are useful to get settings for the current session and how the product is being used.&#x20;

[^17]: This entry logs when the first audio packet is received, or each time the audio output format changes. The full audio format is provided, including the number of audio channels and the sample rate.&#x20;

[^18]: This entry logs when the first video packet is received, or each time that the video output format changes. This provides real-time feedback on the current format and video frames, and information about the resolution (xres, yres), fielding mode (interlaced or progressive), frame rate, and whether or not there is an alpha channel. The picture aspect ratio is provided as a single floating-point number comprising the frame width divided by height (e.g., a 16:9 image would return 1.78, while 4:3 would return 1.33).&#x20;

[^19]: The current audio data rate is provided in megabits per second. This value represents the current size of the audio stream in bits per second and reflects the current compression level for that stream. NDI uses a very high quality bitrate stream (often several megabits per second), while NDI|HX audio often involves heavier compression, at the expense of slightly higher CPU overhead (for instance, AAC audio). The bitrate reflects the measured bitrate (as opposed to a calculated bitrate). This means, for example, that if audio is interrupted for some reason (e.g. some packets are ‘silent’) this is reflected in the value shown.&#x20;

[^20]: The video data rate is likewise provided in megabits per second. This size represents the current size of the video stream in bits per second and is measured for the true data stream. The value will depend on the video format and frame rate used and will also vary slightly depending on video content. This is mainly in order to preserve best quality while avoiding unnecessary compression level changes unless warranted for multiple frames. The data rate is a measured value, so if frames are not sent repeatedly the value is correspondingly reduced. For instance, lower values would occur if a source does not provide all video frames – as sometimes can happen when successive frames are identical.&#x20;

[^21]: This represents the size of the frames that have been received in kilobytes, collected for a time period. In this example, the minimum frame size was 289.90 KB and the maximum was 320.91 KB. The average frame size in the period measured was 292.33 KB and the standard deviation was 8.09 KB. The standard deviation can be viewed as an indication of how stable the frame size was. A small value indicates that the size of the frames is very stable, while a large value indicates that frame sizes varied greatly. For relatively constant video, as presented in this example, the variance is very small – meaning that 68% of frames (one standard deviation) would be in the range 284.24 and 300.42 KB.

[^22]: See [**Note 12** ](#note-12)below

[^23]: This line describes time measured as time-stamps provided on the NDI sending operation. This provides a reasonable diagnosis of performance on the sender side before it arrives on the network. If the frame variance is high it is likely that the sender failed to process accurate frame rates onto the network. Since this value measures the rate at which frames are provided to the network high maximum times would be a clear indication of a sender side problem – even if the received video frames times indicate frame drops at the receiver. In contrast, reliable sending times but unreliable receipt times denote a problem that is most likely with the network infrastructure.

[^24]: This represents the average size in kilobytes of the audio frames received and is very similar to the corresponding video frames. Bear in mind is that the number of bytes taken by each audio packet will depend on the number of audio samples in each audio packet. For instance, sending 800 sample packets will on average result in audio packets that are half the size of sending 1600 sample packets.

[^25]: This value is similar to the way that the corresponding video value works. Bear in mind that for audio this is indicative of the number of audio samples in each packet.

[^26]: This value is also like the way that the corresponding video value works. Bear in mind that for audio this is indicative of the number of audio samples in each packet.

[^27]: This message is displayed when the video connection is closed.

[^28]: This message is displayed when the audio connection is closed.
