このページでは、SDR と HDR が混在するコンポジションの SDR コンテンツ ディミング機能の要件、構成、および検証について説明します。
Android 13 では、次の機能を導入することで、SDR と HDR のコンポジションを画面に同時に表示するためのサポートが向上しています。
HDR 輝度を SDR 互換範囲にトーン マッピングします。
libtonemap
を使用すると、Hardware Composer (HWC)、SurfaceFlinger、アプリの間でトーン マッピングを一貫させることができます。 OEM は、独自のトーン マッピング カーブを実装して、ベンダーとフレームワーク コンポーネント間で共有できます。HDR コンテンツと同時に表示される場合、画面上の SDR コンテンツを暗くします。
HDR コンテンツが画面に表示されると、HDR コンテンツの増加した輝度範囲に対応するために、画面の明るさが増加します。 SDR コンテンツの知覚的な明るさが変化しないように、画面の明るさが増加すると、画面上にもある SDR コンテンツはシームレスに暗くなります。 OEM は、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 を使用する必要があります。これにより、画質は向上しますが、バッテリー寿命が短くなる可能性があります。