Skip to content

Extended and advanced applications to the Rivermax SDK (Networking SDK for Media and Data Streaming).

License

Notifications You must be signed in to change notification settings

tamirronen/Rivermax-public

 
 

Repository files navigation

NVIDIA Rivermax: Tools, Apps & Code Samples

GitHub license Rivermax SDK repository

Introduction to Rivermax

NVIDIA® Rivermax® SDK - Optimized networking SDK for Media and Data streaming applications. Rivermax offers a unique IP-based solution for any media and data streaming use case. Rivermax together with NVIDIA GPU accelerated computing technologies unlocks innovation for a wide range of applications in Media and Entertainment (M&E), Broadcast, Healthcare, Smart Cities and more.

The NVIDIA Rivermax GitHub Repository allows users to build and run sample codes, tools and applications on top of Rivermax. The GitHub includes code samples that won't be part of the official Rivermax SDK but are commonly used by Rivermax customers and engineering teams. The code is provided As Is - tested only by the code owner and been tested before uploading with a specific hardware and software.

Product release highlights, documentation, platform support, installation and usage guides can be found in the Rivermax SDK Page.

Frequently asked questions, customers product highlights, Video link and more are available on the Rivermax Product Page.

Getting Started

Make sure you have registered to the NVIDIA Rivermax SDK on the DevZone, downloaded the preferred SDK, obtained the hardware and have a valid license.

More details can be found on the Rivermax SDK Page.

Building

The repository relies on CMake to build binaries, and it can be built both on Linux and Windows.

In a lack of any dependency the build will gracefully terminate. For a smoother start, it is better to follow the installation guidelines of the Rivermax SDK.

CMake Version Compatibility

CMakeLists.txt file of each application states its version requirements at the top. Some applications (e.g. the ones that support CUDA) require CMake of version 3.17 or higher. In certain distros default application managers are limited to an older version of CMake. For this reason it is suggested to install CMake using pip, which doesn't have such limitations. pip itself can be installed on any modern distro using default application manager.

For example, on Debian-based distros use the following commands:

$ sudo apt install python3-pip
$ sudo pip install cmake

On RHEL-based distros use the following commands:

$ sudo yum install python3-pip
$ sudo pip<latest-version> install cmake

Note that in some distros there can be several pip instances of different versions by default, and when called a specific version needs to be specified (e.g. the last example above). One should strive to use the latest version possible to avoid compatibility issues.

Build Command-line Parameters

Each code example contains its build instructions in the respective folder's README.md file.

Some applications (e.g. generic_receiver) can be built with CUDA support to demonstrate GPU utilization. The following boolean build-parameters are supported:

  • RIVERMAX_ENABLE_CUDA - when set, this flag enables integration with CUDA
  • RIVERMAX_ENABLE_TEGRA - this flag shall be set along with RIVERMAX_ENABLE_CUDA when building for TEGRA-family SoC (e.g. NVIDIA Jetson AGX Xavier).

Following is an example command-line for building with CUDA support:

$ cmake -B ./build -DRIVERMAX_ENABLE_CUDA=ON

Note that this repo contains useful CMake scripts, e.g. finders for Rivermax and DOCA. Please refer to examples in the application directories.

Usage

Each application or sample code provides its usage instructions.

Application List

  • generic_receiver - A demo for a receiver application that uses Rivermax Generic API
  • rivermax_player - A demo for a sender application that sends several streams of different types (e.g. video, audio, ancillary)
  • doca_rmax_rx_perf - An RX performance measurement application to be used with the NVIDIA DOCA RMAX library.
  • rmax_ipo_receiver - A demo for receiver application that uses Inline Packet Ordering (IPO) feature of Rivermax library.

Issues and Contribution

We welcome contributions to the Rivermax Apps repository:

  • To contribute and make pull requests, please follow the guidelines outlined in the Contributing document.
  • Please let us know about any bugs or issues by filing a new issue.

About

Extended and advanced applications to the Rivermax SDK (Networking SDK for Media and Data Streaming).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 89.2%
  • C 6.2%
  • CMake 4.4%
  • Cuda 0.2%