camera2_request_queue_src_ops Strukturreferenz

camera2_request_queue_src_ops Strukturreferenz

#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 der Eingabewarteschlange anfordern:

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

  1. Wenn der erste Metadatenpuffer in die Warteschlange gestellt wird, signalisiert das Framework dem Gerät, indem es notify_request_queue_not_empty () aufruft.
  2. Nach dem Empfang von notify_request_queue_not_empty muss das Gerät 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 Puffer bereit ist, muss es dequeue () erneut aufrufen, anstatt auf eine Benachrichtigung zu warten. Wenn keine Puffer mehr verfügbar sind, gibt dequeue () NULL zurück. Nach diesem Zeitpunkt, wenn ein Puffer verfügbar wird, muss das Framework notify_request_queue_not_empty () erneut aufrufen. Wenn das Gerät eine NULL-Rückgabe von der Warteschlange erhält, muss es die Warteschlange erst erneut abfragen, wenn ein Aufruf von notify_request_queue_not_empty () von der Quelle empfangen wird.
  4. Wenn das Gerät buffer_count () aufruft und 0 empfängt, bedeutet dies nicht, dass das Framework einen Aufruf von notify_request_queue_not_empty () bereitstellt. Das Framework stellt eine solche Benachrichtigung erst bereit, nachdem das Gerät von der Warteschlange oder beim ersten Start eine NULL erhalten hat.
  5. Der Aufruf dequeue () als Antwort auf notify_request_queue_not_empty () befindet sich möglicherweise im selben Thread wie der Aufruf notify_request_queue_not_empty () und kann innerhalb des Benachrichtigungsaufrufs ausgeführt werden.
  6. Alle in die Warteschlange gestellten Anforderungspuffer müssen durch Aufrufen von free_request an das Framework zurückgegeben werden, auch wenn Fehler auftreten, eine Gerätebereinigung angefordert wird oder wenn 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)

Holen Sie sich einen Metadatenpuffer aus dem Framework. Gibt OK zurück, wenn kein Fehler vorliegt. Wenn die Warteschlange leer ist, wird NULL im Puffer zurückgegeben. In diesem Fall muss das Gerät auf eine notify_request_queue_not_empty () - Nachricht warten, bevor es erneut versucht, die Warteschlange zu verlassen. Auf diese Weise 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)

Geben Sie einen Metadatenpuffer an das Framework zurück, sobald dieser verwendet wurde oder wenn ein Fehler oder ein Herunterfahren auftritt.

Definition in Zeile 243 der Datei camera2.h .

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

Ermitteln Sie die Anzahl der in der Warteschlange ausstehenden Anforderungspuffer. Kann CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS zurückgeben, wenn derzeit eine sich wiederholende Anforderung (Stream-Anforderung) konfiguriert ist. Das Aufrufen dieser Methode hat keine Auswirkung 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:
  • hardware / libhardware / include / hardware / camera2.h