Strukturreferenz für camera2_request_queue_src_ops

Strukturreferenz für camera2_request_queue_src_ops

#include < camera2.h >

Datenfelder

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)
 

Detaillierte Beschreibung

Protokoll für die Anfragewarteschlange:

Das Framework enthält die Warteschlange und ihren Inhalt. Zu Beginn ist die Warteschlange leer.

  1. Wenn der erste Metadaten-Puffer in die Warteschlange gestellt wird, signalisiert das Framework dem Gerät, indem es notify_request_queue_not_empty() aufruft.
  2. Nachdem das Gerät notify_request_queue_not_empty empfangen hat, muss es dequeue() aufrufen, sobald es bereit ist, den nächsten Puffer zu verarbeiten.
  3. Sobald das Gerät einen Puffer verarbeitet hat und für den nächsten bereit ist, muss es dequeue() noch einmal aufrufen, anstatt auf eine Benachrichtigung zu warten. Wenn keine Buffers mehr verfügbar sind, gibt dequeue() NULL zurück. Wenn danach ein Puffer verfügbar wird, muss das Framework notify_request_queue_not_empty() noch einmal aufrufen. Wenn das Gerät von dequeue NULL zurückgegeben wird, muss es die Warteschlange erst wieder abfragen, wenn von der Quelle ein notify_request_queue_not_empty()-Aufruf empfangen wird.
  4. Wenn das Gerät buffer_count() aufruft und den Wert 0 zurückgibt, bedeutet das nicht, dass das Framework einen notify_request_queue_not_empty()-Aufruf bereitstellt. Das Framework sendet eine solche Benachrichtigung nur, wenn das Gerät eine NULL-Wert-Meldung von dequeue erhalten hat oder beim ersten Start.
  5. Der Aufruf von dequeue() als Reaktion auf notify_request_queue_not_empty() kann sich im selben Thread wie der Aufruf von notify_request_queue_not_empty() befinden und kann innerhalb des notify-Aufrufs ausgeführt werden.
  6. Alle aus der Warteschlange entfernten Anfrage-Buffer müssen durch Aufrufen von free_request an das Framework zurückgegeben werden. Dies gilt auch, wenn Fehler auftreten, eine Geräteauslagerung angefordert wird oder das Gerät heruntergefahren wird.

Definition in Zeile 220 der Datei camera2.h .

Felddokumentation

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

Metadaten-Puffer vom Framework abrufen Gibt „OK“ zurück, wenn kein Fehler vorliegt. Wenn die Warteschlange leer ist, wird im Puffer NULL zurückgegeben. In diesem Fall muss das Gerät auf eine notify_request_queue_not_empty()-Nachricht warten, bevor es noch einmal versucht, die Warteschlange zu leeren. So erhaltene Puffer müssen mit free_request() an das Framework zurückgegeben werden.

Definition in Zeile 237 der Datei camera2.h .

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

Gib einen Metadaten-Puffer an das Framework zurück, nachdem er verwendet wurde oder ein Fehler oder Herunterfahren auftritt.

Definition in Zeile 243 der Datei camera2.h .

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

Anzahl der Anfrage-Buffer abrufen, die in der Warteschlange ausstehen. Es kann CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS zurückgegeben werden, wenn derzeit eine wiederkehrende Anfrage (Streamanfrage) konfiguriert ist. Der Aufruf dieser Methode hat keine Auswirkungen darauf, ob die Methode „notify_request_queue_not_empty()“ vom Framework aufgerufen wird.

Definition in Zeile 228 der Datei camera2.h .


Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert: