Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Strukturreferenz für camera2_request_queue_src_ops
#include <
camera2.h
>
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.
Definition in Zeile
220
der Datei
camera2.h
.
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
.
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
.
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:
-
hardware/libhardware/include/hardware/
camera2.h
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Android Hardware Abstraction Layer: camera2_request_queue_src_ops Struct Reference\n\ncamera2_request_queue_src_ops Struct Reference\n==============================================\n\n[Data Fields](#pub-attribs) \ncamera2_request_queue_src_ops Struct Reference \n\n`\n#include \u003c\n`[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)`\n\u003e\n`\n\n|--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| int(\\* | [request_count](/reference/hal/structcamera2__request__queue__src__ops#a19ec09251038ee392fedcaeb68ede229) )(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q) |\n| ||\n| int(\\* | [dequeue_request](/reference/hal/structcamera2__request__queue__src__ops#a79adee987dbd6a8ea0cfab81c89ae579) )(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*\\*buffer) |\n| ||\n| int(\\* | [free_request](/reference/hal/structcamera2__request__queue__src__ops#aa45ae2fd2aedf1843378e213e65a66f8) )(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*old_buffer) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nRequest input queue protocol:\n\n\nThe framework holds the queue and its contents. At start, the queue is empty.\n\n1. When the first metadata buffer is placed into the queue, the framework signals the device by calling notify_request_queue_not_empty().\n2. After receiving notify_request_queue_not_empty, the device must call dequeue() once it's ready to handle the next buffer.\n3. Once the device has processed a buffer, and is ready for the next buffer, it must call dequeue() again instead of waiting for a notification. If there are no more buffers available, dequeue() will return NULL. After this point, when a buffer becomes available, the framework must call notify_request_queue_not_empty() again. If the device receives a NULL return from dequeue, it does not need to query the queue again until a notify_request_queue_not_empty() call is received from the source.\n4. If the device calls buffer_count() and receives 0, this does not mean that the framework will provide a notify_request_queue_not_empty() call. The framework will only provide such a notification after the device has received a NULL from dequeue, or on initial startup.\n5. The dequeue() call in response to notify_request_queue_not_empty() may be on the same thread as the notify_request_queue_not_empty() call, and may be performed from within the notify call.\n6. All dequeued request buffers must be returned to the framework by calling free_request, including when errors occur, a device flush is requested, or when the device is shutting down.\n\n\nDefinition at line\n[220](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\nField Documentation\n-------------------\n\n\n|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| int(\\* dequeue_request)(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*\\*buffer) |\n\n\nGet a metadata buffer from the framework. Returns OK if there is no error. If the queue is empty, returns NULL in buffer. In that case, the device must wait for a notify_request_queue_not_empty() message before attempting to dequeue again. Buffers obtained in this way must be returned to the framework with\n[free_request()](/reference/hal/structcamera2__request__queue__src__ops#aa45ae2fd2aedf1843378e213e65a66f8)\n.\n\n\nDefinition at line\n[237](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| int(\\* free_request)(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*old_buffer) |\n\n\nReturn a metadata buffer to the framework once it has been used, or if an error or shutdown occurs.\n\n\nDefinition at line\n[243](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\n|---------------------------------------------------------------------------------------------------------------------------------|\n| int(\\* request_count)(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q) |\n\n\nGet the count of request buffers pending in the queue. May return CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS if a repeating request (stream request) is currently configured. Calling this method has no effect on whether the notify_request_queue_not_empty() method will be called by the framework.\n\n\nDefinition at line\n[228](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)"]]