HDR in Android-Screenshots

Seit der Einführung von HDR-Videos (High Dynamic Range) bieten Streamingdienste HDR-Videos an, die sich vor allem für die Wiedergabe im Vollbildmodus eignen. In letzter Zeit haben Social-Media-Apps die Unterstützung für HDR-Videos und Ultra-HDR eingeführt. Das deutet auf ein wachsendes Interesse an der HDR-Einführung in verschiedenen Apps hin.

HDR-Unterstützung unter Android

Im Folgenden finden Sie die Meilensteine der Unterstützung der HDR-Technologie durch Android im Laufe der Jahre:

Android 7

  • Erste Unterstützung für die Dekodierung und Anzeige von HDR-Videos.
  • Weiterhin verbesserte HDR-Funktionen

Android 13

  • End-to-End-Unterstützung für die Aufzeichnung, Codierung und Anzeige von HDR-Videos
  • Einführung der kombinierten SDR- und HDR-Komposition, mit der unterschiedliche darstellbare Leuchtdichtebereiche zwischen SDR und HDR definiert werden.

Android 14

Auch die Unterstützung von Screenshots mit HDR hat sich im Laufe der Jahre weiterentwickelt und einige Änderungen erfahren.

Verbesserte HDR-Screenshotfunktionen

In diesem Abschnitt wird die Entwicklung der HDR-Screenshot-Funktion in den letzten Android-Updates verfolgt.

Android 9

SurfaceFlinger, der Grafik-Compositor von Android, unterstützt jetzt HDR-Videos. Das GPU-Rendering von HDR-Videos und -Screenshots wird mit einem komplexen polynomischen Tonmapper unterstützt. Diese Tonwertkurve entspricht nicht immer dem Tonwert-Mapper des Displays. Daher unterscheiden sich Screenshots von den Inhalten auf dem Bildschirm.

Android 13

Dem GPU-Rendering-Block von SurfaceFlinger wird ein Tonmapping-Plug-in hinzugefügt, damit der OEM einen GPU-Shader bereitstellen kann, der der Tonmapping-Kurve des Displays entspricht. Die Screenshots stimmen fast mit dem überein, was auf dem Bildschirm zu sehen ist, mit folgenden Unterschieden:

  • Screenshots bleiben im SDR-Format. Daher erscheinen die HDR-Bereiche im Screenshot im Vergleich zu einer HDR-Szene dunkler.
  • Die SDR-Leuchtkraft wird nicht verwaltet, sodass SDR-Inhalte im Screenshot so hell wie HDR-Inhalte erscheinen.

Mit anderen Worten: Alle im Screenshot aufgenommenen HDR-Videos werden in SDR-Videos konvertiert.

Android 14

Ultra HDR stellt eine große Herausforderung für Screenshots dar. Im Gegensatz zu Videos werden Bilder in der Regel im UI-Framebuffer gerendert. Das hat zwei Hauptfolgen:

  • Bilder dürfen keine Bildverarbeitung, einschließlich Tonmapping, haben, die sich von der umgebenden Benutzeroberfläche unterscheidet.
  • Apps sind für das quellebasierte Tonmapping beim Rendern der Benutzeroberfläche verantwortlich.

Es gibt drei Möglichkeiten, Screenshots zu erstellen:

  • Die HDR-Details eines Ultra-HDR-Bilds werden beibehalten, was zu einer dunkleren App-Benutzeroberfläche im Screenshot führt.
  • Die Details der App-Benutzeroberfläche werden beibehalten, was zu einem Ausschneiden des Ultra-HDR-Bildes führt.
  • Sie können einen Kompromiss eingehen, indem Sie die App-Benutzeroberfläche aufhellen und gleichzeitig HDR-Highlights zuschneiden.

Android 14 implementiert den dritten Ansatz, bei dem die App-Benutzeroberfläche aufgehellt und HDR-Highlights zugeschnitten werden.

Android 15-QPR1

SurfaceFlinger enthält einen lokalen Tonmapping-Algorithmus für Screenshots. Dazu sind folgende Schritte erforderlich:

  • Das Eingabebild wird in kleinere Bilder unterteilt.
  • Die maximale Leuchtkraft in jedem Bild wird berechnet und niedrige Leuchtkraftwerte in den einzelnen Abschnitten werden verworfen.
  • Interpolation der berechneten Leuchtdichten durch Weichzeichnen und Resampling.
  • Anwendung eines parametrisierten Reinhard-Tonmappers auf das Eingabebild basierend auf den interpolierten Leuchtdichtewerten.

Dieser Algorithmus bietet erhebliche Verbesserungen bei Screenshots zwischen Android 14 und Android 15-QPR1, wie in den folgenden Beispielen zu sehen:

  • Beispiel 1 ist ein Screenshot eines HDR-Videos, das auf einer Chrome-Seite mit Ultra-HDR eingeblendet ist. Die Farben der Benutzeroberfläche bleiben in der neuen Implementierung größtenteils erhalten und das Bild wird nicht mehr zugeschnitten.

    Android 14 Android 15-QPR1
    Beispiel 1 in Android 14 Beispiel 1 in Android 15qpr

    Abbildung 1: Vergleich von Android 14 und Android 15-QPR1 für Beispiel 1

  • Beispiel 2 ist ein Screenshot eines HDR-Videos, das über die Einstellungen gelegt ist, mit nachfolgenden Screenshots. In Android 14 werden die Farben von Screenshots nacheinander dunkler. In Android 15-QPR1 werden die Farben der Benutzeroberfläche vom Tonemapper korrekt repliziert und beibehalten.

    Android 14 Android 15-QPR1
    Beispiel 2 in Android 14 Beispiel 2 in Android 15qpr

    Abbildung 2: Vergleich von Android 14 und Android 15-QPR1 für Beispiel 2

Android 16

Ähnlich wie bei Ultra HDR wird in HDR-Screenshots eine Verstärkungskarte in der Screenshotdatei gespeichert, um die HDR-Darstellung beim Rendern wiederherzustellen. Im Gegensatz zu Ultra HDR bleibt der Screenshot jedoch im PNG-Format, um für die Abwärtskompatibilität mit Systemen zu sorgen, die PNG-Screenshots aufnehmen.

Die Details zur Screenshot-Erstellung sind:

  • Wenn HDR-Inhalte auf dem Gerät angezeigt werden, wird ein Screenshot mit FP16-Pixeln generiert.
  • Der lokale Tonmapper, der in Android 15-QPR1 beschrieben wird, generiert eine 8‑Bit-SDR-Basiswiedergabe.
  • Eine 8‑Bit-Gewinnkarte wird durch Kombination der SDR-Basiswiedergabe mit der HDR-Wiedergabe erstellt.
  • Die SDR-Basiswiedergabe und die Gainmap werden in einer einzigen PNG-Datei codiert.

Die Details zur PNG-Codierung sind:

  • Die Gainmap wird als PNG-Bild codiert, das einen gmAP-Chunk enthält, der die ISO 21496-1-Metadaten für die Gainmap enthält.
  • Die SDR-Basisdarstellung ist als PNG-Bild codiert, das einen gmAP-Chunk enthält, der die Version der ISO 21496-1-Metadaten enthält. Dieses PNG-Bild enthält auch einen gdAT-Chunk, der die gesamte codierte Gainmap-PNG enthält.

Die folgende Abbildung zeigt das Layout der PNG-Chunks:

Layout der PNG-Chunks

Abbildung 3: Layout der PNG-Chunks.

Unter Android 16 unterstützt der PNG-Codec sowohl die Codierung als auch die Dekodierung dieser PNGs. Apps können ein PNG mit einer Gainmap auf die gleiche Weise wie Ultra HDR anzeigen.