Documentation de référence sur la struct camera3_callback_ops

Documentation de référence sur la struct camera3_callback_ops

#include < camera3.h >

Champs de données

void(*  process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
 
void(*  notify )(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 des champs

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

notify :

Rappel de notification asynchrone du HAL, déclenché pour diverses raisons. Uniquement pour les informations indépendantes de la capture de frame ou qui nécessitent un timing spécifique. La propriété de la structure du message reste avec le HAL, et le message n'a besoin d'être valide que pour 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 le HAL avant le premier appel de 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 code temporel de début d'exposition (ou le code temporel de début d'exposition de l'image d'entrée pour une demande de retraitement) n'aura pas été reçu via un appel SHUTTER notify() . Nous vous recommandons vivement d'envoyer cet appel dès que 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)

process_capture_result:

Envoyez les résultats d'une capture terminée au framework. process_capture_result() peut être appelé plusieurs fois par la 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 en un seul appel, et les tampons JPEG post-traités dans un appel ultérieur, une fois qu'ils sont disponibles. Chaque appel doit inclure le numéro de frame 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 de 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 lors de la production de certains résultats. 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 résultat unique n'a pas d'importance, mais les tampons d'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 des résultats : les métadonnées de la requête 5 doivent être renvoyées avant celles de la requête 6.

Toutefois, les différents flux sont indépendants les uns des autres. Il est donc acceptable et attendu que le tampon de la requête 5 du flux A soit renvoyé après le tampon de la requête 6 du flux B. Il est également acceptable que les métadonnées de résultat de la requête 6 du flux B soient renvoyées avant le tampon de la requête 5 du flux A.

La HAL conserve la propriété de la structure des résultats, qui n'a besoin d'être valide que pour l'accès pendant cet appel. Le framework copie tout ce dont il a besoin avant le retour de cet appel.

Il n'est pas encore nécessaire de remplir les tampons de sortie. Le framework attendra la barrière de synchronisation de la 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 certains ou tous les tampons de sortie sont encore en cours de remplissage. Le HAL doit inclure des barrières 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, le HAL doit renvoyer un tampon de métadonnées vide, mais fournir quand même les tampons de sortie et leurs barrières 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 quand même être appelée pour renvoyer les tampons de sortie au framework. Tous les états de mémoire tampon doivent être STATUS_ERROR, et les métadonnées de résultat doivent être une mémoire tampon vide. De plus, notify() doit être appelé avec un message ERROR_REQUEST. Dans ce cas, aucun message ERROR_RESULT/ERROR_BUFFER individuel ne doit être envoyé.

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 à quatre intervalles de trame, et doit être inférieure ou égale à huit 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 :