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 capabilities 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).