Référence de structure camera2_request_queue_src_ops

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.

  1. 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().
  2. 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.
  3. 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.
  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 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.
  5. 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.
  6. 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.

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

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() .

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)

Renvoie un tampon de métadonnées au framework une fois qu'il a été utilisé, ou si une erreur ou un arrêt se produit.

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 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.

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


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