Référence de la struct camera2_device_ops

Référence de la struct camera2_device_ops

#include < camera2.h >

Champs de données

int(*  set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)
 
int(*  notify_request_queue_not_empty )(const struct camera2_device *)
 
int(*  set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)
 
int(*  get_in_progress_count )(const struct Camera2Device *)
 
int(*  flush_captures_in_progress )(const struct Camera2_device *)
 
int(*  construct_default_request )(const struct Camera2Device *, int request_template, CameraMetadataT **request)
 
int(*  allocate_stream )(const struct Camera2Device *, uint32_t width, uint32_t height, int format, const Camera2StreamOpsT *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers)
 
int(*  register_stream_buffers )(const struct Camera2Device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)
 
int(*  release_stream )(const struct Camera2Device *, uint32_t stream_id)
 
int(*  allocate_reprocess_stream )(const struct Camera2Device *, uint32_t width, uint32_t height, uint32_t format, const Camera2StreamInOpsT *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)
 
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)
 
int(*  release_reprocess_stream )(const struct Camera2Device *, uint32_t stream_id)
 
int(*  trigger_action )(const struct Camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)
 
int(*  set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)
 
int(*  get_metadata_vendor_tag_ops )(const struct Camera2Device *, vendor_tag_query_ops_t **ops)
 
int(*  dump )(const struct camera2_device *, int fd)
 
int(*  get_instance_metadata )(const struct Camera2Device *, camera_metadata **instance_metadata)
 

Description détaillée

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

Documentation des champs

int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t width, uint32_t height, 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 et la hauteur du tampon de sortie, ainsi que par le format de pixel. En cas de réussite, renvoie l'ID du nouveau flux, les indicateurs d'utilisation de gralloc et le nombre de tampons pouvant être acquis simultanément. Conditions d'erreur:

  • Demande d'une combinaison largeur/hauteur/format non répertoriée comme compatible avec les caractéristiques statiques du capteur
  • Demande de trop de flux de retraitement à configurer à la fois.

Paramètres d'entrée :

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

Paramètres de sortie:

  • stream_id: entier non signé identifiant ce flux. Cette valeur est utilisée dans les requêtes entrantes pour identifier le flux et le libérer. Ces ID sont numérotés séparément des ID de flux d'entrée.
  • consumer_usage: masque d'utilisation de gralloc nécessaire à l'appareil HAL pour consommer le type de données demandé. Il est utilisé pour allouer de nouveaux tampons gralloc à la file d'attente de tampons de flux.
  • max_buffers: nombre maximal de tampons que l'appareil HAL peut avoir acquis 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 à un flux de sortie existant. Autrement dit, une fois que le HAL a mis en file d'attente un tampon sur 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 le HAL a renvoyé le tampon au flux de retraitement, il est renvoyé dans la file d'attente de sortie pour être réutilisé.

Conditions d'erreur:

  • Utilisation d'un flux de sortie de taille/format inadapté comme base du flux de retraitement.
  • Vous essayez d'allouer trop de flux de retraitement à la fois.

Paramètres d'entrée :

  • output_stream_id: ID d'un flux de sortie existant dont la taille et le format sont adaptés au retraitement.
  • reprocess_stream_ops: structure de pointeurs de fonction permettant d'acquérir et de libérer des tampons pour ce flux. Le flux sous-jacent utilisera les mêmes poignées de tampon graphique que le flux de sortie.

Paramètres de sortie:

  • stream_id: entier non signé identifiant ce flux. Cette valeur est utilisée dans les requêtes entrantes pour identifier le flux et le libérer. Ces ID sont numérotés séparément des ID de 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 width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers)

allocate_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. En cas de réussite, renvoie l'ID du nouveau flux, les indicateurs d'utilisation de gralloc, le nombre minimal de tampons de file d'attente et éventuellement le format de pixel. Conditions d'erreur:

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

Paramètres d'entrée :

  • largeur, hauteur, 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é, le module gralloc de la plate-forme sélectionne un format en fonction des indicateurs d'utilisation fournis par le HAL de l'appareil photo et le consommateur du flux. Le HAL de la caméra doit inspecter les tampons qui lui sont transmis dans l'appel register_stream_buffers pour obtenir le format spécifique à l'implémentation, le cas échéant.
  • stream_ops: structure de pointeurs de fonction permettant d'obtenir et de mettre en file d'attente des tampons pour ce flux. Le flux sous-jacent sera configuré en fonction des sorties "usage" et "max_buffers". Les méthodes de cette structure ne peuvent pas être appelées avant le retour de allocate_stream.

Paramètres de sortie:

  • stream_id: entier non signé identifiant ce flux. Cette valeur est utilisée dans les requêtes entrantes pour identifier le flux et le libérer.
  • usage: masque d'utilisation de gralloc requis par l'appareil HAL pour générer le type de données demandé. Il est utilisé pour allouer de nouveaux tampons gralloc à la file d'attente de tampons de flux.
  • max_buffers: nombre maximal de tampons que l'appareil HAL peut avoir à déqueuer en même temps. L'appareil ne peut pas déqueuer plus de tampons que cette valeur en même temps.

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 requête par défaut remplie pour les cas d'utilisation standard de l'appareil photo.

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 de la requête doivent être inclus, à l'exception d'android.request.outputStreams.

Le tampon de métadonnées renvoyé doit être alloué avec allocate_camera_metadata. Le framework devient propriétaire du tampon.

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

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

État de vidage 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 requêtes de la file d'attente (régulières ou de retraitement) qui n'ont pas encore placé de sorties dans un flux ni dans la file d'attente de frames. Les captures partiellement terminées doivent être finalisées normalement. Aucune nouvelle requête ne peut être retirée de la file d'attente tant que l'éjection n'est pas terminée.

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

int(* get_in_progress_count)(const struct Camera2_device &)

Nombre de requêtes d'appareil photo traitées par l'appareil en ce moment (captures/retraitements dont la requête a été retirée de la file d'attente, mais qui n'ont pas encore été mis en file d'attente dans le ou les pipelines de sortie). Le framework ne peut pas libérer de flux tant que le nombre de requêtes 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)

Obtenir des métadonnées spécifiques à l'instance de l'appareil Ces métadonnées doivent être constantes pour une seule instance de l'appareil photo, mais elles peuvent être différentes entre les appels open(). Le pointeur camera_metadata renvoyé doit être valide jusqu'à ce que la méthode close() de l'appareil soit appelée.

Informations sur la version:

CAMERA_DEVICE_API_VERSION_2_0:

Non disponible. Le 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 *, vendor_tag_query_ops_t **ops)

Obtenez des méthodes pour interroger les informations de la balise de métadonnées de l'extension du fournisseur. Peut définir ops 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 *)

Notifiez l'appareil que la file d'attente de 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 désenfilement.

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 des tampons pour un flux donné. Cette méthode est appelée après un appel allocate_stream réussi et avant que la première requête référençant le flux ne soit mise en file d'attente. Cette méthode permet à l'appareil HAL de mapper ou de préparer les tampons pour une utilisation ultérieure. num_buffers est garanti d'être au moins égal à max_buffers (à partir de allocate_stream), mais peut être plus élevé. Les tampons sont déjà verrouillés pour être utilisés. À la fin de l'appel, tous les tampons doivent être prêts à être renvoyés dans la file d'attente. Si le format de flux a été défini sur HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, le HAL de l'appareil photo doit inspecter les tampons transmis ici pour déterminer toute information sur le format de pixel privé de la plate-forme.

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

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

Publier 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'ID de 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)

Publier un flux Renvoie une erreur si elle est appelée lorsque get_in_progress_count est différent de zéro ou si l'ID de 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 des méthodes d'interface de file d'attente de frames 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 la file d'attente de requêtes 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éclencher une activité asynchrone Il permet de déclencher des comportements spéciaux des routines 3A de l'appareil photo lorsqu'elles sont utilisées. Pour en savoir plus sur les ID de déclencheur et leurs arguments, consultez la documentation sur CAMERA2_TRIGGER_* ci-dessus.

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


La documentation de ce struct a été générée à partir du fichier suivant :