Cette page décrit la prise en charge des métadonnées, les commandes de réglage individuelles et la prise en charge des données brutes des capteurs.
Compatibilité avec les métadonnées
Pour que le framework Android puisse enregistrer les fichiers image bruts, des métadonnées importantes sont requises sur les caractéristiques du capteur. Cela inclut des informations telles que les espaces colorimétriques et les fonctions d'ombrage de l'objectif.
La plupart de ces informations sont une propriété statique du sous-système de caméras et peuvent donc être interrogées avant de configurer des pipelines de sortie ou d'envoyer des requêtes. Les nouvelles API de l'appareil photo étendent considérablement les informations fournies par la méthode getCameraInfo pour fournir ces informations à l'application.
De plus, le contrôle manuel du sous-système de caméras nécessite un retour d'informations de la part des différents appareils sur leur état actuel et sur les paramètres réels utilisés pour capturer une image donnée. Les valeurs réelles des commandes (temps d'exposition, durée du frame et sensibilité) telles qu'elles sont réellement utilisées par le matériel doivent être incluses dans les métadonnées de sortie. C'est essentiel pour que les applications sachent quand un écrêtage ou un arrondi a eu lieu, et pour qu'elles puissent compenser les paramètres réels utilisés pour la capture d'image.
Par exemple, si une application définit la durée du frame sur 0 dans une requête, le HAL doit limiter la durée du frame à la durée minimale réelle pour cette requête et signaler cette durée minimale limitée dans les métadonnées du résultat de sortie.
Ainsi, si une application doit implémenter une routine 3A personnalisée (par exemple, pour mesurer correctement une rafale HDR), elle doit connaître les paramètres utilisés pour capturer le dernier ensemble de résultats qu'elle a reçus afin de mettre à jour les paramètres de la prochaine requête. Par conséquent, la nouvelle API Camera ajoute une quantité importante de métadonnées dynamiques à chaque frame capturé. Cela inclut les paramètres demandés et réels utilisés pour la capture, ainsi que des métadonnées supplémentaires par frame, telles que les codes temporels et la sortie du générateur de statistiques.
Contrôle par paramètre
Pour la plupart des paramètres, l'objectif est qu'ils puissent être modifiés à chaque frame, sans introduire de saccades ni de retard importants dans le flux de frames de sortie. Idéalement, la fréquence d'images de sortie doit être contrôlée uniquement par le champ de durée d'image de la requête de capture et être indépendante de toute modification de la configuration des blocs de traitement. En réalité, certains contrôles spécifiques sont connus pour être lents à modifier. Il s'agit notamment de la résolution et du format de sortie du pipeline de la caméra, ainsi que des contrôles qui affectent les appareils physiques, tels que la distance focale de l'objectif. Les exigences exactes pour chaque ensemble de contrôles sont détaillées plus loin.
Prise en charge des données brutes des capteurs
En plus des formats de pixels compatibles avec l'ancienne API, la nouvelle API exige la compatibilité avec les données des capteurs brutes (Bayer RAW), à la fois pour les applications de caméras avancées et pour les fichiers image bruts.