Decoding with NDI

The NDI SDK supports decoding on multiple platforms, using different implementations based on operating system and available hardware. This overview explains how decoding is handled for HX (H.264/H.265) and SpeedHQ codecs, along with the use of compressed pass-through in the Advanced SDK.

General Decoding Support

The SDK supports both encoding and decoding for the SpeedHQ codec across all major platforms. Hardware acceleration for SpeedHQ is possible via FPGA codecs which are available in the Advanced SDK.

For HX codecs (H.264 and H.265), the SDK provides decoding only. Encoding must be done by the application, typically via hardware codec or external software with the compressed data passed to NDI via the Advanced SDK.

Platform-Specific HX Decoding

Windows:

  • If an NVIDIA GPU is present, decoding uses NVIDIA's NVDEC implementation.

  • If an NVIDIA GPU is not available, the SDK falls back to Media Foundation Transform (MFT).

    • When supported, hardware-accelerated MFT is used.

    • If hardware acceleration is not available, software-based MFT is used.

Linux:

Decoding is handled through FFmpeg with software-only decoding.

macOS and other Apple platforms (iOS, iPadOS, tvOS, visionOS):

The SDK uses Apple’s Video Toolbox and Audio Toolbox APIs to decode HX streams.

Android:

HX decoding is not supported in the SDK. Developers must use compressed pass-through and implement decoding themselves.

FPGA (Advanced SDK only):

The Advanced SDK includes support for hardware-accelerated decoding (and encoding) via FPGA implementations.

Compressed Pass-Through

The Advanced SDK includes support for compressed pass-through, allowing developers to transmit compressed video and audio without invoking SDK decoding. This is commonly used on platforms like Android or in workflows that require custom decoders.

NDI relies on a predefined set of FourCC codes to identify video formats, such as H.264, H.265, and SpeedHQ.

Custom Hardware and Embedded Systems

Embedded Linux systems, particularly hardware devices such as cameras, often require NDI SDK integration with custom vendor-specific toolchains. NDI can provide custom SDK builds for these environments when necessary. Contact NDI support for more information.

Last updated

Was this helpful?