camera3_callback_ops Riferimento Struct

camera3_callback_ops Riferimento Struct

#include < camera3.h >

Campi dati

void (* process_capture_result ) (const struct camera3_callback_ops *, const camera3_capture_result_t * risultato)
void (* notifica ) (const struct camera3_callback_ops *, const camera3_notify_msg_t * msg)

Descrizione dettagliata

Definizione alla riga 2397 del file camera3.h .

Documentazione sul campo

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

notificare:

Callback di notifica asincrona dall'HAL, attivato per vari motivi. Solo per informazioni indipendenti dall'acquisizione di frame o che richiedono tempi specifici. La proprietà della struttura del messaggio rimane con l'HAL e il messaggio deve essere valido solo per la durata di questa chiamata.

Più thread possono chiamare notify () contemporaneamente.

<= CAMERA_DEVICE_API_VERSION_3_1:

La notifica per l'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 forniti al framework non verranno inviati al livello dell'applicazione fino a quando non viene ricevuto un timestamp di inizio dell'esposizione (o il timestamp di inizio dell'esposizione dell'immagine di input per una richiesta di rielaborazione) tramite una chiamata SHUTTER notify () . Si consiglia vivamente di inviare questa chiamata il prima possibile.


Requisiti di prestazione:

Questa è 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 * risultato)

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 metadati e i buffer 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 la quale restituisce metadati o buffer.

Un componente (buffer o metadati) del risultato completo può essere incluso solo in una chiamata process_capture_result. Un buffer per ogni flusso e i metadati del risultato devono essere restituiti dall'HAL per ogni richiesta in una delle chiamate process_capture_result, anche in caso di errori che producono parte dell'output. Non è consentita una chiamata a process_capture_result () senza buffer di output o metadati dei risultati.

L'ordine di restituzione di metadati e buffer per un singolo risultato non ha importanza, ma i buffer per un determinato flusso devono essere restituiti in ordine FIFO. Quindi il buffer per la richiesta 5 per il flusso A deve essere sempre restituito prima del buffer per la richiesta 6 per il flusso A. Ciò vale anche per i metadati del risultato; i metadati per la richiesta 5 devono essere restituiti prima dei metadati per la richiesta 6.

Tuttavia, flussi diversi sono indipendenti l'uno dall'altro, quindi è accettabile e previsto che il buffer per la richiesta 5 per il flusso A possa essere restituito dopo che il buffer per la richiesta 6 per il flusso B. Ed è accettabile che i metadati dei risultati per la richiesta 6 per lo stream B vengano restituiti prima che lo sia il buffer per la richiesta 5 per lo stream A.

L'HAL mantiene la proprietà della struttura dei risultati, che deve essere valida solo per accedere durante questa chiamata. Il framework copierà tutto ciò di cui ha bisogno prima che questa chiamata ritorni.

I buffer di output non devono ancora essere riempiti; il framework attenderà il recinto di sincronizzazione del rilascio del buffer del flusso prima di leggere i dati del buffer. Pertanto, questo metodo dovrebbe essere chiamato dall'HAL il prima possibile, anche se alcuni o tutti i buffer di output sono ancora riempiti. L'HAL deve includere recinti di sincronizzazione di rilascio validi in ogni voce del buffer di flusso output_buffers, o -1 se il buffer di flusso è già pieno.

Se il buffer dei risultati non può essere costruito per una richiesta, l'HAL dovrebbe restituire un buffer di metadati vuoto, ma fornire comunque i buffer di output e le loro barriere di sincronizzazione. Inoltre, notify () deve essere chiamato con un messaggio ERROR_RESULT.

Se un buffer di output non può essere riempito, il suo 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, è comunque necessario chiamare questo metodo per restituire i buffer di output al framework. Tutti gli stati del buffer dovrebbero essere STATUS_ERROR e i metadati dei risultati dovrebbero essere un buffer vuoto. Inoltre, notify () deve essere chiamato con un messaggio ERROR_REQUEST. In questo caso, i singoli messaggi ERROR_RESULT / ERROR_BUFFER non dovrebbero essere inviati.

Requisiti di prestazione:

Questa è una chiamata non bloccante. Il framework restituirà questa chiamata in 5 ms.

La latenza della pipeline (vedere S7 per la definizione) deve essere inferiore o uguale a 4 intervalli di frame e deve essere inferiore o uguale a 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