Android 14 提供了对使用 JPEG_R
图片格式拍摄 Ultra HDR 压缩图片的支持。此格式向后兼容 SDR JPEG 图片,并且支持对内容进行 HDR 渲染。
如需详细了解 Ultra HDR 格式规范,请参阅 Ultra HDR 图片格式 v1.0。
实现
本部分介绍如何实现 Ultra HDR 功能。
参考实现
AOSP 相机框架和相机服务包含参考 Ultra HDR 实现。
除了相机框架中的参考功能之外,您还可以在相机 HAL 中实现 Ultra HDR 并通告对 JPEG_R
输出的支持,具体方式与其他相机 HAL 输出流相同。在这种情况下,相机 HAL 必须生成必要的恢复图和最终的 JPEG_R
图片,如 Ultra HDR 规范所定义。您可以根据设备硬件和软件功能优化和调整最终输出。
实现选项
设备制造商可以决定其设备的以下级别 Ultra HDR 支持:
- 极简:在此配置中,通过相机服务复合流功能执行的 Ultra HDR 输出默认处于停用状态。如需启用
JpegRCompositeStream
参考实现,请将ro.camera.enableCompositeAPI0JpegR
系统属性设置为true
。由于所有流程和编码都在软件中执行,因此此选项可能会导致延迟时间增加和性能下降。 - 中等:在此选项中,
JpegRCompositeStream
实现会使用 HAL 提供的 SDR JPEG 文件作为基础图片,并使用 P010 帧来计算恢复图。此选项涉及在数据路径中进行软件处理,但与极简选项相比相对较少。 - 丰富:相机 HAL 直接通告并支持
JPEG_R
输出流。通过此选项,设备制造商可以实现设备专用优化,并且可以显著提升图像质量。
如需停用 JpegRCompositeStream
实现,请将 ro.camera.disableJpegR
build 属性设为 true
。如果此 build 属性未设置或设为 false
,在支持 10 位输出功能和并发 10 和 8 位拍摄的设备上,Ultra HDR 会默认通过 JpegRCompositeStream
启用。
验证
如需验证设备上的 UHD 功能,请运行以下测试。
CTS 测试
ImageReaderTest.java#testImageReaderBuilderWithBLOBAndJpegR
ImageReaderTest.java#testJpegR
ImageReaderTest.java#testJpegRDisplayP3
PerformanceTest.java#testSingleCapture
StillCaptureTest.java# testJpegRCapture
ITS 测试
手动测试
如需执行手动测试,请使用 Ultra HDR 图片拍摄实现示例,该实现支持使用 JPEG_R
图片格式配置和拍摄 Ultra HDR。