Android 14 は JPEG_R
画像形式を使用したウルトラ HDR 圧縮画像のキャプチャをサポートしています。この形式は SDR JPEG の下位互換で、コンテンツの HDR レンダリングをサポートしています。
ウルトラ HDR 形式の仕様について詳しくは、ウルトラ HDR 画像形式 v1.0 をご覧ください。
実装
このセクションでは、ウルトラ HDR 機能を実装する方法について説明します。
リファレンス実装
AOSP のカメラ フレームワークとカメラサービスには、ウルトラ HDR のリファレンス実装が含まれています。
カメラ フレームワークのリファレンス機能に加えて、カメラ HAL 内にウルトラ HDR を実装して、他のカメラ HAL 出力ストリームと同様の方法で JPEG_R
出力のサポートをアドバタイズできます。このシナリオでは、ウルトラ HDR 仕様で定義されているように、カメラ HAL は必要なリカバリマップと、最終的な JPEG_R
画像を生成する必要があります。デバイスのハードウェアとソフトウェアの機能に応じて、最終的な出力を最適化し、調整できます。
実装オプション
デバイス メーカーはデバイスにおけるウルトラ HDR サポートのレベルを次から選択できます。
- ミニマル: この設定では、カメラサービスの複合ストリーム機能からのウルトラ HDR 出力はデフォルトで無効になっています。
JpegRCompositeStream
リファレンス実装を有効にするには、ro.camera.enableCompositeAPI0JpegR
システム プロパティをtrue
に設定します。すべてのプロセスとエンコードはソフトウェアで実行されるため、このオプションではレイテンシが増加し、パフォーマンスが低下します。 - 中程度: このオプションでは、
JpegRCompositeStream
実装は HAL による SDR JPEG ファイルをベース画像および P010 フレームとして使用し、リカバリマップを計算します。このオプションでは、データパス内のソフトウェア処理が行われますが、ミニマル オプションと比較すると小規模です。 - 高度: カメラ HAL は直接
JPEG_R
出力ストリームをアドバタイズしてサポートします。このオプションでは、メーカーはデバイス固有の最適化を実装でき、大幅な画像の質の向上を実現できます。
JpegRCompositeStream
実装を無効にするには、ro.camera.disableJpegR
ビルド プロパティを true
に設定します。このビルド プロパティが設定されていない場合、または false
に設定されている場合、10 ビット出力機能と 10 および 8 ビット同時キャプチャをサポートしているデバイスのウルトラ HDR は JpegRCompositeStream
からデフォルトで有効になります。
検証
デバイスのウルトラ HDR 機能を検証するには、次のテストを実行します。
CTS テスト
ImageReaderTest.java#testImageReaderBuilderWithBLOBAndJpegR
ImageReaderTest.java#testJpegR
ImageReaderTest.java#testJpegRDisplayP3
PerformanceTest.java#testSingleCapture
StillCaptureTest.java# testJpegRCapture
ITS テスト
手動テスト
手動テストを実行するには、ウルトラ HDR 画像キャプチャのサンプル実装を使用します。これには、JPEG_R
画像形式を使用したウルトラ HDR の設定とキャプチャのサポートが含まれています。