このページでは、SDR と HDR の混合構成の SDR コンテンツ調光機能の要件、構成、検証について説明します。
Android 13 では、以下の機能が導入されており、画面に SDR と HDR の合成を同時に表示する際のサポートが改善されています。
SDR 対応範囲への HDR 輝度のトーン マッピング
libtonemap
を使用することで、Hardware Composer(HWC)、SurfaceFlinger、アプリ間でトーン マッピングの整合性を保つことが可能です。OEM は、独自のトーン マッピング曲線を実装して、ベンダー コンポーネントとフレームワーク コンポーネント間でこれを共有できます。HDR コンテンツと同時に表示されるときに画面上の SDR コンテンツを暗くする
HDR コンテンツが画面上に表示されると、その HDR コンテンツによる輝度範囲の増加に対応するために、画面の明るさが上がります。同じ画面上にある SDR コンテンツは、画面の明るさが増加するにつれてシームレスに暗くなります。そのため、SDR コンテンツの実際の明るさが変化することはありません。OEM は、SDR コンテンツを HDR コンテンツと一緒に表示する場合に、画面上の SDR コンテンツを減光するように内蔵ディスプレイを構成できます。
OEM の要件
SDR コンテンツの減光機能で HDR コンテンツと SDR コンテンツの混合構成を改善するには、次の要件を満たす必要があります。
HWC 用の AIDL バージョンを実装します。これには、デバイスのカラー パイプラインでのハードウェア アクセラレーションされた調光のサポートが含まれます。必要な機能の実装については、HWC 用の AIDL をご覧ください。
HWC でハードウェア オーバーレイの減光を正確に行うには、オーバーレイの線形光をスケーリングするために特定のハードウェアが必要です。十分なハードウェアのない実装の場合、SurfaceFlinger で合成を GPU に委任する必要があります。この場合、バッテリーの消耗が発生し、調光の品質が下がる可能性があります。
デバイスは、
Display.getHdrCapabilities
で報告された少なくとも 1 つの HDR テクノロジーをサポートしている必要があります。
構成
SDR コンテンツと HDR コンテンツの混合構成機能は、内蔵ディスプレイのデバイス特性に応じて構成できます。そのため、バッテリー駆動時間、焼き付き、コンテンツの忠実度のトレードオフを考慮できます。
改善された合成を有効にして調整するには、スキーマが display-device-config.xsd
にあるディスプレイ構成を使用します。次の新しい主要要素が、ディスプレイ構成を設定する際に重要になります。
sdrHdrRatioMap
要素は SDR 調光を有効にし、画面上に HDR コンテンツがある場合に表示される HDR の画面輝度を SDR ホワイト ポイントにマッピングするためのルックアップ テーブル(LUT)を定義します。sdrHdrRatioMap
が定義されている場合、画面の明るさを制御する一環として、DisplayManagerService
は目的の SDR ホワイト ポイントを SurfaceFlinger に通知して、SurfaceFlinger はレイヤごとに適切な調光比率を HWC に送信できるようにします。sdrHdrRatioMap
が定義されていない場合、HWC 実装が SDR 調光をサポートしている場合でも、SDR 調光は有効になりません。0~100 の値の範囲を持つ
minimumHdrPercentOfScreen
要素は、パネルの高輝度モードをオンにできるタイミングを制御します。Android 13 ではこのしきい値を調整して、ピクチャー イン ピクチャーのシナリオなど、さまざまな状況で高輝度モードを有効にできます。以前のバージョンの AOSP では、この値が 50% に固定されていました。
ディスプレイ構成の主な要素については、次のコードブロックをご覧ください。
<displayConfiguration>
...
<highBrightnessMode>
...
<!--Percentage of the screen that must be covered by HDR layers until high brightness mode is enabled.
<minimumHdrPercentOfScreen>...</minimumHdrPercentOfScreen>
<!--sdrHdrRatioMap, backed by spline, must have at least two entries -->
<sdrHdrRatioMap>
<point>
<sdrNits>...</sdrNits>
<hdrRatio>...</hdrRatio>
</point>
<point>
<sdrNits>...</sdrNits>
<hdrRatio>...</hdrRatio>
</point>
<!--More interpolation points may be added –->
...
</sdrHdrRatioMap>
...
</highBrightnessMode>
...
</displayConfiguration>
注意点
トーン マッピングと SDR コンテンツの減光機能を有効にすると、次のような状況が発生する可能性があります。
SDR コンテンツ要素が減光されて、デバイス上で表示される HDR コンテンツの忠実度が上がる可能性があります。
次のような場合は、バッテリー駆動時間が短くなることがあります。
調光操作を GPU に委ねる HWC 実装により、GPU の使用が増加する可能性があります。
高輝度モードを有効にするためのしきい値を低く設定できるディスプレイ構成では、画面の輝度が上がり電力消費量が増加する可能性があります。
高輝度モードでの長時間の使用に伴い、ディスプレイの健全性が損なわれる可能性があり、焼き付きなどの長期的な問題が発生する可能性があります。
検証
OEM は、HWC のテストスイートの一部として含められている VTS テストを使用して、調光の正確性の確認と入力と調光の比率の検証を行えます。
この機能の検証はデバイスによって異なるため、これに対応する CTS テストや GTS テストはありません。
OEM は、手動テストを実行して、減光された SDR 要素の画質が許容範囲であることを検証する必要があります。OEM は、SurfaceView
でデバイスがサポートしている HDR 標準のコンテンツを表示して、HDR コンテンツとともに表示される SDR 要素が明るすぎないかを検証できます。
問題
SDR の画像が減光されると、元の画像の暗い箇所の情報が失われるブラック クラッシュが発生することがあります。これは、暗い色の値がより小さな一連の暗色のコードにまとめられるためです。
許容範囲外のブラック クラッシュを生じさせる調光がある実装の場合は、バンディング効果を低減する目的で最終的な画像にノイズを挿入するディザリング アルゴリズムを実装する必要があります。
カラー パイプラインの適切な場所で画像をディザリングできない HWC 実装の場合、SurfaceFlinger が GPU で調光とディザリングを適用するようにリクエストする必要があります。
実装では、sdrHdrRatioMap
の値を調整して、SDR 要素の調光の程度を制限することもできます。非常に低い輝度まで減光するには、GPU を使用する必要があります。これにより画質は改善されますが、バッテリー駆動時間が低下します。