Après l'introduction des vidéos 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. Les applications de réseaux sociaux sont désormais compatibles avec la vidéo HDR et l'Ultra HDR, ce qui indique un intérêt croissant pour l'adoption du HDR dans différentes applications.
Prise en charge du HDR sur Android
Android est compatible avec la technologie HDR depuis plusieurs étapes :
Android 7
- Prise en charge initiale du décodage et de l'affichage des vidéos HDR.
- Des avancées continues dans les capacités HDR.
Android 13
- Prise en charge de bout en bout de la capture, de l'encodage et de l'affichage des vidéos HDR.
- Introduction de la composition mixte SDR et HDR, qui définit différentes plages de luminance affichables entre SDR et HDR.
Android 14
- Prise en charge des images HDR avec Ultra HDR.
La prise en charge des captures d'écran HDR a également évolué et changé.
Améliorations des fonctionnalités de capture d'écran HDR
Cette section décrit l'évolution de la fonctionnalité de capture d'écran HDR dans les mises à jour d'Android.
Android 9
SurfaceFlinger, le compositeur graphique d'Android, est désormais compatible avec les vidéos HDR. Le rendu GPU des vidéos et des captures d'écran HDR utilise un mappeur de tonalité polynomial complexe. Cette courbe de mappage de tonalités n'est pas toujours équivalente au mappeur de tonalités de l'écran. Les captures d'écran sont donc différentes du contenu affiché à l'écran.
Android 13
Le bloc de rendu GPU de SurfaceFlinger inclut un plug-in de mappage de tonalité, qui permet à l'OEM de fournir un nuanceur GPU correspondant à la courbe de mappage de tonalité de son écran. Les captures d'écran correspondent presque au contenu affiché à 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. Par conséquent, le contenu SDR de la capture d'écran apparaît aussi lumineux que le contenu HDR.
En d'autres termes, le système convertit toute vidéo HDR capturée dans la capture d'écran en vidéo SDR.
Android 14
L'Ultra HDR pose un problème majeur pour les captures d'écran. Contrairement aux vidéos, le système affiche généralement les images dans le framebuffer de l'UI, ce qui a deux conséquences principales :
- Les images ne peuvent pas faire l'objet d'un traitement d'image, y compris d'un mappage de tons, qui diffère de l'UI environnante.
- Les applications sont responsables du mappage des tons basé sur la source lors de l'affichage de leur UI.
Pour résoudre ce problème, envisagez trois implémentations potentielles de capture d'écran :
- Préservez les détails HDR d'une image Ultra HDR, ce qui entraîne l'assombrissement de l'UI de l'application dans la capture d'écran.
- Conservez les détails de l'UI de l'application, ce qui entraîne le rognage des images Ultra HDR.
- Faites un compromis en augmentant la luminosité de l'interface utilisateur de l'application tout en écrêtant les zones claires HDR.
Android 14 implémente la troisième approche, qui consiste à éclaircir l'UI de l'application et à rogner les zones claires HDR.
Android 15 QPR1
SurfaceFlinger inclut un algorithme de mappage des tons local pour les captures d'écran. Ce processus implique les actions suivantes :
- Diviser l'image d'entrée en images plus petites.
- Calculer la luminance maximale de chaque image et supprimer les valeurs de luminance faibles dans chaque section.
- Interpolation des luminances calculées par floutage et rééchantillonnage.
- Appliquer un mappeur de tons Reinhard paramétré à l'image d'entrée, en fonction des valeurs de luminance interpolées.
Cet algorithme améliore considérablement les captures d'écran entre Android 14 et Android 15 QPR1, comme le montrent les exemples suivants :
L'exemple 1 est une capture d'écran d'une vidéo HDR superposée à une page Chrome contenant de l'Ultra HDR. Les couleurs de l'UI sont en grande partie conservées dans la nouvelle implémentation, et l'image n'est plus rognée.
Android 14 Android 15 QPR1
Figure 1. Comparaison entre Android 14 et Android 15 QPR1 pour l'exemple 1.
L'exemple 2 est une capture d'écran d'une vidéo HDR superposée aux Paramètres avec les captures d'écran suivantes. Dans Android 14, les couleurs des captures d'écran sont de plus en plus sombres. Dans Android 15 QPR1, le mappeur de tons réplique et préserve correctement les couleurs de l'interface utilisateur.
Android 14 Android 15 QPR1
Figure 2. Comparaison d'Android 14 et d'Android 15 QPR1 pour l'exemple 2.
Android 16
Comme pour l'Ultra HDR, les captures d'écran HDR stockent une gainmap dans le fichier de capture d'écran pour récupérer la représentation HDR lors du rendu. Toutefois, contrairement à l'Ultra HDR, la capture d'écran reste au format PNG pour assurer la rétrocompatibilité avec les systèmes qui ingèrent les captures d'écran PNG.
La génération de captures d'écran implique les éléments suivants :
- Lorsque du contenu HDR est affiché sur l'appareil, une capture d'écran est générée à l'aide de pixels FP16.
- Le mappeur de tons local décrit dans Android 15 QPR1 génère un rendu SDR de base 8 bits.
- Une gainmap de 8 bits est produite en combinant le rendu de base SDR avec le rendu HDR.
- Le rendu de base SDR et la gainmap sont encodés dans un seul fichier PNG.
L'encodage PNG implique les éléments suivants :
- La carte de gain est encodée sous forme d'image PNG, qui inclut un fragment
gmAPcontenant les métadonnées ISO 21496-1 de la carte de gain. - La version de base SDR est encodée sous forme d'image PNG, qui inclut un fragment
gmAPcontenant la version des métadonnées ISO 21496-1. Cette image PNG inclut également un blocgdAT, qui contient l'intégralité du fichier PNG de la gainmap encodée.
La figure suivante montre la disposition des blocs PNG :
Figure 3. Mise en page des blocs PNG.
Avec Android 16, le codec PNG prend en charge l'encodage et le décodage de ces PNG. Les applications peuvent afficher un fichier PNG avec une gainmap de la même manière que Ultra HDR.