Référence de la struct camera2_request_queue_src_ops

Référence de la struct camera2_request_queue_src_ops

#include < camera2.h >

Champs de données

int(*  request_count )(const struct camera2_request_queue_src_ops *q)
 
int(*  dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)
 
int(*  free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)
 

Description détaillée

Protocole de file d'attente d'entrée de requête:

Le framework contient la file d'attente et son contenu. Au début, la file d'attente est vide.

  1. Lorsque le premier tampon de métadonnées est placé dans la file d'attente, le framework signale l'appareil en appelant notify_request_queue_not_empty().
  2. Après avoir reçu notify_request_queue_not_empty, l'appareil doit appeler dequeue() une fois qu'il est prêt à gérer le prochain tampon.
  3. Une fois que l'appareil a traité un tampon et qu'il est prêt pour le suivant, il doit appeler dequeue() à nouveau au lieu d'attendre une notification. S'il n'y a plus de tampons disponibles, dequeue() renvoie NULL. Passé ce délai, lorsqu'un tampon devient disponible, le framework doit appeler à nouveau notify_request_queue_not_empty(). Si l'appareil reçoit une valeur NULL renvoyée par la fonction de désenfilement, il n'a pas besoin de réinterroger la file d'attente tant qu'un appel notify_request_queue_not_empty() n'est pas reçu de la source.
  4. Si l'appareil appelle buffer_count() et reçoit 0, cela ne signifie pas que le framework fournira un appel notify_request_queue_not_empty(). Le framework ne fournit une telle notification qu'après que l'appareil a reçu une valeur NULL de la file d'attente ou au démarrage initial.
  5. L'appel dequeue() en réponse à notify_request_queue_not_empty() peut se trouver sur le même thread que l'appel notify_request_queue_not_empty() et peut être effectué à partir de l'appel notify.
  6. Tous les tampons de requêtes déchargés doivent être renvoyés au framework en appelant free_request, y compris en cas d'erreur, de demande de vidage de l'appareil ou d'arrêt de l'appareil.

Définition sur la ligne 220 du fichier camera2.h .

Documentation des champs

int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)

Obtenez un tampon de métadonnées à partir du framework. Renvoie "OK" en l'absence d'erreur. Si la file d'attente est vide, renvoie NULL dans le tampon. Dans ce cas, l'appareil doit attendre un message notify_request_queue_not_empty() avant de tenter de retirer la requête de la file d'attente. Les tampons obtenus de cette manière doivent être renvoyés au framework avec free_request() .

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

int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

Renvoyez un tampon de métadonnées au framework une fois qu'il a été utilisé, ou en cas d'erreur ou d'arrêt.

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

int(* request_count)(const struct camera2_request_queue_src_ops *q)

Obtenez le nombre de tampons de requêtes en attente dans la file d'attente. Peut renvoyer CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS si une requête répétée (requête de flux) est actuellement configurée. L'appel de cette méthode n'a aucun effet sur l'appel de la méthode notify_request_queue_not_empty() par le framework.

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


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