HDR has become one of video consumption's most important innovations in recent years. Our Practical Guide to HDR by Bitmovin describes the different formats and technology behind them. It describes the different transfer functions and how the signals are presented in the colour spaces. This tutorial gives an overview of the HDR formats that are supported with the Bitmovin Encoder and the possible conversions in between.
What HDR Formats are supported with the Bitmovin Encoder?
Hybrid Log-Gamma (HLG) was jointly developed by the BBC and NHK as a broadcast television HDR format that has a wider dynamic range while remaining backwards-compatible with existing SDR transmission standards. As such, it can be displayed correctly on both SDR and HDR monitors.
HDR10 is an open standard and the most widely used and supported HDR format. It has static metadata that is used to map the content to maximise the display’s brightness and contrast capabilities, applied uniformly to the entire file.
Developed by Dolby Laboratories, Dolby Vision is a dynamic HDR format with accompanying metadata that is used to optimise contrast and light levels for every scene or even frame of a video in order to take full advantage of the display’s capabilities and most accurately reproduce the content creator’s intent.
HDR to SDR Conversion
The conversion to SDR is supported for any of the supported HDR formats. This is possible across multiple video codecs, such as H.264, H.265 or VP9. The output format can be specified in the video configuration itself by setting the dynamicRangeFormat parameter to SDR.
1video_configuration = bitmovin_api.encoding.configurations.video.h265.create(2 h265_video_configuration=H265VideoConfiguration(3 dynamic_range_format=H265DynamicRangeFormat.SDR4 )
Conversion between different HDR Formats
While any HDR format can be converted to SDR, some limitations must be considered when we want to convert between different HDR formats. It is also possible to convert from SDR to HDR, which does not process a higher dynamic range but adds the required metadata to be considered HDR content by the player.
The conversion is done in the same way as HDR to SDR conversion, by setting the dynamicRangeFormat to DOLBY_VISION, HDR10, HLG or SDR.
1 h265_video_configuration=H265VideoConfiguration(2 dynamic_range_format=H265DynamicRangeFormat.DOLBY_VISION3 )4 )5 video_configuration_hdr10 = bitmovin_api.encoding.configurations.video.h265.create(6 h265_video_configuration=H265VideoConfiguration(7 dynamic_range_format=H265DynamicRangeFormat.HDR108 )9 )10 video_configuration_hlg = bitmovin_api.encoding.configurations.video.h265.create(11 h265_video_configuration=H265VideoConfiguration(12 dynamic_range_format=H265DynamicRangeFormat.HLG13 )14 )15 video_configuration_sdr = bitmovin_api.encoding.configurations.video.h265.create(16 h265_video_configuration=H265VideoConfiguration(17 dynamic_range_format=H265DynamicRangeFormat.SDR18 )19)
A full example of how to set up HDR conversion can be found in our public examples.
By setting the dynamicRangeFormat, specific preset parameters are applied to the video configuration. Using the predefined parameters in the presetConfiguration ensures valid configuration and should be considered while setting specific parameters.
Supported codecs for HDR content:
- H.265: HLG, HDR10, Dolby Vision
- VP9: HLG