High Dynamic Range Modes

Various forms of high dynamic range (HDR) capture are available in the Camera2 API. This page describes the various features, capabilities, and modes for HDR and how they differ depending on the specific API.

HDR still capture

Still capture in HDR encapsulates a variety of algorithms for improving the dynamic range of mobile cameras.

For Android 13 and higher, the 10-bit camera output capability supports 10-bit camera output. The HDR dynamic range DynamicRangeProfiles class lets camera clients configure camera outputs capable of producing frames with actual 10-bit pixel format and corresponding 10-bit transfer functions. 10-bit camera output configurations using HDR dynamic range profiles enable only the extended physical bit depth. 10-bit camera output configurations can use the following modes in conjunction with the HDR scene mode:

  • 10-bit uncompressed still capture using the P010 pixel format.
  • HDR compressed still capture using the JPEG_R pixel format based on the Ultra HDR specification.

For devices running Android 12 or lower, HDR still capture methods involve processing frames that at some point get compressed to the standard 8-bit dynamic range. The following are HDR still capture methods where several frames with different exposures are captured and the final HDR result is produced by fusing the individual images:

  • HDR scene mode: This mode is implemented at the camera HAL layer and if supported can be set by camera clients within regular camera capture requests.
  • HDR extension type: This extension type is recommended for high contrast scenes. Uses a capture session with limited functionality when compared to regular capture sessions. On the same device, camera extensions can produce results with higher image quality than regular capture requests.

HDR video recording

In contrast to HDR still capture, video HDR refers only to HDR video capture (10-bit video recording).