HDR dans les captures d'écran Android

Depuis l'introduction de la vidéo HDR (High Dynamic Range), les services de streaming ont commencé à diffuser des vidéos HDR, en se concentrant sur les expériences en plein écran. Récemment, les applications de réseaux sociaux ont commencé à prendre en charge la vidéo HDR et l'Ultra HDR, ce qui indique un intérêt croissant pour l'adoption du HDR dans diverses applications.

Compatibilité HDR d'Android

Voici les étapes clés de la prise en charge de la technologie HDR par Android au fil des ans:

Android 7

  • Prise en charge initiale du décodage et de l'affichage des vidéos HDR.
  • Amélioration continue des fonctionnalités HDR.

Android 13

  • Compatibilité de bout en bout avec la capture, l'encodage et l'affichage vidéo HDR.
  • Introduction de la composition SDR et HDR mixte, qui définit différentes plages de luminance affichées entre SDR et HDR.

Android 14

  • Compatibilité avec les images HDR avec Ultra HDR.

La prise en charge des captures d'écran avec HDR a également évolué et a subi un certain nombre de modifications au fil des ans.

Améliorations des fonctionnalités de capture d'écran HDR

Cette section suit l'évolution de la fonctionnalité de capture d'écran HDR dans les mises à jour récentes d'Android.

Android 9

SurfaceFlinger, le compositeur graphique d'Android, est compatible avec la vidéo HDR. Le rendu du GPU pour les vidéos et les captures d'écran HDR est compatible avec un mappeur de tons polynomial complexe. Cette courbe de mappage des tons n'est pas toujours équivalente au mappeur de tons de l'écran. Par conséquent, les captures d'écran diffèrent du contenu à l'écran.

Android 13

Un plug-in de mappage des tons est ajouté au bloc de rendu GPU de SurfaceFlinger, ce qui permet à l'OEM de fournir un nuanceur GPU correspondant à la courbe de mappage des tons de son écran. Les captures d'écran correspondent presque à ce qui s'affiche à l'écran, mais avec les différences suivantes:

  • Les captures d'écran restent au format SDR. Par conséquent, lorsqu'elles sont affichées à côté d'une scène HDR, les régions HDR de la capture d'écran apparaissent plus sombres.
  • La luminance SDR n'est pas gérée, ce qui fait que le contenu SDR de la capture d'écran apparaît aussi lumineux que le contenu HDR.

En d'autres termes, toute vidéo HDR capturée dans la capture d'écran est convertie en vidéo SDR.

Android 14

L'Ultra HDR pose un défi important pour les captures d'écran. Contrairement aux vidéos, les images sont généralement affichées dans le framebuffer de l'UI, ce qui a deux implications principales:

  • Le traitement des images, y compris le mappage des tons, ne doit pas différer de l'UI environnante.
  • Les applications sont chargées du mappage des tons basé sur la source lors de l'affichage de leur UI.

Pour atténuer ce problème, trois implémentations de capture d'écran sont possibles:

  • Préservez les détails HDR d'une image Ultra HDR, ce qui entraîne une interface utilisateur d'application sombre dans la capture d'écran.
  • Préservez les détails de l'interface utilisateur de l'application, ce qui entraîne le recadrage de l'image Ultra HDR.
  • Trouvez un compromis en éclaircissant l'interface utilisateur de l'application tout en coupant les points forts du HDR.

Android 14 implémente la troisième approche consistant à éclaircir l'interface utilisateur de l'application et à couper les points forts HDR.

Android 15-QPR1

SurfaceFlinger inclut un algorithme de mappage des tons local pour les captures d'écran. Ce processus implique les étapes suivantes:

  • Divisez l'image d'entrée en images plus petites.
  • Calcul de la luminance maximale dans chaque image et suppression des valeurs de luminance faible dans chaque section.
  • Interpolation des luminances calculées par floutage et rééchantillonnage.
  • Application d'un mappeur de tons Reinhard paramétré à l'image d'entrée, en fonction des valeurs de luminance interpolées.

Cet algorithme montre des améliorations significatives des captures d'écran entre Android 14 et Android 15-QPR1, comme illustré dans les exemples suivants:

  • L'exemple 1 est une capture d'écran d'une vidéo HDR superposée à une page Chrome contenant Ultra HDR. Les couleurs de l'interface utilisateur sont principalement conservées dans la nouvelle implémentation, et l'image n'est plus rognée.

    Android 14 Android 15-QPR1
    Exemple 1 dans Android 14 Exemple 1 dans Android 15qpr

    Figure 1 : Comparaison d'Android 14 et d'Android 15-QPR1 pour l'exemple 1.

  • L'exemple 2 est une capture d'écran d'une vidéo HDR superposée à Settings (Paramètres) avec des captures d'écran ultérieures. Sous Android 14, les couleurs des captures d'écran sont progressivement plus sombres. Dans Android 15-QPR1, le mappeur de tons reproduit et préserve correctement les couleurs de l'interface utilisateur.

    Android 14 Android 15-QPR1
    Exemple 2 sous Android 14 Exemple 2 sous Android 15qpr

    Figure 2. Comparaison d'Android 14 et d'Android 15-QPR1 pour l'exemple 2.