camera3_callback_ops Struct Reference

camera3_callback_ops Struct Reference

#include < camera3.h >

Campi dati

void(*  process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
 
void(*  notify )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)
 

Descrizione dettagliata

Definizione alla riga 2397 del file camera3.h .

Documentazione dei campi

void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

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 .

void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *result)

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: