A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
camera3_callback_ops Struct Reference
#include <
camera3.h
>
Definizione alla riga
2397
del file
camera3.h
.
notify:
Callback di notifica asincrono dall'HAL, attivato per vari motivi. Solo per informazioni indipendenti dall'acquisizione dei fotogrammi o che richiedono una tempistica specifica. La proprietà della struttura del messaggio rimane all'HAL e il messaggio deve essere valido solo per la durata della chiamata.
Più thread possono chiamare
notify()
contemporaneamente.
<= CAMERA_DEVICE_API_VERSION_3_1:
La notifica dell'inizio dell'esposizione per una determinata richiesta deve essere inviata dall'HAL prima che venga effettuata la prima chiamata a
process_capture_result()
per quella richiesta.
>= CAMERA_DEVICE_API_VERSION_3_2:
I buffer inviati al framework non verranno inviati al livello dell'applicazione finché non viene ricevuta un'indicazione dell'inizio dell'esposizione (o l'indicazione dell'inizio dell'esposizione dell'immagine di input per una richiesta di rielaborazione) tramite una chiamata SHUTTER
notify()
. Ti consigliamo vivamente di inviare questa chiamata il prima possibile.
Requisiti di rendimento:
Si tratta di una chiamata non bloccante. Il framework restituirà questa chiamata in 5 ms.
Definizione alla riga
2499
del file
camera3.h
.
process_capture_result:
Invia i risultati di un'acquisizione completata al framework.
process_capture_result()
può essere richiamato più volte dall'HAL in risposta a una singola richiesta di acquisizione. Ciò consente, ad esempio, di restituire i buffer di metadati e a bassa risoluzione in una chiamata e i buffer JPEG post-elaborati in una chiamata successiva, una volta disponibili. Ogni chiamata deve includere il numero di frame della richiesta per cui restituisce metadati o buffer.
Un componente (buffer o metadati) del risultato completo può essere incluso in una sola chiamata process_capture_result. Un buffer per ogni flusso e i metadati dei risultati devono essere restituiti dall'HAL per ogni richiesta in una delle chiamate process_capture_result, anche in caso di errori nella produzione di alcuni output. Una chiamata a
process_capture_result()
senza buffer di output o metadati dei risultati non è consentita.
L'ordine di restituzione dei metadati e dei buffer per un singolo risultato non è importante, ma i buffer per un determinato stream devono essere restituiti in ordine FIFO. Pertanto, il buffer per la richiesta 5 per lo stream A deve sempre essere restituito prima del buffer per la richiesta 6 per lo stream A. Ciò vale anche per i metadati dei risultati: i metadati della richiesta 5 devono essere restituiti prima di quelli della richiesta 6.
Tuttavia, i diversi stream sono indipendenti l'uno dall'altro, quindi è accettabile e previsto che il buffer per la richiesta 5 per lo stream A venga restituito dopo il buffer per la richiesta 6 per lo stream B. Inoltre, è accettabile che i metadati dei risultati per la richiesta 6 per lo stream B vengano restituiti prima del buffer per la richiesta 5 per lo stream A.
L'HAL mantiene la proprietà della struttura dei risultati, che deve essere valida solo per l'accesso durante questa chiamata. Il framework copierà tutto ciò che è necessario prima che questa chiamata venga restituita.
I buffer di output non devono ancora essere riempiti; il framework attenderà la barriera di sincronizzazione del rilascio del buffer di flusso prima di leggere i dati del buffer. Pertanto, questo metodo deve essere chiamato dall'HAL il prima possibile, anche se alcuni o tutti i buffer di output sono ancora in fase di riempimento. L'HAL deve includere barriere di sincronizzazione di rilascio valide in ogni voce del buffer di flusso output_buffers oppure -1 se il buffer di flusso è già pieno.
Se non è possibile creare il buffer dei risultati per una richiesta, l'HAL deve restituire un buffer di metadati vuoto, ma fornire comunque i buffer di output e le relative barriere di sincronizzazione. Inoltre,
notify()
deve essere chiamato con un messaggio ERROR_RESULT.
Se un buffer di output non può essere riempito, il relativo campo di stato deve essere impostato su STATUS_ERROR. Inoltre,
notify()
deve essere chiamato con un messaggio ERROR_BUFFER.
Se l'intera acquisizione non è riuscita, questo metodo deve comunque essere chiamato per restituire i buffer di output al framework. Tutti gli stati del buffer devono essere STATUS_ERROR e i metadati del risultato devono essere un buffer vuoto. Inoltre,
notify()
deve essere chiamato con un messaggio ERROR_REQUEST. In questo caso, non devono essere inviati singoli messaggi ERROR_RESULT/ERROR_BUFFER.
Requisiti di rendimento:
Si tratta di una chiamata non bloccante. Il framework restituirà questa chiamata in 5 ms.
La latenza della pipeline (vedi S7 per la definizione) deve essere inferiore o uguale a 4 intervalli di frame e non deve superare gli 8 intervalli di frame.
Definizione alla riga
2466
del file
camera3.h
.
La documentazione per questa struttura è stata generata dal seguente file:
-
hardware/libhardware/include/hardware/
camera3.h
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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)"]]