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.
- 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().
- 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.
- 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.
- 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.
- 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.
- 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.
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() .
int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
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.
La documentation de ce struct a été générée à partir du fichier suivant :
- hardware/libhardware/include/hardware/ camera2.h