Référence de structure camera3_stream
#include < camera3.h >
Champs de données | |
entier | type_flux |
uint32_t | largeur |
uint32_t | la taille |
entier | format |
uint32_t | usage |
uint32_t | max_buffers |
annuler * | privé |
android_dataspace_t | data_space |
entier | rotation |
annuler * | réservé [7] |
Description détaillée
camera3_stream_t :
Une poignée à une entrée ou un flux de sortie de caméra unique. Un flux est défini par le framework par sa résolution et son format de tampon, ainsi que par la HAL avec les indicateurs d'utilisation de gralloc et le nombre maximal de tampons en vol.
Les structures de flux appartiennent au framework, mais les pointeurs vers un camera3_stream passé dans HAL par configure_streams() sont valides jusqu'à la fin du premier appel configure_streams() suivant qui n'inclut pas ce camera3_stream comme argument, ou jusqu'à la fin de l'appel close().
Tous les membres contrôlés par le framework camera3_stream sont immuables une fois que le camera3_stream est passé dans configure_streams(). HAL ne peut modifier que les paramètres contrôlés par HAL lors d'un appel configure_streams(), à l'exception du contenu du pointeur privé.
Si un appel configure_streams() renvoie une erreur non fatale, tous les flux actifs restent valides comme si configure_streams() n'avait pas été appelé.
Le point de terminaison du flux n'est pas visible pour le périphérique HAL de la caméra. Dans DEVICE_API_VERSION_3_1, cela a été modifié pour partager les indicateurs d'utilisation des consommateurs sur les flux où la caméra est un producteur (types de flux OUTPUT et BIDIRECTIONNEL) voir le champ d'utilisation ci-dessous.
Documentation de terrain
android_dataspace_t data_space |
Un champ qui décrit le contenu du tampon. Le format et les dimensions du tampon définissent la disposition de la mémoire et la structure des tampons de flux, tandis que dataSpace définit la signification des données dans le tampon.
Pour la plupart des formats, dataSpace définit l'espace colorimétrique des données d'image. De plus, pour certains formats, dataSpace indique si des données basées sur l'image ou la profondeur sont demandées. Voir system/core/include/system/graphics.h pour plus de détails sur les formats et les valeurs valides de dataSpace pour chaque format.
Information sur la version:
< CAMERA_DEVICE_API_VERSION_3_3 :
Non défini et ne doit pas être accessible. dataSpace doit être supposé être HAL_DATASPACE_UNKNOWN, et l'espace colorimétrique approprié, etc., doit être déterminé à partir des indicateurs d'utilisation et du format.
= CAMERA_DEVICE_API_VERSION_3_3 :
Toujours réglé par le service caméra. HAL doit utiliser cet espace de données pour configurer le flux sur l'espace colorimétrique correct ou pour sélectionner entre les sorties couleur et profondeur si elles sont prises en charge. Les valeurs de l'espace de données sont les définitions héritées dans graphics.h
>= CAMERA_DEVICE_API_VERSION_3_4 :
Toujours réglé par le service caméra. HAL doit utiliser cet espace de données pour configurer le flux sur l'espace colorimétrique correct ou pour sélectionner entre les sorties couleur et profondeur si elles sont prises en charge. Les valeurs d'espace de données sont définies à l'aide des définitions d'espace de données V0 dans graphics.h
format entier |
Le format de pixel pour les tampons dans ce flux. Le format est une valeur de la liste HAL_PIXEL_FORMAT_* dans system/core/include/system/graphics.h, ou des en-têtes spécifiques au périphérique.
Si HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED est utilisé, le module gralloc de la plate-forme sélectionnera un format basé sur les indicateurs d'utilisation fournis par l'appareil photo et l'autre point de terminaison du flux.
<= CAMERA_DEVICE_API_VERSION_3_1 :
Le périphérique HAL de la caméra doit inspecter les tampons qui lui sont remis lors de l'appel suivant à register_stream_buffers() pour obtenir les détails de format spécifiques à l'implémentation, si nécessaire.
>= CAMERA_DEVICE_API_VERSION_3_2 :
register_stream_buffers() ne sera pas appelé par le framework, donc HAL doit configurer le pipeline du FAI et du capteur en se basant uniquement sur les tailles, les drapeaux d'utilisation et les formats des flux configurés.
hauteur uint32_t |
uint32_t max_buffers |
vide* privé |
rotation entière |
La rotation de sortie requise du flux, l'une des valeurs de camera3_stream_rotation_t. Cela doit être inspecté par HAL avec la largeur et la hauteur du flux. Par exemple, si la rotation est de 90 degrés et que la largeur et la hauteur du flux sont respectivement de 720 et 1280, le service de caméra fournira des tampons de taille 720x1280, et HAL devrait capturer une image 1280x720 et faire pivoter l'image de 90 degrés dans le sens antihoraire. Le champ de rotation est no-op lorsque le type de flux est entré. La caméra HAL doit ignorer le champ de rotation pour un flux d'entrée.
<= CAMERA_DEVICE_API_VERSION_3_2 :
Non défini et ne doit pas être accessible. HAL ne doit pas appliquer de rotation sur les images de sortie.
>= CAMERA_DEVICE_API_VERSION_3_3 :
Toujours réglé par le service de caméra. HAL doit inspecter ce champ lors de la configuration du flux et renvoie -EINVAL si HAL ne peut pas effectuer une telle rotation. HAL doit toujours prendre en charge CAMERA3_STREAM_ROTATION_0, donc un appel configure_streams() ne doit pas échouer pour une rotation non prise en charge si le champ de rotation de tous les flux est CAMERA3_STREAM_ROTATION_0.
int stream_type |
utilisation de uint32_t |
Les indicateurs d'utilisation de gralloc pour ce flux, selon les besoins de HAL. Les drapeaux d'utilisation sont définis dans gralloc.h (GRALLOC_USAGE_*), ou dans des en-têtes spécifiques à l'appareil.
Pour les flux de sortie, il s'agit des indicateurs d'utilisation du producteur de HAL. Pour les flux d'entrée, il s'agit des indicateurs d'utilisation du consommateur de HAL. Les indicateurs d'utilisation du producteur et du consommateur seront combinés, puis transmis au module gralloc HAL de la plate-forme pour allouer les tampons gralloc pour chaque flux.
Information sur la version:
== CAMERA_DEVICE_API_VERSION_3_0 :
Aucune valeur initiale garantie lors du passage via configure_streams(). HAL ne peut pas utiliser ce champ comme entrée et doit écraser ce champ avec ses drapeaux d'utilisation.
>= CAMERA_DEVICE_API_VERSION_3_1 :
Pour stream_type OUTPUT et BIDIRECTIONAL, lorsqu'ils sont passés via configure_streams(), la valeur initiale de this correspond aux indicateurs d'utilisation du consommateur. La couche HAL peut utiliser ces indicateurs de consommateur pour décider de la configuration du flux. Pour stream_type INPUT, lorsqu'il est passé via configure_streams(), la valeur initiale de this est 0. Pour tous les flux passés via configure_streams(), HAL doit écrire sur ce champ avec ses drapeaux d'utilisation.
uint32_t largeur |
La documentation de cette structure a été générée à partir du fichier suivant :
- hardware/libhardware/include/hardware/ camera3.h