Riferimento alla struttura camera2_device_ops
#include < camera2.h >
Campi dati | |
int(* | set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* | notify_request_queue_not_empty )(const struct camera2_device *) |
int(* | set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* | get_in_progress_count )(const struct camera2_device *) |
int(* | flush_captures_in_progress )(const struct camera2_device *) |
int(* | build_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request) |
int(* | allocate_stream )(const struct camera2_device *, uint32_t larghezza, uint32_t altezza, int formato, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers) |
int(* | Register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
int(* | release_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | allocate_reprocess_stream )(const struct camera2_device *, uint32_t larghezza, uint32_t altezza, uint32_t formato, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
int(* | allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id) |
int(* | release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
int(* | set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* | get_metadata_vendor_tag_ops )(const struct camera2_device *, seller_tag_query_ops_t **ops) |
int(* | dump )(const struct camera2_device *, int fd) |
int(* | get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata) |
Descrizione dettagliata
Documentazione sul campo
int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t larghezza, uint32_t altezza, uint32_t formato, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
allocate_reprocess_stream:
Assegna un nuovo flusso di input da utilizzare, definito dalla larghezza, dall'altezza e dal formato pixel del buffer di output. Restituisce l'ID del nuovo flusso, i flag di utilizzo di gralloc e il numero di buffer acquisibili simultaneamente richiesti, in caso di successo. Condizioni di errore:
- Richiesta di una combinazione larghezza/altezza/formato non elencata come supportata dalle caratteristiche statiche del sensore
- Richiesta di configurare troppi flussi di rielaborazione contemporaneamente.
Parametri di input:
- larghezza, altezza, formato: specifiche per i buffer da inviare attraverso questo flusso. Il formato deve essere un valore dall'elenco HAL_PIXEL_FORMAT_*.
- reprocess_stream_ops: una struttura di puntatori a funzione per acquisire e rilasciare buffer per questo flusso. Il flusso sottostante verrà configurato in base all'utilizzo e agli output max_buffers.
Parametri di uscita:
- stream_id: un numero intero senza segno che identifica questo flusso. Questo valore viene utilizzato nelle richieste in entrata per identificare il flusso e nel rilasciare il flusso. Questi ID sono numerati separatamente dagli ID del flusso di input.
- consumer_usage: la maschera di utilizzo gralloc necessaria al dispositivo HAL per consumare il tipo di dati richiesto. Viene utilizzato per allocare nuovi buffer gralloc per la coda del buffer del flusso.
- max_buffers: il numero massimo di buffer che potrebbe essere necessario acquisire contemporaneamente dal dispositivo HAL. Il dispositivo non può avere più buffer acquisiti contemporaneamente di questo valore.
int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id) |
allocate_reprocess_stream_from_stream:
Assegnare un nuovo flusso di input per l'uso, che utilizzerà i buffer allocati per un flusso di output esistente. Cioè, dopo che l'HAL ha accodato un buffer nel flusso di output, potrebbe vedere lo stesso buffer passatogli da questo flusso di rielaborazione di input. Dopo che l'HAL ha rilasciato il buffer nuovamente al flusso di rielaborazione, verrà restituito alla coda di output per il riutilizzo.
Condizioni di errore:
- Utilizzo di un flusso di output di dimensioni/formato inadeguato come base del flusso di rielaborazione.
- Tentativo di allocare troppi flussi di rielaborazione contemporaneamente.
Parametri di input:
- output_stream_id: l'ID di un flusso di output esistente che ha una dimensione e un formato adatti alla rielaborazione.
- reprocess_stream_ops: una struttura di puntatori a funzione per acquisire e rilasciare buffer per questo flusso. Il flusso sottostante utilizzerà gli stessi handle di buffer grafico utilizzati dal flusso di output.
Parametri di uscita:
- stream_id: un numero intero senza segno che identifica questo flusso. Questo valore viene utilizzato nelle richieste in entrata per identificare il flusso e nel rilasciare il flusso. Questi ID sono numerati separatamente dagli ID del flusso di input.
Il client HAL deve sempre rilasciare il flusso di rielaborazione prima di rilasciare il flusso di output su cui è basato.
int(* allocate_stream)(const struct camera2_device *,uint32_t larghezza, uint32_t altezza, int formato, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers) |
allocate_stream:
Assegnare un nuovo flusso di output da utilizzare, definito dalla larghezza del buffer di output, dall'altezza, dalla destinazione ed eventualmente dal formato pixel. Restituisce l'ID del nuovo flusso, i flag di utilizzo di gralloc, il conteggio minimo del buffer della coda ed eventualmente il formato pixel, in caso di successo. Condizioni di errore:
- Richiesta di una combinazione larghezza/altezza/formato non elencata come supportata dalle caratteristiche statiche del sensore
- Richiesta di troppi flussi di un determinato tipo di formato (2 flussi grezzi Bayer, ad esempio).
Parametri di input:
- larghezza, altezza, formato: specifiche per i buffer da inviare attraverso questo flusso. Il formato è un valore dall'elenco HAL_PIXEL_FORMAT_*. Se viene utilizzato HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, il modulo gralloc della piattaforma selezionerà un formato in base ai flag di utilizzo forniti dall'HAL della fotocamera e dal consumatore del flusso. L'HAL della fotocamera dovrebbe ispezionare i buffer che gli sono stati consegnati nella chiamata a Register_stream_buffers per ottenere il formato specifico dell'implementazione, se necessario.
- stream_ops: una struttura di puntatori a funzione per ottenere e mettere in coda i buffer per questo flusso. Il flusso sottostante verrà configurato in base all'utilizzo e agli output max_buffers. I metodi in questa struttura potrebbero non essere chiamati finché non viene restituito allocate_stream.
Parametri di uscita:
- stream_id: un numero intero senza segno che identifica questo flusso. Questo valore viene utilizzato nelle richieste in entrata per identificare il flusso e nel rilasciare il flusso.
- utilizzo: la maschera di utilizzo gralloc necessaria al dispositivo HAL per produrre il tipo di dati richiesto. Viene utilizzato per allocare nuovi buffer gralloc per la coda del buffer del flusso.
- max_buffers: il numero massimo di buffer di cui potrebbe aver bisogno il dispositivo HAL per essere rimossi dalla coda contemporaneamente. Il dispositivo non può rimuovere dalla coda più buffer di questo valore contemporaneamente.
int(* build_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request) |
Crea una richiesta predefinita compilata per i casi d'uso standard della fotocamera.
Il dispositivo deve restituire una richiesta completa configurata per soddisfare il caso d'uso richiesto, che deve essere una delle enumerazioni CAMERA2_TEMPLATE_*. Tutti i campi di controllo della richiesta devono essere inclusi, ad eccezione di android.request.outputStreams.
Il buffer dei metadati restituito deve essere allocato con allocate_camera_metadata. Il framework assume la proprietà del buffer.
int(* dump)(const struct camera2_device *, int fd) |
int(* flush_captures_in_progress)(const struct camera2_device *) |
Svuota tutte le acquisizioni in corso. Ciò include tutte le richieste deaccodate (normali o in rielaborazione) che non hanno ancora inserito alcun output in un flusso o nella coda dei frame. Le acquisizioni parzialmente completate devono essere completate normalmente. Nessuna nuova richiesta può essere rimossa dalla coda delle richieste fino al completamento dello svuotamento.
int(* get_in_progress_count)(const struct camera2_device *) |
Numero di richieste della fotocamera elaborate dal dispositivo al momento (acquisisce/rielabora la cui richiesta è stata rimossa dalla coda, ma non è stata ancora accodata nelle pipeline di output). Nessun flusso può essere rilasciato dal framework finché il conteggio in corso non è pari a 0.
int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata) |
Ottieni metadati specifici dell'istanza del dispositivo. Questi metadati devono essere costanti per una singola istanza del dispositivo fotocamera, ma potrebbero essere diversi tra le chiamate open(). Il puntatore camera_metadata restituito deve essere valido finché non viene chiamato il metodo dispositivo close().
Informazioni sulla versione:
CAMERA_DEVICE_API_VERSION_2_0:
Non disponibile. Il framework potrebbe non accedere a questo puntatore a funzione.
CAMERA_DEVICE_API_VERSION_2_1:
Valido. Può essere chiamato dal framework.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, seller_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const struct camera2_device *) |
int(* Register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
Registra i buffer per un determinato flusso. Viene chiamato dopo una chiamata allocate_stream riuscita e prima che la prima richiesta che fa riferimento allo stream venga accodata. Questo metodo ha lo scopo di consentire al dispositivo HAL di mappare o preparare in altro modo i buffer per un utilizzo successivo. num_buffers è garantito essere almeno max_buffers (da allocate_stream), ma potrebbe essere maggiore. I buffer saranno già bloccati per l'uso. Al termine della chiamata tutti i buffer devono essere pronti per essere rimessi in coda. Se il formato del flusso è stato impostato su HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, l'HAL della fotocamera dovrebbe controllare i buffer passati qui per determinare eventuali informazioni sul formato pixel privato della piattaforma.
int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* release_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
La documentazione per questa struttura è stata generata dal seguente file:
- hardware/libhardware/include/hardware/ camera2.h