AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
Dual-Link and 3G Overview

History

Initially, a standard HD-SDI signal had a data rate of 1.5Gb/s. Due to the data rate limitation, this meant signals had to be at a frame rate of 24, 25 or 30 frames per second and a bit depth of 4:2:2.

There was a need for higher frame rates and also higher bit-depth, but since the standard HD-SDI signal was maxed out, a new solution was needed. This led to the creation of the Dual-Link specification, which gangs two standard HD-SDI signals together, essentially doubling the bandwidth. Each cable carries a separate 1.5Gb/s 4:2:2 signal.

This can be used several ways. First, higher frame rates can be achieved by sending alternating video frames down each HD-SDI cable. This works similarly to interlacing within a video image. The alternating frames are chained together on the receiving end into a 50 or 60 fps signal.

Alternately, the two HD-SDI signals can carry higher bit depth information. By splitting the data between the two cables, more information per frame can be carried. This is usually referred to as Dual-Link 4:4:4 and can be either YUV or RGB. The advantage of YUV 4:4:4 is that the primary channel is carrying a standard YUV 4:2:2 signal, which can be plugged into a standard Single Link device. (Note that the signal on the second cable is formatted as a complete 4:2:2 signal, but only the second and third channels carry information useful to the final image.)

Soon after, the ability to handle up to 3Gb/s on a single cable (called 3G) was introduced. This made the need for two cables obsolete, since the higher frame rate and bit depth signals could now be carried on a single cable. When used to carry higher frame rates such as 1080p 50/60, the signal is referred to as Level A. When used to carry higher bit depth signals, it is referred to as Level B.

Dual Stream 3G

In addition, since 3G could carry twice the information, it’s also possible to combine two separate 1.5Gbps 4:2:2 image streams into a single 3G stream, which is referred to as Dual Stream 3G. Dual Stream 3G is particularly useful in stereoscopic production where separate left and right eye information is being captured.

It’s important to note that Dual Stream 3G when used for stereoscopic is not the same as a “muxed” stereoscopic image. Stereoscopic muxing squeezes the left and right eye images into a single, standard video frame, potentially sacrificing the quality of the images. Dual Stream 3G has the bandwidth to embed two complete 1.5 Gb image streams into a single 3G signal, which can then be extracted and used without compromise.

Newer AJA Devices Handle Level B Differently

On the wire, the speed of Level A and Level B are the same (148 MHz). For Level A, the lines of the image are received at the AJA device’s SDI input one at a time. The speed of the SDI input crosspoint is changed to 148 MHz so that the frame store can write the data into memory at the same rate it comes in. For Level B, lines are received as an even/odd pair at a 74 MHz rate. In this case it would be necessary to store one line temporarily while the other is being written into the frame store. Older AJA devices (e.g., KONA 3G (UFC Mode), KONA 3G (Quad Mode), Corvid 24, etc.), lack a FIFO to do this, so instead, two frame stores are used to write both lines into memory simultaneously at a 74 MHz rate. (This was how AJA engineers were able to graft the “new” Level B signals onto their existing designs.) This is why you must use two frame stores for Level B signals on the KONA 3G (UFC Mode), KONA 3G (Quad Mode), Corvid 24, and other devices of that era – and must also call the CNTV2Card::SetSmpte372 function to “gang” the frame stores.

Level B is handled much easier with newer AJA devices (e.g., Io4K (Quad Mode), Io4K (UFC Mode), Io4K (Quad Mode), Io4K (UFC Mode), Corvid 44, Corvid 88, etc.). Simply route the SDI input directly to a single frame store, then configure the SDI input to 3G Level B.

Note
IMPORTANT:
When writing software to handle Level A and Level B formats, there’s a difference between NTV2_FORMAT_1080p_6000 (which is synonymous with NTV2_FORMAT_1080p_6000_B), and NTV2_FORMAT_1080p_6000_A. The former was a way for AJA’s older devices with slower FPGAs to process high frame rate progressive formats, which was done by using two Frame Stores, each running at 30 Hz, to handle a 60 Hz signal.

AJA’s newer devices, including the KONA 4 (Quad Mode), have faster FPGAs. The recommended method is to use a video format of NTV2_FORMAT_1080p_6000_A. The device then runs at a true 60 Hz frame rate, and only one Frame Store is required.

To maintain consistent signal routing when working with 3G formats, 3G LevelB-to-LevelA SDI input converters were introduced for ingesting from Level B sources, as well as 3G LevelA-to-LevelB SDI output converters for valid 3G Level B signal transport playout, all while using 3G Level A video formats. AJA strongly recommends using 3G Level A video formats exclusively, and deprecate the use of 3G Level B video formats.

How to Capture 1080p50/60 Video

There are 3 ways to capture 1080p50/60 video on a modern AJA device (e.g., Corvid 44):

  • SMPTE 372 dual-link 1.5G;
  • SMPTE 425 single-link 3G level A;
  • SMPTE 425 single-link 3G level B.

Dual-link mode requires two SDI connectors, where each looks like a 1080i signal. These signals are partitioned in the source and merged in the destination as 1080p video.

The single-link 3Gb signal is the same idea, except instead of two wires, the two streams are multiplexed into a single 3Gbps signal. The 3Ga signal is a single 3Gbps 1080p stream.

Unfortunately, because the NTV2 hardware and SDK evolved on the “bleeding edge” prior to ratification of the SMPTE standards, it has made configuring these three different modes in the SDK somewhat confusing.

Dual-Link 1.5Gbps SMPTE 372 Input

Single-Link 3G Level A Input

Single-Link 3G Level B Input

Note
Don’t be surprised if, after configuring for 3Gb, this gets reported as a 1080i signal, since it really does get transmitted as 2 × 1080i streams. In 3Ga mode it should be reported as a 1080p stream.

Code Example

// This will work with devices that answer \c true for ::NTV2DeviceCanDo3GLevelConversion
bool is3Gb(false);
mVideoFormat = mDevice.GetSDIInputVideoFormat (mInputChannel, false);
mDevice.GetSDIInput3GbPresent (is3Gb, mInputChannel);
if (is3Gb)
{
switch (mVideoFormat)
{
mDevice.SetSDIInLevelBtoLevelAConversion (mInputChannel, true);
mVideoFormat = NTV2_FORMAT_1080p_5000_A;
break;
mDevice.SetSDIInLevelBtoLevelAConversion (mInputChannel, true);
mVideoFormat = NTV2_FORMAT_1080p_5994_A;
break;
mDevice.SetSDIInLevelBtoLevelAConversion (mInputChannel, true);
mVideoFormat = NTV2_FORMAT_1080p_6000_A;
break;
default:
mDevice.SetSDIInLevelBtoLevelAConversion (mInputChannel, false);
break;
}
}
else
mDevice.SetSDIInLevelBtoLevelAConversion (mInputChannel, false);

6G and 12G

Some newer AJA devices have SDI connectors that support 6G and 12G, which allows a single cable to carry 4K/UHD, even at high-frame-rates or bit depths.

NTV2_FORMAT_1080i_5994
@ NTV2_FORMAT_1080i_5994
Definition: ntv2enums.h:512
NTV2_FORMAT_1080p_6000_A
@ NTV2_FORMAT_1080p_6000_A
Definition: ntv2enums.h:535
NTV2_FORMAT_1080p_5000_A
@ NTV2_FORMAT_1080p_5000_A
Definition: ntv2enums.h:533
NTV2_FORMAT_1080i_5000
@ NTV2_FORMAT_1080i_5000
Definition: ntv2enums.h:511
NTV2_FORMAT_1080p_5994_A
@ NTV2_FORMAT_1080p_5994_A
Definition: ntv2enums.h:534
NTV2_FORMAT_1080i_6000
@ NTV2_FORMAT_1080i_6000
Definition: ntv2enums.h:513