HDR
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 report ITU-R BT.2408, "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.
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โ |
For a detailed description of these video format properties please consult ITU-T H.273.
Example:
If multiple XML elements must be added to the same frame, use an ndi_metadata_group
XML element as root node.
Example:
For in-depth information about the individual options please consult ITU-T Rec. H.273, "Coding-independent code points for video signal type identification".
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:
Note that if the video frame is requested in 8-bit format, the NDI SDK does not attempt down-mapping from HDR to SDR.
Last updated