La diffusion de vidéos HDR (High Dynamic Range) sur les appareils mobiles souffre souvent d'un défaut majeur : l'incohérence visuelle entre les différents écrans. Lors de la navigation dans des flux de contenus mixtes où coexistent des éléments SDR (Standard Dynamic Range) et HDR, les pipelines de rendu ont du mal à les équilibrer. Cela entraîne des transitions irrégulières et discordantes, ainsi que des pics de luminosité imprévisibles.
Pour les créateurs de contenu, ce manque d'uniformité compromet l'intention artistique. Une vidéo HDR méticuleusement étalonnée sur un moniteur professionnel peut s'afficher avec des hautes lumières écrêtées, des tons délavés ou des ombres écrasées lorsqu'elle est visionnée sur un appareil grand public.
Eclipsa Video est une norme vidéo HDR moderne conçue pour résoudre précisément ces problèmes d'écosystème multi-appareil. Basée sur la spécification SMPTE ST 2094-50, la vidéo Eclipsa permet aux écrans d'adapter dynamiquement le mappage du contenu en fonction des capacités matérielles physiques et des conditions d'éclairage ambiant en temps réel. Grâce à l'intégration intégrée sans configuration dans Jetpack Media3 ExoPlayer et aux pipelines de capture Camera2 standards, la vidéo Eclipsa offre aux équipes d'ingénierie mobile un moyen sans frais et sans friction d'implémenter un streaming vidéo de nouvelle génération adapté au matériel, qui préserve l'intention artistique sur chaque écran.
Architecture technique de la norme SMPTE ST 2094-50
La marge de luminance des écrans mobiles, c'est-à-dire la quantité de luminosité disponible au-dessus du point blanc de référence de l'écran, varie considérablement. Lorsque les limites matérielles d'un écran ne correspondent pas aux exigences de mastering d'une vidéo HDR, les zones claires sont tronquées ou paraissent ternes. La marge de sécurité réelle et le point blanc de référence d'un écran changent de manière dynamique, car les capteurs de luminosité ambiante ajustent le panneau à l'environnement.
La norme SMPTE ST 2094-50 résout ce problème en introduisant des métadonnées à deux couches qui garantissent la cohérence visuelle grâce à deux piliers principaux :
Ancre blanche de référence
Cela établit une référence stricte qui mappe la luminosité maximale des éléments SDR directement sur le point blanc de référence de l'écran. Toute valeur de luminance supérieure à cette ancre est réservée strictement aux zones claires HDR. Ce mécanisme d'ancrage prévisible garantit que lorsque les couches SDR et HDR sont composées ensemble à l'écran, elles conservent leur relation visuelle prévue sans se délaver mutuellement.
Courbes de gain adaptatives à la marge de progression
Au lieu d'imposer une courbe de mappage des tons statique, les créateurs intègrent des métadonnées paramétriques qui indiquent au pipeline d'affichage exactement comment effectuer la mise à l'échelle lorsque la marge est limitée. La norme offre aux créateurs la flexibilité nécessaire pour choisir si un panneau ciblé doit appliquer un écrêtage progressif ou un écrêtage strict aux tons clairs, ou compresser les tons moyens et les ombres pour préserver activement les détails les plus fins dans les zones lumineuses.
Plates-formes compatibles
La compatibilité au niveau de la plate-forme avec la lecture et la capture de vidéos Eclipsa est introduite dans Android 17 (niveau d'API 37).
Implémenter la lecture
Pour le développement d'applications standards, Media3 ExoPlayer est compatible d'office avec les vidéos Eclipsa. Lors de l'analyse de fichiers intégrés avec des métadonnées SMPTE 2094-50, ExoPlayer extrait et applique les métadonnées de manière fluide, sans nécessiter de configuration personnalisée du lecteur.
Initialisation standard du lecteur : pour instancier la surface de votre lecteur, consultez Présentation de Media3 ExoPlayer.
Remplacements de pistes : si votre application interroge ou verrouille de manière programmatique des profils HDR spécifiques, consultez l'API de sélection de pistes Media3.
Nous vous recommandons de décharger les pipelines de lecture vers Jetpack Media3. ExoPlayer gère de manière native l'extraction de conteneurs de bas niveau, ce qui contourne complètement les artefacts de décodage connus au niveau de la plate-forme présents sur les couches de rendu anciennes dans Android 16 (niveau d'API 36) et versions antérieures.
Implémenter la capture vidéo
Pour enregistrer une vidéo Eclipsa à partir d'un appareil, votre pipeline de caméra doit être configuré pour générer des métadonnées SMPTE 2094-50 en attribuant un profil de plage dynamique compatible.
Une fois la compatibilité de l'appareil validée à l'aide de CameraCharacteristics, acheminez le flux vers la surface de votre encodeur à l'aide du profil DynamicRangeProfiles.HLG10_SMPTE_2094_50. Pour savoir comment interroger et configurer des profils de plage dynamique dans les sessions de l'appareil photo, consultez Enregistrement vidéo HDR.
Aucune configuration de codec explicite n'est requise pour les métadonnées SMPTE 2094-50. Le framework multimédia Android associe et transmet automatiquement les métadonnées si elles existent dans le profil dynamique actif.
Considérations sur la compatibilité et les performances
Pour surveiller les performances, récupérez l'objet Display actif et recherchez LutProperties sur l'objet OverlayProperties renvoyé par getOverlaySupport() afin d'identifier la disponibilité des chemins d'accès avec accélération matérielle.
Pour les appareils qui ne disposent pas de fonctionnalités d'accélération matérielle, la possibilité de désactiver l'affichage vidéo Eclipsa dans Exoplayer est en cours de développement.
Ressources supplémentaires
- Spécification SMPTE ST 2094-50
- HDR Explorer : application Web permettant d'inspecter les métadonnées SMPTE ST 2094-50 et les courbes de gain