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.
- Wenn der erste Metadatenpuffer in die Warteschlange gestellt wird, signalisiert das Framework dem Gerät, indem es notify_request_queue_not_empty () aufruft.
- 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.
- 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.
- 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.
- 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.
- 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.
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 .
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) |
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.
Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert:
- hardware / libhardware / include / hardware / camera2.h