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.
camera3_callback_ops-Strukturreferenz
#include <
camera3.h
>
Definition in Zeile
2397
der Datei
camera3.h
.
Benachrichtigen:
Asynchroner Benachrichtigungs-Callback vom HAL, der aus verschiedenen Gründen ausgelöst wird. Nur für Informationen, die unabhängig von der Frame-Erfassung sind oder ein bestimmtes Timing erfordern. Die Eigentümerschaft der Nachrichtenstruktur verbleibt beim HAL und die Nachricht muss nur für die Dauer dieses Aufrufs gültig sein.
Mehrere Threads können
notify()
gleichzeitig aufrufen.
<= CAMERA_DEVICE_API_VERSION_3_1:
Die Benachrichtigung über den Beginn der Belichtung für eine bestimmte Anfrage muss vom HAL gesendet werden, bevor der erste Aufruf von
process_capture_result()
für diese Anfrage erfolgt.
>= CAMERA_DEVICE_API_VERSION_3_2:
An das Framework übergebene Puffer werden erst an die Anwendungsebene gesendet, wenn über einen SHUTTER-Aufruf
notify()
ein Zeitstempel für den Beginn der Belichtung (oder der Zeitstempel für den Beginn der Belichtung des Eingabebilds für eine Anfrage zur erneuten Verarbeitung) empfangen wurde. Wir empfehlen dringend, diesen Aufruf so früh wie möglich zu senden.
Anforderungen für die Leistung:
Dies ist ein nicht blockierender Aufruf. Das Framework gibt diesen Aufruf nach 5 ms zurück.
Definition in Zeile
2499
der Datei
camera3.h
.
process_capture_result:
Ergebnisse einer abgeschlossenen Erfassung an das Framework senden.
process_capture_result()
kann vom HAL als Reaktion auf eine einzelne Erfassungsanfrage mehrmals aufgerufen werden. So können beispielsweise die Metadaten und Puffer mit niedriger Auflösung in einem Aufruf zurückgegeben werden und die nachbearbeiteten JPEG-Puffer in einem späteren Aufruf, sobald sie verfügbar sind. Jeder Aufruf muss die Framenummer der Anfrage enthalten, für die Metadaten oder Puffer zurückgegeben werden.
Eine Komponente (Puffer oder Metadaten) des vollständigen Ergebnisses darf nur in einem process_capture_result-Aufruf enthalten sein. Für jede Anfrage muss von der HAL in einem der process_capture_result-Aufrufe ein Puffer für jeden Stream und die Ergebnismetadaten zurückgegeben werden, auch wenn Fehler auftreten, die einen Teil der Ausgabe verursachen. Ein Aufruf von
process_capture_result()
ohne Ausgabepuffer oder Ergebnismetadaten ist nicht zulässig.
Die Reihenfolge, in der Metadaten und Puffer für ein einzelnes Ergebnis zurückgegeben werden, spielt keine Rolle. Puffer für einen bestimmten Stream müssen jedoch in FIFO-Reihenfolge zurückgegeben werden. Der Puffer für Anfrage 5 für Stream A muss also immer vor dem Puffer für Anfrage 6 für Stream A zurückgegeben werden. Das gilt auch für die Ergebnismetadaten: Die Metadaten für Anfrage 5 müssen vor den Metadaten für Anfrage 6 zurückgegeben werden.
Die verschiedenen Streams sind jedoch unabhängig voneinander. Daher ist es akzeptabel und zu erwarten, dass der Puffer für Anfrage 5 für Stream A nach dem Puffer für Anfrage 6 für Stream B zurückgegeben wird. Außerdem ist es akzeptabel, dass die Ergebnismetadaten für Anfrage 6 für Stream B vor dem Puffer für Anfrage 5 für Stream A zurückgegeben werden.
Das HAL behält die Inhaberschaft der Ergebnisstruktur bei, die nur für den Zugriff während dieses Aufrufs gültig sein muss. Das Framework kopiert alles, was es benötigt, bevor dieser Aufruf zurückgegeben wird.
Die Ausgabepuffer müssen noch nicht gefüllt werden. Das Framework wartet auf den Synchronisations-Fence für die Freigabe des Stream-Puffers, bevor die Pufferdaten gelesen werden. Daher sollte diese Methode so schnell wie möglich vom HAL aufgerufen werden, auch wenn einige oder alle Ausgabepuffer noch gefüllt werden. Das HAL muss in jedem „output_buffers“-Stream-Puffereintrag gültige Release-Synchronisations-Fences einfügen oder -1, wenn dieser Stream-Puffer bereits gefüllt ist.
Wenn der Ergebnisbuffer für eine Anfrage nicht erstellt werden kann, sollte das HAL einen leeren Metadatenbuffer zurückgeben, aber trotzdem die Ausgabebuffer und ihre Synchronisations-Fences bereitstellen. Außerdem muss
notify()
mit einer ERROR_RESULT-Nachricht aufgerufen werden.
Wenn ein Ausgabepuffer nicht gefüllt werden kann, muss sein Statusfeld auf STATUS_ERROR gesetzt werden. Außerdem muss
notify()
mit einer ERROR_BUFFER-Nachricht aufgerufen werden.
Wenn die gesamte Aufnahme fehlgeschlagen ist, muss diese Methode trotzdem aufgerufen werden, um die Ausgabepuffer an das Framework zurückzugeben. Alle Pufferstatus sollten STATUS_ERROR sein und die Ergebnismetadaten sollten ein leerer Puffer sein. Außerdem muss
notify()
mit einer ERROR_REQUEST-Nachricht aufgerufen werden. In diesem Fall sollten keine einzelnen ERROR_RESULT-/ERROR_BUFFER-Nachrichten gesendet werden.
Anforderungen für die Leistung:
Dies ist ein nicht blockierender Aufruf. Das Framework gibt diesen Aufruf nach 5 ms zurück.
Die Pipeline-Latenz (siehe S7 für die Definition) sollte kleiner oder gleich 4 Frame-Intervallen sein und muss kleiner oder gleich 8 Frame-Intervallen sein.
Definition in Zeile
2466
der Datei
camera3.h
.
Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert:
-
hardware/libhardware/include/hardware/
camera3.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: camera3_callback_ops Struct Reference\n\ncamera3_callback_ops Struct Reference\n=====================================\n\n[Data Fields](#pub-attribs) \ncamera3_callback_ops Struct Reference \n\n`\n#include \u003c\n`[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)`\n\u003e\n`\n\n|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| void(\\* | [process_capture_result](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n| ||\n| void(\\* | [notify](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nDefinition at line\n[2397](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\nField Documentation\n-------------------\n\n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* notify)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n\n\nnotify:\n\n\nAsynchronous notification callback from the HAL, fired for various reasons. Only for information independent of frame capture, or that require specific timing. The ownership of the message structure remains with the HAL, and the msg only needs to be valid for the duration of this call.\n\n\nMultiple threads may call\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nsimultaneously.\n\n\n\\\u003c= CAMERA_DEVICE_API_VERSION_3_1:\n\n\nThe notification for the start of exposure for a given request must be sent by the HAL before the first call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nfor that request is made.\n\n\n\\\u003e= CAMERA_DEVICE_API_VERSION_3_2:\n\n\nBuffers delivered to the framework will not be dispatched to the application layer until a start of exposure timestamp (or input image's start of exposure timestamp for a reprocess request) has been received via a SHUTTER\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\ncall. It is highly recommended to dispatch this call as early as possible.\n\n*** ** * ** ***\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nDefinition at line\n[2499](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* process_capture_result)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n\n\nprocess_capture_result:\n\n\nSend results from a completed capture to the framework.\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nmay be invoked multiple times by the HAL in response to a single capture request. This allows, for example, the metadata and low-resolution buffers to be returned in one call, and post-processed JPEG buffers in a later call, once it is available. Each call must include the frame number of the request it is returning metadata or buffers for.\n\n\nA component (buffer or metadata) of the complete result may only be included in one process_capture_result call. A buffer for each stream, and the result metadata, must be returned by the HAL for each request in one of the process_capture_result calls, even in case of errors producing some of the output. A call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nwith neither output buffers or result metadata is not allowed.\n\n\nThe order of returning metadata and buffers for a single result does not matter, but buffers for a given stream must be returned in FIFO order. So the buffer for request 5 for stream A must always be returned before the buffer for request 6 for stream A. This also applies to the result metadata; the metadata for request 5 must be returned before the metadata for request 6.\n\n\nHowever, different streams are independent of each other, so it is acceptable and expected that the buffer for request 5 for stream A may be returned after the buffer for request 6 for stream B is. And it is acceptable that the result metadata for request 6 for stream B is returned before the buffer for request 5 for stream A is.\n\n\nThe HAL retains ownership of result structure, which only needs to be valid to access during this call. The framework will copy whatever it needs before this call returns.\n\n\nThe output buffers do not need to be filled yet; the framework will wait on the stream buffer release sync fence before reading the buffer data. Therefore, this method should be called by the HAL as soon as possible, even if some or all of the output buffers are still in being filled. The HAL must include valid release sync fences into each output_buffers stream buffer entry, or -1 if that stream buffer is already filled.\n\n\nIf the result buffer cannot be constructed for a request, the HAL should return an empty metadata buffer, but still provide the output buffers and their sync fences. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with an ERROR_RESULT message.\n\n\nIf an output buffer cannot be filled, its status field must be set to STATUS_ERROR. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_BUFFER message.\n\n\nIf the entire capture has failed, then this method still needs to be called to return the output buffers to the framework. All the buffer statuses should be STATUS_ERROR, and the result metadata should be an empty buffer. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_REQUEST message. In this case, individual ERROR_RESULT/ERROR_BUFFER messages should not be sent.\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nThe pipeline latency (see S7 for definition) should be less than or equal to 4 frame intervals, and must be less than or equal to 8 frame intervals.\n\n\nDefinition at line\n[2466](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)"]]