Référence de structure camera3_stream

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.

Définition à la ligne 1523 du fichier camera3.h .

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

Définition à la ligne 1648 du fichier camera3.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.

Définition à la ligne 1565 du fichier camera3.h .

hauteur uint32_t

La hauteur en pixels des tampons dans ce flux

Définition à la ligne 1542 du fichier camera3.h .

uint32_t max_buffers

Le nombre maximum de tampons que le périphérique HAL peut avoir besoin d'avoir retirés de la file d'attente en même temps. Le périphérique HAL ne peut pas avoir plus de tampons en vol à partir de ce flux que cette valeur.

Définition à la ligne 1608 du fichier camera3.h .

vide* privé

Un handle vers les informations privées HAL pour le flux. Ne sera pas inspecté par le code cadre.

Définition à la ligne 1614 du fichier camera3.h .

nul* réservé[7]

Définition à la ligne 1677 du fichier camera3.h .

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.

Définition à la ligne 1674 du fichier camera3.h .

int stream_type

Type de flux, l'une des valeurs de camera3_stream_type_t.

Définition à la ligne 1532 du fichier camera3.h .

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.

Définition à la ligne 1601 du fichier camera3.h .

uint32_t largeur

La largeur en pixels des tampons dans ce flux

Définition à la ligne 1537 du fichier camera3.h .


La documentation de cette structure a été générée à partir du fichier suivant :
  • hardware/libhardware/include/hardware/ camera3.h