LogoLogo
๐Ÿ› ๏ธ Tools๐Ÿ—‚๏ธ SDK๐Ÿ“„ White Paper
  • Getting Started
    • ๐ŸŸฃWhat is NDI?
    • ๐Ÿ†•Release Notes
    • ๐Ÿ“„White Paper
      • Discovery & Registration
        • mDNS
        • Discovery Service
        • Manual Connection
        • NDI Groups
      • NDI Protocols
        • Reliable UDP - NDI 5
        • Multipath TCP - NDI 4
        • UDP with Forward Error Correction โ€“ NDI 3
        • Single TCP โ€“ NDI 1
      • NDI Related Network Ports
      • Getting video across the network
      • Network Layout
      • Bandwidth
        • NDI High Bandwidth based on SpeedHQ2 (8bit 4:2:2)
        • NDI High Bandwidth based on SpeedHQ7 (8bit 4:2:2:4)
        • NDI HX2 h.264 (8bit 4:2:0)
        • NDI HX2 h.265 (8bit 4:2:0)
        • NDI HX3 h.264 (8bit 4:2:0)
        • NDI HX3 h.265 (8bit 4:2:0)
        • NDI Proxy and bandwidth optimization
      • Network Interface Settings
      • NIC Selection
      • Encoding and Decoding
      • Multicast
      • NDI Administrative Settings
      • Synchronization
      • NDI in the Cloud
    • Glossary
      • NDI Terminology
      • Industry Terminology
  • Using NDI
    • Introduction
    • NDI for Video
      • Digital Video Basics
      • NDI Video Codecs and Format Matrix
      • NDI Encoding Support Matrix
        • Practical NDI Receivers Format Support
        • Practical NDI Transmitters Support
        • Summary Table
      • Interoperability Scenarios
    • NDI for Audio
      • Digital Audio Fundamentals
      • Audio Over IP
      • Technical Facts About NDI for Audio
      • Use Cases
      • Products Using NDI for Audio
    • โš’๏ธNDI Tools
      • Release Notes
      • Installing NDI Tools
        • Software License Agreement
        • Privacy Policy
      • NDI Tools Launcher
      • NDI Tools for Windows
        • Access Manager
        • Bridge
          • NDI Bridge automation
          • Configuring Port Forwarding
          • Bridge Tool Logging
        • Remote
        • Router
        • Screen Capture
        • Screen Capture HX
        • Studio Monitor
        • Test Patterns
        • Webcam Input
      • NDI Tools for Mac
        • Access Manager
        • Scan Converter
        • Router
        • Test Patterns
        • Video Monitor
        • Virtual Input
      • Plugins
        • NDI for After Effects
        • NDI for Premiere Pro
        • NDI Output for Final Cut Pro
        • NDI for VLC
        • Audio Direct
        • OBS
    • Utilities
      • Analysis
    • Using NDI with Software
      • Getting Started with NDI in OBS for Windows or Mac
      • Using OBS Studio as a Commentary System
      • Using NDI Tools as a virtual camera in Mac
      • Using NDI and Dante on the same Network
      • Use OBS video + audio on Zoom with macOS
    • Using NDI with Hardware
      • NDI HX upgrades for cameras
      • How to Activate Panasonic Cameras for NDI HX1 โ€” Step-by-Step
      • Recommended Network Switch Settings for NDI
  • Developing with NDI
    • Introduction
    • ๐Ÿ“‚SDK
      • Release Notes
      • Licensing
      • Software Distribution
        • Header Files
        • Binary Files
        • Redistributables
        • Content Files
        • Libraries
        • NDI-SEND
        • NDI-FIND
        • NDI-RECEIVE
        • Utilities
        • Command Line Tools
      • CPU Requirements
      • Dynamic Loading of NDI Libraries
      • Performance and Implementation
      • Startup and Shutdown
      • Example Code
      • Port Numbers
      • ๐Ÿ”งConfiguration Files
      • Platform Considerations
      • NDI-SEND
      • NDI-FIND
      • NDI-RECV
      • NDI Routing
      • HDR
      • Command Line Tools
      • Frame Types
        • Video Frames
        • Audio Frames
        • Metadata Frames
      • Windows DirectShow Filter
      • 3rd Party Rights
      • Support
    • Advanced SDK
      • Release Notes
      • Licensing
      • Overview
      • Configuration Files
      • NDI SDK Review
        • Sending
          • Asynchronous Sending Completions
          • NDI Sending On High Latency Connections
        • Receiving
          • Custom Allocators
            • Video Allocators
            • Audio Allocators
          • Dynamic Bandwidth Adjustment
        • Finding
        • Video Formats
          • Receiver Codec Support Level
          • Frame Synchronization
      • Genlock
      • AV Sync
        • Guidelines
        • Creating and Destroying Devices
        • Recovering Audio
      • Using H.264, H.265, and AAC Codecs
        • Sending Audio Frames
        • Sending Video Frames
        • H.264 Support
        • H.265 Support
        • AAC Support
        • OPUS Support
        • Latency of Compressed Streams
        • Stream Validation
      • External Tally Support
      • KVM Support
      • NDI Advanced SDK FPGA Example Designs
        • Prebuilt uSD Images
        • NDI FPGA Reference Design
          • FPGA Projects
            • Changelog
          • C++ Application Code
            • Changelog
          • linux_kernel
            • Changelog
          • uSD Image Builder
            • Changelog
        • Changelog
    • Utilities
      • Unreal Engine SDK
        • Release Notes
        • Licensing
        • NDI Plugin Installation
        • Simple Setup of Broadcast and Receivers
        • NDI Broadcast Actor
        • NDI Receiver Actor
        • NDI Media Assets
        • Getting Started with Example Blueprint Projects
        • Advanced
      • Free Audio
      • Bridge Service
        • Installation
          • Silent Installation
        • Configuration
          • Web UI
          • Configuration File
          • Manual API Key Management
        • Webhooks
        • WebSockets
        • API
    • NDI Certified
      • Certification Guidelines
        • Interoperability Requirements
        • Technical Requirements
      • Certification Process
        • Pre-certification Checklist
        • Device Testing Methods
          • Camera
          • HDMI Encoder
          • SDI Encoder
          • Decoder
          • NDI Controller
          • NDI Monitor
          • Multicast Testing
        • Detailed process
    • Metadata
      • Metadata Sources
      • Metadata for XML
      • XML Validation
      • Metadata Elements
      • Proposed New Metadata Messages
      • PTZ and Control Messages
      • Undocumented Mysteries
  • Developer Guides
    • Decoding with NDI
    • NDI Bridge Deployment
  • FAQ
    • Index
    • NDI Tools
      • What is the NDI Analysis Tool and where do I get it from?
      • Why does my NDI connection stay active once the source is offline?
      • Why are my changes to the NDI JSON configuration file not being saved?
      • Why is the license for my Panasonic camera not active?
      • How does registration for NDI Tools work?
      • The time code on my file is incorrect, how do I change it?
      • How can I make NDI Tools launch automatically?
      • What is the NDI ECCN?
      • How do I use NDI output with Microsoft Teams
      • Where is Screen Capture (HX) for Mac?
    • NDI Certified
      • What is the NDI Certification Program?
      • Why did you start this certification program?โ€‹
      • What happens to my device after it's certified?
      • Is certification mandatory to be a partner of NDI?โ€‹
      • I am an OEM manufacturer, can my products be certified?โ€‹
      • How long does the certification process take?
      • How do I become certified?โ€‹
      • What happens if my product doesnโ€™t meet the requirements for Certification?โ€‹
      • Are there any fees to become NDI Certified?
    • Common Issues
      • I'm having trouble getting multicast set up.
      • I'm having trouble with my NDI HX License
      • Why can't I find my Android 14-based NDI devices on my network?
      • Why wonโ€™t NDI Tools install on my Windows PC?
      • How do I enable NDI in โ€œNewโ€ Microsoft Teams (Windows only)?
      • Why canโ€™t HX Capture display the full resolution of my iPad or iPhone?
      • The NDI HX Camera app won't launch on older phones and iOS
      • Why won't MacOS Sonoma (14.1) recognize NDI Tools as a virtual camera?
      • I'm having issues with Virtual Input for macOS
      • I'm having issues with Final Cut Pro
      • NDI Camera App Issue
    • SDK
      • Where can I find the source code for the FPGA board?
      • What system resources are required to support a design including the NDI FPGA Codecs?
      • Why canโ€™t my h264/265 video be received by an NDI receiver when using the embedded SDK?
      • Can I use the Unreal SDK on Mac?
      • What are the Differences Between the NDI SDK and the NDI Advanced SDK
    • โœจNDI 6
      • Do I need to upgrade to NDI 6 if I'm not using the new features?
      • Is there a fee to upgrade to NDI 6
      • Why doesn't my existing Vendor ID work with NDI 6?
      • How can I get a previous version of NDI Tools or the SDK?
    • NDI HX License Upgrades
      • What is happening with NDI HX Upgrades?
      • Will my existing HX-upgraded camera be affected?
      • I bought a camera before June 30, 2025, but didn't buy an HX license. Can I still get one?
      • I bought a license and a camera but didn't redeem it until after. Can I still get an HX license?
      • If my HX upgrade fails can I transfer the license?
      • Can I sell my upgraded HX camera and keep the license?
      • Will my NDI version work with my current HX license?
      • What does the HX upgrade sunset program mean for camera manufacturers?
      • What will NDI Support do for licenses after the sunset date?
      • I factory reset my camera and forgot the license. Can you help me get it back?
Powered by GitBook

2024 @ NDI Vizrt AB.

On this page
  • Differences between the NDI SDK and the NDI Advanced SDK
  • HDR Metadata
  • Sending Compressed HDR Frames
  • Sending Uncompressed HDR Frames
  • Receiving Compressed HDR Frames
  • Receiving Uncompressed HDR Frames

Was this helpful?

Export as PDF
  1. Developing with NDI
  2. SDK

HDR

Last updated 5 months ago

Was this helpful?

NDI SDK v6 supports 16-bit data formats and standardizes metadata elements to specify wide gamut color primaries and HDR transfer functions, including HLG and PQ. This enables broadcasting high bit depth, wide color gamut, and high dynamic range video, with brightness up to 10000 nits when using the PQ transfer function.

For in-depth information about HDR production, please consult the , "Guidance for operational practices in HDR television production".

The specific HDR capabilities available to your system will vary depending on your license and the SDK you use, as described next.


Differences between the NDI SDK and the NDI Advanced SDK

Systems licensed to integrate the NDI Advanced SDK:

  • Can receive and process HDR content

  • Can send HDR content

When using the trial version of the NDI Advanced SDK, sending HDR content is limited to 30 minutes (the stream will stop automatically afterward).

Systems that integrate the NDI SDK:

- Can receive and process HDR content

- Cannot send content with HDR metadata

Any systems integrating NDI 5 or older versions of both the NDI SDK and the NDI Advanced SDK cannot send or receive HDR content (in this case, a placeholder frame will be displayed).

HDR Metadata

Video frames can be annotated with HDR metadata by writing an XML string into the p_metadata member of the NDIlib_video_frame_v2_t struct.

// // HDR require metadata information in video frame
// note 'transfer' have two possible values for HDR: bt_2100_pq or bt_2100_hlg
NDI_video_frame_16bit.p_metadata =
    "<ndi_color_info "
    "   transfer=\"bt_2100_hlg\" "
    "   matrix=\"bt_2020\" "
    "   primaries=\"bt_2020\" "
    "/> ";

The receiver can use this metadata to interpret the received frames' content correctly. The NDI SDK will not alter the content of the frame in any way.

The HDR metadata format consists of an ndi_color_info XML element containing the following three attributes:

  • "primaries" - specifies the chromaticity coordinates of the color primaries of the video frame.

  • "transfer" - specifies the brightness transfer characteristic.

  • "matrix" - Specifies the matrix coefficients used in deriving luma and chroma from RGB or XYZ primaries.

The following values are defined for these attributes:

"primaries"
"transfer"
โ€œmatrixโ€

โ€œbt_601โ€

โ€œbt_601โ€

โ€œbt_601โ€

โ€œbt_709โ€

โ€œbt_709โ€

โ€œbt_709โ€

โ€œbt_2020โ€

โ€œbt_2020โ€

โ€œbt_2020โ€

โ€œbt_2100โ€

โ€œbt_2100_hlgโ€

โ€œbt_2100โ€

โ€œbt_2100_pqโ€

Example:

<ndi_color_info primaries="bt_2020" transfer="bt_2100_hlg" matrix="bt_2020" />

If multiple XML elements must be added to the same frame, use an ndi_metadata_group XML element as root node.

Example:

<ndi_metadata_group>
    <ndi_color_info primaries="bt_2020" transfer="bt_2100_hlg" matrix="bt_2020" />
</ndi_metadata_group>

Sending Compressed HDR Frames

Sending compressed 10-bit or 12-bit H.264 and HEVC frames is much like non-HDR frames, but with the addition of frame annotations supplying HDR metadata as described above.

Sending Uncompressed HDR Frames

HDR transfer functions are defined in ITU BT.2100 and specify 10 and 12- bit integer representations for both PQ and HLG variants.

To send uncompressed 10-bit and 12-bit HDR frames via SHQ streams, first convert the video data to 16-bit, limited range, and write it into a P216 buffer (or a PA16 buffer if an alpha channel is required).

For limited range 10-bit and 12-bit HDR formats, simply padding the lower bits with zeroes is sufficient to result in a valid 16-bit limited range value.

Please note that full-range signals are not supported by NDI Tools at this point. To convert full-range signals to 16-bit limited range signals, normalize the full-range signal to the 0.0...1.0 floating point range, and convert to limited range 16-bit integers using the quantization equations specified in the ITU BT.2100 recommendation.

Receiving Compressed HDR Frames

The p_metadata member of the NDIlib_video_frame_v2_t data structure may contain the HDR metadata described above. (Please note that the ndi_color_info may be nested under a ndi_metadata_group XML root element.)

NDI receivers receiving HDR frames using NDI SDK versions older than v6 will send a placeholder image showing the incompatibility of the stream.

Receiving Uncompressed HDR Frames

The NDI SDK can uncompress high-bit depth frames to P216 or PA16 buffer formats if required.

When a high bit depth stream is supplied, configure the NDI receiver to use the "best" color format to receive high bit depth frames:

NDIlib_recv_create_v3_t NDI_recv_create_desc;
NDI_recv_create_desc.source_to_connect_to = *p_hdr_source;
NDI_recv_create_desc.color_format = NDIlib_recv_color_format_best;
 
// Create the receiver
NDIlib_recv_instance_t pNDI_recv = NDIlib_recv_create_v3(&NDI_recv_create_desc);
If the incoming NDI stream is high bit depth then the video frame received via NDIlib_recv_capture_v2 will have a fourCC of either NDIlib_FourCC_video_type_P216 or NDIlib_FourCC_video_type_PA16.

Note that if the video frame is requested in 8-bit format, the NDI SDK does not attempt down-mapping from HDR to SDR.

For a detailed description of these video format properties please consult .

For in-depth information about the individual options please consult , "Coding-independent code points for video signal type identification".

๐Ÿ“‚
report ITU-R BT.2408
ITU-T H.273
ITU-T Rec. H.273