Rivermax#

Rivermax SDK is the core library for accelerated network processing that enables developers to build SMPTE ST 2110 compliant applications, with UDP transport acceleration and optimal GPU transfer using GPUDirect support.

Open-source Rivermax samples are available in the Rivermax Dev Kit, a high-level C++ software kit designed to accelerate and simplify Rivermax application development.

Rivermax is a licensed technology. You can access a free development license by registering as a Rivermax developer. The license is valid for three months, and you can renew it on demand as many times as you need to develop and support your product.

Rivermax also provides pure UDP transport acceleration with optimal GPU transfer through GPUDirect remote direct memory access (RDMA). This acceleration can benefit any type of application that uses UDP-based communication, not only ST 2110.

Resizable BAR#

To enable GPUDirect RDMA and large memory transfers with Rivermax, your motherboard and GPU should support Resizable Base Address Register (BAR). Resizable BAR is a PCIe capability that lets a PCIe device negotiate the BAR size to optimize system resources when transferring large memory buffers.

NVIDIA GPUs from the NVIDIA Ampere architecture generation onward support Resizable BAR but require a compatible motherboard. Enable the BIOS setting, which might be called Above 4G Decoding or Re-Size BAR depending on the vendor.

ST 2110#

SMPTE ST 2110 is a suite of protocol standards for transferring uncompressed media over IP networks, in a way that parallels the role of serial digital interface (SDI) as the traditional digital video interface. It supports video, audio, and ancillary data as independent networking streams, and uses network timing for synchronization. Senders often use multicast, so that multiple receivers can receive the same stream. Easy connection and management enable fully software-defined professional media production over standard networking technology.

NMOS#

The Networked Media Open Specifications (NMOS) provide automatic discovery and registration of media-streaming devices and services, and control of the connections between senders and receivers. NMOS uses DNS Service Discovery (DNS-SD) and supports the Real-time Transport Protocol (RTP) multicast that ST 2110 uses to connect multiple receivers to the same stream.

You can find an introduction to NMOS and a getting-started guide on the Advanced Media Workflow Association (AMWA) website, including video tutorials to learn more about the technology. The AMWA NMOS specifications are also freely available.

PTP Timing#

ST 2110 compliance requires the Precision Time Protocol (PTP). The Holoscan for Media platform provides PTP as a service through the PTP Operator. For development, you can also run the PTP daemon for Linux (ptp4l) on a Linux host system with NVIDIA ConnectX-6 Dx or ConnectX-7 NICs. The NVIDIA Rivermax PTP Best Practice Guidelines describe how to set up PTP for testing on a bare-metal Linux system.

SDP#

Session Description Protocol (SDP) is a text-based format commonly used to describe one or more multimedia streams. ST 2110 uses SDP to describe stream properties. The following examples show SDP files for ST 2110 video and audio streams:

v=0
o=- 1443716955 1443716955 IN IP4 <session-ip>
s=1080p60 video sender
t=0 0
m=video <video-port> RTP/AVP 96
c=IN IP4 <destination-video-ip>/64
a=source-filter: incl IN IP4 <destination-video-ip> <source-ip>
a=rtpmap:96 raw/90000
a=fmtp:96 sampling=YCbCr-4:2:2; width=1920; height=1080; exactframerate=60; depth=10; TCS=SDR; colorimetry=BT709; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN;
a=ts-refclk:ptp=IEEE1588-2008:traceable
a=mediaclk:direct=0
v=0
o=- 1756802747 0 IN IP4 <session-ip>
s=audio sender
t=0 0
m=audio <audio-port> RTP/AVP 97
c=IN IP4 <destination-audio-ip>/64
a=source-filter: incl IN IP4 <destination-audio-ip> <source-ip>
a=rtpmap:97 L24/48000/2
a=fmtp:97 channel-order=SMPTE2110.(ST)
a=ptime:1
a=ts-refclk:ptp=IEEE1588-2008:traceable
a=mediaclk:direct=0

The following list describes important fields in these SDP files:

  • IP addresses
    • The destination video and audio IP addresses are <destination-video-ip> and <destination-audio-ip>.

    • The destination addresses are usually multicast IP addresses, which let a sender reach multiple receivers. To set a multicast IP address, choose an address in the 224.0.0.0 to 239.255.255.255 range.

    • The source IP address <source-ip> enables source-specific multicast.

  • The line that starts with a=fmtp:96 sets the properties of the ST 2110-20 video stream:
    • Sampling, such as RGB or YCbCr-4:2:2

    • Width and height

    • Frame rate (exactframerate), either an integer rate such as 50 or 60, or a fractional rate such as 60000/1001 for 59.94 fps

    • Transfer characteristic system (TCS) and colorimetry, typically SDR and BT709 for standard dynamic range HD video

    • Depth, the component bit depth, typically 8 or 10 bits

  • The lines that start with a=rtpmap:97 and a=fmtp:97 set the properties of the ST 2110-30 audio stream. For example, in L24/48000/2:
    • L24 indicates 24-bit linear pulse-code modulation (PCM) audio samples

    • 48000 is the sample rate

    • 2 is the number of channels, which in this example carry stereo audio

    • The a=ptime: line indicates the packet time, typically 1 or 0.125 milliseconds

The following SDP example describes ST 2022-7 redundant streams:

v=0
o=- 1443716955 1443716955 IN IP4 <session-ip>
s=ST 2022-7 video sender
t=0 0
a=group:DUP leg1 leg2
m=video <leg1-port> RTP/AVP 96
c=IN IP4 <leg1-destination-ip>/64
a=source-filter: incl IN IP4 <leg1-destination-ip> <leg1-source-ip>
a=rtpmap:96 raw/90000
a=fmtp:96 sampling=YCbCr-4:2:2; width=1920; height=1080; exactframerate=60; depth=10; TCS=SDR; colorimetry=BT709; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN;
a=ts-refclk:ptp=IEEE1588-2008:traceable
a=mediaclk:direct=0
a=mid:leg1
m=video <leg2-port> RTP/AVP 96
c=IN IP4 <leg2-destination-ip>/64
a=source-filter: incl IN IP4 <leg2-destination-ip> <leg2-source-ip>
a=rtpmap:96 raw/90000
a=fmtp:96 sampling=YCbCr-4:2:2; width=1920; height=1080; exactframerate=60; depth=10; TCS=SDR; colorimetry=BT709; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN;
a=ts-refclk:ptp=IEEE1588-2008:traceable
a=mediaclk:direct=0
a=mid:leg2