Référence de structure camera2_request_queue_src_ops
#include < camera2.h >
Champs de données | |
entier(* | request_count )(const struct camera2_request_queue_src_ops *q) |
entier(* | dequeue_request (const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
entier(* | 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 des requêtes :
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 le périphérique en appelant notify_request_queue_not_empty().
- Après avoir reçu notify_request_queue_not_empty, le périphérique doit appeler dequeue() une fois qu'il est prêt à gérer le prochain tampon.
- Une fois que le périphérique a traité un tampon et est prêt pour le prochain tampon, il doit appeler à nouveau dequeue() au lieu d'attendre une notification. S'il n'y a plus de tampons disponibles, dequeue() renverra NULL. Après ce point, lorsqu'un tampon devient disponible, le framework doit appeler à nouveau notify_request_queue_not_empty(). Si le périphérique reçoit un retour NULL de la file d'attente, il n'a pas besoin d'interroger à nouveau la file d'attente jusqu'à ce qu'un appel notify_request_queue_not_empty() soit 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 fournira une telle notification qu'après que l'appareil aura reçu un NULL de la sortie de la file d'attente ou lors du démarrage initial.
- L'appel dequeue() en réponse à notify_request_queue_not_empty() peut être 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 retirés de la file d'attente doivent être renvoyés au framework en appelant free_request, y compris lorsque des erreurs se produisent, qu'un vidage du périphérique est demandé ou lorsque le périphérique s'arrête.
Documentation de terrain
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
Obtenez un tampon de métadonnées du framework. Renvoie OK s'il n'y a pas d'erreur. Si la file d'attente est vide, renvoie NULL dans le tampon. Dans ce cas, le périphérique doit attendre un message notify_request_queue_not_empty() avant de tenter à nouveau de retirer la file d'attente. Les tampons ainsi obtenus 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 demande répétitive (demande 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 cette structure a été générée à partir du fichier suivant :
- matériel/libhardware/include/hardware/ camera2.h