camera3_callback_ops Riferimento alla struttura

camera3_callback_ops Riferimento alla struttura

#include < camera3.h >

Campi dati

vuoto(* process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
vuoto(* 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(* notifica)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

notificare:

Richiamata di notifica asincrona dall'HAL, attivata per vari motivi. Solo per informazioni indipendenti dall'acquisizione del fotogramma o che richiedono tempistiche specifiche. La proprietà della struttura del messaggio rimane dell'HAL e il messaggio deve essere valido solo per la durata di questa chiamata.

Più thread possono chiamare notify() simultaneamente.

<= CAMERA_DEVICE_API_VERSION_3_1:

La notifica di inizio 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 consegnati al framework non verranno inviati al livello dell'applicazione fino a quando il timestamp di inizio esposizione (o il timestamp di inizio esposizione dell'immagine in ingresso per una richiesta di rielaborazione) non sarà stato ricevuto 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 5ms.

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 metadati e i buffer a bassa risoluzione in una chiamata e i buffer JPEG post-elaborati in una chiamata successiva, una volta disponibile. 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 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 parte dell'output. Non è consentita una chiamata a process_capture_result() senza buffer di output o metadati dei risultati.

L'ordine di restituzione dei metadati e dei buffer per un singolo risultato non ha importanza, ma i buffer per un determinato flusso devono essere restituiti in ordine FIFO. Pertanto 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 dei risultati; 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 lo è stato il buffer per la richiesta 6 per il flusso B. Ed è accettabile che i metadati dei risultati per la richiesta 6 per il flusso B vengano restituiti prima che lo sia il buffer per la richiesta 5 per il flusso 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ò di cui ha bisogno prima che questa chiamata ritorni.

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

Se non è possibile costruire il buffer dei risultati per una richiesta, l'HAL dovrebbe restituire un buffer di metadati vuoto, ma fornire comunque i buffer di output e i relativi limiti di sincronizzazione. Inoltre, notify() deve essere chiamato con un messaggio ERROR_RESULT.

Se non è possibile riempire un buffer di output, 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, è 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 del risultato dovrebbero 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 prestazione:

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

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