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 Anforderungseingabewarteschlange:

Das Framework enthält die Warteschlange und ihren Inhalt. Beim Start 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 für die Verarbeitung des nächsten Puffers bereit ist.
  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. Wenn nach diesem Zeitpunkt ein Puffer verfügbar wird, muss das Framework notify_request_queue_not_empty() erneut aufrufen. Wenn das Gerät eine NULL-Rückgabe vom Dequeue erhält, muss es die Warteschlange nicht erneut abfragen, bis ein notify_request_queue_not_empty()-Aufruf von der Quelle empfangen wird.
  4. Wenn das Gerät buffer_count() aufruft und 0 empfängt, bedeutet dies nicht, dass das Framework einen notify_request_queue_not_empty()-Aufruf bereitstellt. Das Framework stellt eine solche Benachrichtigung erst bereit, nachdem das Gerät einen NULL-Wert aus der Warteschlange erhalten hat oder beim ersten Start.
  5. Der dequeue()-Aufruf als Reaktion auf notify_request_queue_not_empty() kann sich im selben Thread wie der notify_request_queue_not_empty()-Aufruf befinden und kann innerhalb des notify-Aufrufs ausgeführt werden.
  6. Alle aus der Warteschlange entfernten Anforderungspuffer müssen durch Aufrufen von free_request an das Framework zurückgegeben werden, auch wenn Fehler auftreten, eine Gerätespülung 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 vom 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 entfernen. 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 er 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)

Rufen Sie die Anzahl der in der Warteschlange ausstehenden Anforderungspuffer ab. Kann CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS zurückgeben, wenn derzeit eine wiederholte Anfrage (Stream-Anfrage) konfiguriert ist. Der Aufruf dieser Methode hat keinen Einfluss 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