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