> For the complete documentation index, see [llms.txt](https://docs.ndi.video/all/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ndi.video/all/developing-with-ndi/developer-guides/decoding-with-ndi.md).

# 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

### Window&#x73;**:**

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ndi.video/all/developing-with-ndi/developer-guides/decoding-with-ndi.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
