camera2_request_queue_src_ops Riferimento Struct

camera2_request_queue_src_ops Riferimento Struct

#include < camera2.h >

Campi dati

int (* request_count ) (const struct camera2_request_queue_src_ops * q)
int (* dequeue_request ) (const struct camera2_request_queue_src_ops * q, camera_metadata_t ** buffer)
int (* free_request ) (const struct camera2_request_queue_src_ops * q, camera_metadata_t * old_buffer)

Descrizione dettagliata

Richiedi il protocollo della coda di input:

Il framework contiene la coda e il suo contenuto. All'inizio, la coda è vuota.

  1. Quando il primo buffer di metadati viene inserito nella coda, il framework segnala al dispositivo chiamando notify_request_queue_not_empty ().
  2. Dopo aver ricevuto notify_request_queue_not_empty, il dispositivo deve chiamare dequeue () una volta che è pronto per gestire il buffer successivo.
  3. Una volta che il dispositivo ha elaborato un buffer ed è pronto per il buffer successivo, deve chiamare di nuovo dequeue () invece di attendere una notifica. Se non ci sono più buffer disponibili, dequeue () restituirà NULL. Dopo questo punto, quando un buffer diventa disponibile, il framework deve chiamare di nuovo notify_request_queue_not_empty (). Se il dispositivo riceve un ritorno NULL da dequeue, non ha bisogno di interrogare nuovamente la coda fino a quando non riceve una chiamata notify_request_queue_not_empty () dall'origine.
  4. Se il dispositivo chiama buffer_count () e riceve 0, ciò non significa che il framework fornirà una chiamata notify_request_queue_not_empty (). Il framework fornirà tale notifica solo dopo che il dispositivo ha ricevuto un NULL dall'annullamento dell'accodamento o all'avvio iniziale.
  5. La chiamata dequeue () in risposta a notify_request_queue_not_empty () potrebbe essere sullo stesso thread della chiamata notify_request_queue_not_empty () e può essere eseguita dall'interno della chiamata notify.
  6. Tutti i buffer delle richieste rimosse dalla coda devono essere restituiti al framework chiamando free_request, anche quando si verificano errori, viene richiesto uno svuotamento del dispositivo o quando il dispositivo si sta spegnendo.

Definizione alla riga 220 del file camera2.h .

Documentazione sul campo

int (* dequeue_request) (const struct camera2_request_queue_src_ops * q, camera_metadata_t ** buffer)

Ottieni un buffer di metadati dal framework. Restituisce OK se non ci sono errori. Se la coda è vuota, restituisce NULL nel buffer. In tal caso, il dispositivo deve attendere un messaggio notify_request_queue_not_empty () prima di tentare di rimuovere nuovamente la coda. I buffer ottenuti in questo modo devono essere restituiti al framework con free_request () .

Definizione alla riga 237 del file camera2.h .

int (* free_request) (const struct camera2_request_queue_src_ops * q, camera_metadata_t * old_buffer)

Restituisce un buffer di metadati al framework una volta che è stato utilizzato o se si verifica un errore o un arresto.

Definizione alla riga 243 del file camera2.h .

int (* request_count) (const struct camera2_request_queue_src_ops * q)

Ottieni il conteggio dei buffer delle richieste in sospeso nella coda. Può restituire CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS se è attualmente configurata una richiesta ripetuta (richiesta di flusso). La chiamata a questo metodo non ha effetto sul fatto che il metodo notify_request_queue_not_empty () venga chiamato dal framework.

Definizione alla riga 228 del file camera2.h .


La documentazione per questa struttura è stata generata dal seguente file:
  • hardware / libhardware / include / hardware / camera2.h