Référence de structure camera3_callback_ops

Référence de structure camera3_callback_ops

#include < camera3.h >

Champs de données

vide(* process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
vide(* notifier )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

Description détaillée

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

Documentation de terrain

void(* notifier)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

notifier :

Rappel de notification asynchrone du HAL, déclenché pour diverses raisons. Uniquement pour les informations indépendantes de la capture d'image ou qui nécessitent un timing spécifique. La propriété de la structure du message reste la propriété de la HAL, et le message ne doit être valide que pendant la durée de cet appel.

Plusieurs threads peuvent appeler notify() simultanément.

<= CAMERA_DEVICE_API_VERSION_3_1 :

La notification du début de l'exposition pour une requête donnée doit être envoyée par HAL avant le premier appel à process_capture_result() pour cette requête.

>= CAMERA_DEVICE_API_VERSION_3_2 :

Les tampons fournis au framework ne seront pas distribués à la couche application tant qu'un horodatage de début d'exposition (ou l'horodatage de début d'exposition de l'image d'entrée pour une demande de retraitement) n'a pas été reçu via un appel SHUTTER notify() . Il est fortement recommandé d'envoyer cet appel le plus tôt possible.


Exigences de performances :

Il s'agit d'un appel non bloquant. Le framework renverra cet appel dans 5 ms.

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

void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *result)

processus_capture_result :

Envoyez les résultats d’une capture terminée au framework. process_capture_result() peut être invoqué plusieurs fois par le HAL en réponse à une seule demande de capture. Cela permet, par exemple, de renvoyer les métadonnées et les tampons basse résolution lors d'un seul appel, ainsi que les tampons JPEG post-traités lors d'un appel ultérieur, une fois disponibles. Chaque appel doit inclure le numéro de trame de la requête pour laquelle il renvoie des métadonnées ou des tampons.

Un composant (tampon ou métadonnées) du résultat complet ne peut être inclus que dans un seul appel process_capture_result. Un tampon pour chaque flux et les métadonnées du résultat doivent être renvoyés par le HAL pour chaque requête dans l'un des appels process_capture_result, même en cas d'erreurs produisant une partie de la sortie. Un appel à process_capture_result() sans tampons de sortie ni métadonnées de résultat n'est pas autorisé.

L'ordre de renvoi des métadonnées et des tampons pour un seul résultat n'a pas d'importance, mais les tampons pour un flux donné doivent être renvoyés dans l'ordre FIFO. Ainsi, le tampon de la requête 5 pour le flux A doit toujours être renvoyé avant le tampon de la requête 6 pour le flux A. Cela s'applique également aux métadonnées du résultat ; les métadonnées de la requête 5 doivent être renvoyées avant les métadonnées de la requête 6.

Cependant, différents flux sont indépendants les uns des autres, il est donc acceptable et attendu que le tampon pour la demande 5 pour le flux A puisse être renvoyé après le tampon pour la demande 6 pour le flux B. Et il est acceptable que les métadonnées du résultat de la demande 6 pour le flux B soient renvoyées avant le tampon de la demande 5 pour le flux A.

Le HAL conserve la propriété de la structure des résultats, qui doit seulement être valide pour y accéder lors de cet appel. Le framework copiera tout ce dont il a besoin avant le retour de cet appel.

Les tampons de sortie n'ont pas encore besoin d'être remplis ; le framework attendra la clôture de synchronisation de libération du tampon de flux avant de lire les données du tampon. Par conséquent, cette méthode doit être appelée par la HAL dès que possible, même si tout ou partie des tampons de sortie sont encore en cours de remplissage. Le HAL doit inclure des clôtures de synchronisation de version valides dans chaque entrée de tampon de flux output_buffers, ou -1 si ce tampon de flux est déjà rempli.

Si le tampon de résultat ne peut pas être construit pour une requête, la HAL doit renvoyer un tampon de métadonnées vide, mais toujours fournir les tampons de sortie et leurs clôtures de synchronisation. De plus, notify() doit être appelé avec un message ERROR_RESULT.

Si un tampon de sortie ne peut pas être rempli, son champ d'état doit être défini sur STATUS_ERROR. De plus, notify() doit être appelé avec un message ERROR_BUFFER.

Si la capture entière a échoué, cette méthode doit encore être appelée pour renvoyer les tampons de sortie au framework. Tous les états du tampon doivent être STATUS_ERROR et les métadonnées du résultat doivent être un tampon vide. De plus, notify() doit être appelé avec un message ERROR_REQUEST. Dans ce cas, les messages ERROR_RESULT/ERROR_BUFFER individuels ne doivent pas être envoyés.

Exigences de performances :

Il s'agit d'un appel non bloquant. Le framework renverra cet appel dans 5 ms.

La latence du pipeline (voir S7 pour la définition) doit être inférieure ou égale à 4 intervalles de trame et doit être inférieure ou égale à 8 intervalles de trame.

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


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