Référence de la structure camera2_device_ops

Référence de la structure camera2_device_ops

#include < camera2.h >

Champs de données

entier(* set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)
entier(* notify_request_queue_not_empty )(const struct camera2_device *)
entier(* set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)
entier(* get_in_progress_count )(const struct camera2_device *)
entier(* flush_captures_in_progress )(const struct camera2_device *)
entier(* construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request)
entier(* allocate_stream (const struct camera2_device *, uint32_t largeur, uint32_t hauteur, int format, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers)
entier(* register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)
entier(* release_stream )(const struct camera2_device *, uint32_t stream_id)
entier(* allocate_reprocess_stream )(const struct camera2_device *, uint32_t largeur, uint32_t hauteur, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)
entier(* allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id)
entier(* release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id)
entier(* trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)
entier(* set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)
entier(* get_metadata_vendor_tag_ops )(const struct camera2_device *, supplier_tag_query_ops_t **ops)
entier(* dump )(const struct camera2_device *, int fd)
entier(* get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata)

Description détaillée

Définition à la ligne 527 du fichier camera2.h .

Documentation de terrain

int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t largeur, uint32_t hauteur, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

allocate_reprocess_stream :

Allouez un nouveau flux d’entrée à utiliser, défini par la largeur, la hauteur et le format de pixel du tampon de sortie. Renvoie l'ID du nouveau flux, les indicateurs d'utilisation de gralloc et le nombre de tampons pouvant être acquis simultanément, en cas de succès. Conditions d'erreur :

  • Demande d'une combinaison largeur/hauteur/format non répertoriée comme prise en charge par les caractéristiques statiques du capteur
  • Demander que trop de flux de retraitement soient configurés en même temps.

Paramètres d'entrée:

  • width, height, format : spécification des tampons à envoyer via ce flux. Le format doit être une valeur de la liste HAL_PIXEL_FORMAT_*.
  • reprocess_stream_ops : une structure de pointeurs de fonction pour acquérir et libérer des tampons pour ce flux. Le flux sous-jacent sera configuré en fonction de l'utilisation et des sorties max_buffers.

Paramètres de sortie :

  • stream_id : un entier non signé identifiant ce flux. Cette valeur est utilisée dans les demandes entrantes pour identifier le flux et lors de la libération du flux. Ces identifiants sont numérotés séparément des identifiants du flux d’entrée.
  • consumer_usage : Le masque d'utilisation gralloc nécessaire au périphérique HAL pour consommer le type de données demandé. Ceci est utilisé pour allouer de nouveaux tampons gralloc pour la file d'attente des tampons de flux.
  • max_buffers : le nombre maximum de tampons que le périphérique HAL peut avoir besoin d'acquérir en même temps. L'appareil ne peut pas avoir plus de tampons acquis en même temps que cette valeur.

Définition à la ligne 708 du fichier camera2.h .

int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id)

allocate_reprocess_stream_from_stream :

Allouez un nouveau flux d’entrée à utiliser, qui utilisera les tampons alloués pour un flux de sortie existant. Autrement dit, une fois que le HAL a mis en file d'attente un tampon dans le flux de sortie, il peut voir ce même tampon lui être transmis à partir de ce flux de retraitement d'entrée. Une fois que HAL a libéré le tampon dans le flux de retraitement, il sera renvoyé dans la file d'attente de sortie pour être réutilisé.

Conditions d'erreur :

  • Utilisation d'un flux de sortie de taille/format inapproprié pour la base du flux de retraitement.
  • Tentative d'attribuer trop de flux de retraitement à la fois.

Paramètres d'entrée:

  • output_stream_id : ID d'un flux de sortie existant qui a une taille et un format adaptés au retraitement.
  • reprocess_stream_ops : une structure de pointeurs de fonction pour acquérir et libérer des tampons pour ce flux. Le flux sous-jacent utilisera les mêmes handles de tampon graphique que ceux utilisés par le flux de sortie.

Paramètres de sortie :

  • stream_id : un entier non signé identifiant ce flux. Cette valeur est utilisée dans les demandes entrantes pour identifier le flux et lors de la libération du flux. Ces identifiants sont numérotés séparément des identifiants du flux d’entrée.

Le client HAL doit toujours libérer le flux de retraitement avant de libérer le flux de sortie sur lequel il est basé.

Définition à la ligne 754 du fichier camera2.h .

int(* allocate_stream)(const struct camera2_device *,uint32_t largeur, uint32_t hauteur, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers)

allouer_stream :

Allouez un nouveau flux de sortie à utiliser, défini par la largeur, la hauteur, la cible et éventuellement le format de pixel du tampon de sortie. Renvoie l'ID du nouveau flux, les indicateurs d'utilisation de gralloc, le nombre minimum de tampons de file d'attente et éventuellement le format de pixel, en cas de succès. Conditions d'erreur :

  • Demande d'une combinaison largeur/hauteur/format non répertoriée comme prise en charge par les caractéristiques statiques du capteur
  • Demander trop de flux d'un type de format donné (2 flux bruts bayer, par exemple).

Paramètres d'entrée:

  • width, height, format : spécification des tampons à envoyer via ce flux. Le format est une valeur de la liste HAL_PIXEL_FORMAT_*. Si HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED est utilisé, alors le module gralloc de la plateforme sélectionnera un format en fonction des indicateurs d'utilisation fournis par la caméra HAL et le consommateur du flux. La caméra HAL doit inspecter les tampons qui lui sont transmis lors de l'appel register_stream_buffers pour obtenir le format spécifique à l'implémentation si nécessaire.
  • stream_ops : une structure de pointeurs de fonction pour obtenir et mettre en file d'attente les tampons pour ce flux. Le flux sous-jacent sera configuré en fonction de l'utilisation et des sorties max_buffers. Les méthodes de cette structure ne peuvent être appelées qu’après le retour de allocate_stream.

Paramètres de sortie :

  • stream_id : un entier non signé identifiant ce flux. Cette valeur est utilisée dans les demandes entrantes pour identifier le flux et lors de la libération du flux.
  • utilisation : le masque d'utilisation gralloc nécessaire au périphérique HAL pour produire le type de données demandé. Ceci est utilisé pour allouer de nouveaux tampons gralloc pour la file d'attente des tampons de flux.
  • max_buffers : nombre maximum de tampons que le périphérique HAL peut avoir besoin de retirer de la file d'attente en même temps. Le périphérique ne peut pas supprimer simultanément plus de tampons que cette valeur.

Définition à la ligne 632 du fichier camera2.h .

int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request)

Créez une demande par défaut remplie pour les cas d'utilisation de caméra standard.

L’appareil doit renvoyer une requête complète configurée pour répondre au cas d’utilisation demandé, qui doit être l’une des énumérations CAMERA2_TEMPLATE_*. Tous les champs de contrôle des requêtes doivent être inclus, à l'exception de android.request.outputStreams.

Le tampon de métadonnées renvoyé doit être alloué avec allocate_camera_metadata. Le framework s’approprie le tampon.

Définition à la ligne 580 du fichier camera2.h .

int(* dump)(const struct camera2_device *, int fd)

État de dump du matériel de la caméra

Définition à la ligne 801 du fichier camera2.h .

int(* flush_captures_in_progress)(const struct camera2_device *)

Videz toutes les captures en cours. Cela inclut toutes les demandes retirées de la file d'attente (régulières ou en retraitement) qui n'ont encore placé aucune sortie dans un flux ou dans la file d'attente de trames. Les captures partiellement terminées doivent être terminées normalement. Aucune nouvelle demande ne peut être retirée de la file d'attente des demandes tant que le vidage n'est pas terminé.

Définition à la ligne 567 du fichier camera2.h .

int(* get_in_progress_count)(const struct camera2_device *)

Nombre de demandes de caméra en cours de traitement par l'appareil à l'heure actuelle (captures/retraitements dont la demande a été retirée de la file d'attente, mais qui n'ont pas encore été mises en file d'attente sur le(s) pipeline(s) de sortie). Aucun flux ne peut être publié par le framework tant que le nombre en cours n'est pas égal à 0.

Définition à la ligne 558 du fichier camera2.h .

int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata)

Obtenez des métadonnées spécifiques à l’instance de périphérique. Ces métadonnées doivent être constantes pour une seule instance du périphérique caméra, mais peuvent être différentes entre les appels open(). Le pointeur camera_metadata renvoyé doit être valide jusqu’à ce que la méthode device close() soit appelée.

Information sur la version:

CAMERA_DEVICE_API_VERSION_2_0 :

Pas disponible. Framework ne peut pas accéder à ce pointeur de fonction.

CAMERA_DEVICE_API_VERSION_2_1 :

Valide. Peut être appelé par le framework.

Définition à la ligne 820 du fichier camera2.h .

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, supplier_tag_query_ops_t **ops)

Obtenez des méthodes pour interroger les informations sur les balises de métadonnées d’extension du fournisseur. Peut définir les opérations sur NULL si aucune balise d'extension de fournisseur n'est définie.

Définition à la ligne 795 du fichier camera2.h .

int(* notify_request_queue_not_empty)(const struct camera2_device *)

Avertissez l'appareil que la file d'attente des requêtes n'est plus vide. Ne doit être appelé que lorsque le premier tampon est ajouté à une nouvelle file d'attente, ou après que la source a renvoyé NULL en réponse à un appel de sortie de file d'attente.

Définition à la ligne 544 du fichier camera2.h .

int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)

Enregistrez les tampons pour un flux donné. Ceci est appelé après un appel allocate_stream réussi et avant que la première requête faisant référence au flux ne soit mise en file d'attente. Cette méthode est destinée à permettre au périphérique HAL de mapper ou de préparer d'une autre manière les tampons pour une utilisation ultérieure. num_buffers est garanti comme étant au moins max_buffers (de allocate_stream), mais peut être plus grand. Les tampons seront déjà verrouillés pour utilisation. A la fin de l'appel, tous les buffers doivent être prêts à être remis en file d'attente. Si le format du flux était défini sur HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, la caméra HAL doit inspecter les tampons transmis ici pour déterminer toute information de format de pixel privée à la plate-forme.

Définition à la ligne 657 du fichier camera2.h .

int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id)

Libérez un flux de retraitement. Renvoie une erreur si elle est appelée lorsque get_in_progress_count est différent de zéro ou si l'identifiant du flux n'est pas valide.

Définition à la ligne 765 du fichier camera2.h .

int(* release_stream)(const struct camera2_device *, uint32_t stream_id)

Libérez un flux. Renvoie une erreur si elle est appelée lorsque get_in_progress_count est différent de zéro ou si l'identifiant du flux n'est pas valide.

Définition à la ligne 667 du fichier camera2.h .

int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

Transmettre les méthodes d'interface de file d'attente de trames de sortie

Définition à la ligne 549 du fichier camera2.h .

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)

Configuration du rappel de notification

Définition à la ligne 787 du fichier camera2.h .

int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

Transmettez les méthodes d’interface de file d’attente de demandes d’entrée.

Définition à la ligne 536 du fichier camera2.h .

int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)

Déclenchez une activité asynchrone. Ceci est utilisé pour déclencher des comportements spéciaux des routines de la caméra 3A lorsqu'elles sont utilisées. Consultez la documentation de CAMERA2_TRIGGER_* ci-dessus pour plus de détails sur les identifiants de déclencheur et leurs arguments.

Définition à la ligne 779 du fichier camera2.h .


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