Referência da estrutura camera2_device_ops

Referência da estrutura camera2_device_ops

#include < camera2.h >

Campos de dados

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(*  construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request)
 
int(*  allocate_stream )(const struct camera2_device *, uint32_t width, uint32_t height, int format, 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 width, uint32_t height, uint32_t format, 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 *, vendor_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)
 

Descrição detalhada

Definição na linha 527 do arquivo camera2.h .

Documentação do campo

int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

allocate_reprocess_stream:

Aloque um novo stream de entrada para uso, definido pela largura, altura e formato de pixel do buffer de saída. Retorna o ID do novo stream, as flags de uso do gralloc e a contagem de buffer adquirível simultaneamente necessária. Condições de erro:

  • Solicitação de uma combinação de largura/altura/formato não listada como compatível com as características estáticas do sensor
  • Pedir que muitos streams de reprocessamento sejam configurados de uma só vez.

Parâmetros de entrada:

  • width, height, format: especificação dos buffers a serem enviados por esse stream. O formato precisa ser um valor da lista HAL_PIXEL_FORMAT_*.
  • reprocess_stream_ops: uma estrutura de ponteiros de função para adquirir e liberar buffers para esse stream. O fluxo será configurado com base no uso e nas saídas de max_buffers.

Parâmetros de saída:

  • stream_id: um número inteiro sem sinal que identifica esse fluxo. Esse valor é usado em solicitações de entrada para identificar o stream e liberar o stream. Esses IDs são numerados separadamente dos IDs do fluxo de entrada.
  • consumer_usage: a máscara de uso de gralloc necessária para que o dispositivo HAL consuma o tipo de dados solicitado. Ele é usado para alocar novos buffers gralloc para a fila de buffer de stream.
  • max_buffers: o número máximo de buffers que o dispositivo HAL precisa ter adquirido ao mesmo tempo. O dispositivo não pode ter mais buffers adquiridos ao mesmo tempo do que esse valor.

Definição na linha 708 do arquivo camera2.h .

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:

Aloque um novo stream de entrada para uso, que usará os buffers alocados para um stream de saída existente. Ou seja, depois que o HAL enfileira um buffer no stream de saída, ele poderá ver esse mesmo buffer transmitido por esse stream de reprocessamento de entrada. Depois que o HAL liberar o buffer de volta para o fluxo de reprocessamento, ele será retornado à fila de saída para reutilização.

Condições de erro:

  • Usar um stream de saída de tamanho/formato inadequado para a base do stream de reprocessamento.
  • Tentativa de alocar muitos streams de reprocessamento de uma só vez.

Parâmetros de entrada:

  • output_stream_id: o ID de um stream de saída que tem um tamanho e formato adequados para reprocessamento.
  • reprocess_stream_ops: uma estrutura de ponteiros de função para adquirir e liberar buffers para esse stream. O stream principal vai usar os mesmos identificadores de buffer de gráficos que o stream de saída.

Parâmetros de saída:

  • stream_id: um número inteiro sem sinal que identifica esse fluxo. Esse valor é usado em solicitações de entrada para identificar o stream e liberar o stream. Esses IDs são numerados separadamente dos IDs do fluxo de entrada.

O cliente HAL precisa sempre liberar o stream de reprocessamento antes de liberar o stream de saída em que ele se baseia.

Definição na linha 754 do arquivo camera2.h .

int(* allocate_stream)(const struct camera2_device *,uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers)

allocate_stream:

Aloque um novo stream de saída para uso, definido pela largura, altura, destino e, possivelmente, o formato de pixel do buffer de saída. Retorna o ID do novo stream, as flags de uso do gralloc, a contagem mínima de buffer da fila e, possivelmente, o formato de pixel, em caso de sucesso. Condições de erro:

  • Solicitação de uma combinação de largura/altura/formato não listada como compatível com as características estáticas do sensor
  • Solicitar muitos fluxos de um determinado tipo de formato (dois fluxos brutos de Bayer, por exemplo).

Parâmetros de entrada:

  • width, height, format: especificação dos buffers a serem enviados por esse stream. O formato é um valor da lista HAL_PIXEL_FORMAT_*. Se HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED for usado, o módulo gralloc da plataforma vai selecionar um formato com base nos flags de uso fornecidos pelo HAL da câmera e pelo consumidor do stream. O HAL da câmera precisa inspecionar os buffers transmitidos a ele na chamada register_stream_buffers para receber o formato específico da implementação, se necessário.
  • stream_ops: uma estrutura de ponteiros de função para conseguir e enfileirar buffers para esse stream. O fluxo será configurado com base no uso e nas saídas de max_buffers. Os métodos nessa estrutura podem não ser chamados até que allocate_stream seja retornado.

Parâmetros de saída:

  • stream_id: um número inteiro sem sinal que identifica esse fluxo. Esse valor é usado em solicitações de entrada para identificar o stream e liberar o stream.
  • usage: a máscara de uso do gralloc necessária para que o dispositivo HAL produza o tipo de dados solicitado. Ele é usado para alocar novos buffers gralloc para a fila de buffer de stream.
  • max_buffers: o número máximo de buffers que o dispositivo HAL precisa ter removido da fila ao mesmo tempo. O dispositivo não pode retirar mais buffers da fila do que esse valor ao mesmo tempo.

Definição na linha 632 do arquivo camera2.h .

int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request)

Crie uma solicitação padrão preenchida para casos de uso padrão da câmera.

O dispositivo precisa retornar uma solicitação completa configurada para atender ao caso de uso solicitado, que precisa ser um dos enumeradores CAMERA2_TEMPLATE_* Todos os campos de controle de solicitação precisam ser incluídos, exceto android.request.outputStreams.

O buffer de metadados retornado precisa ser alocado com allocate_camera_metadata. O framework assume a propriedade do buffer.

Definição na linha 580 do arquivo camera2.h .

int(* dump)(const struct camera2_device *, int fd)

Estado de despejo do hardware da câmera

Definição na linha 801 do arquivo camera2.h .

int(* flush_captures_in_progress)(const struct camera2_device *)

Limpe todas as capturas em andamento. Isso inclui todas as solicitações retiradas da fila (normais ou de reprocessamento) que ainda não colocaram nenhuma saída em um stream ou na fila de frames. As capturas parcialmente concluídas precisam ser concluídas normalmente. Nenhuma nova solicitação pode ser retirada da fila até que o flush seja concluído.

Definição na linha 567 do arquivo camera2.h .

int(* get_in_progress_count)(const struct camera2_device *)

Número de solicitações de câmera que estão sendo processadas pelo dispositivo no momento (capturas/reprocessamentos que tiveram a solicitação removida da fila, mas ainda não foram enfileiradas nos pipelines de saída). Nenhum fluxo pode ser liberado pelo framework até que a contagem em andamento seja 0.

Definição na linha 558 do arquivo camera2.h .

int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata)

Receber metadados específicos da instância do dispositivo. Esses metadados precisam ser constantes para uma única instância do dispositivo da câmera, mas podem ser diferentes entre as chamadas de open(). O ponteiro camera_metadata retornado precisa ser válido até que o método close() do dispositivo seja chamado.

Informações da versão:

CAMERA_DEVICE_API_VERSION_2_0:

Indisponível. O framework pode não acessar esse ponteiro de função.

CAMERA_DEVICE_API_VERSION_2_1:

Válido. Pode ser chamado pelo framework.

Definição na linha 820 do arquivo camera2.h .

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops)

Acesse métodos para consultar informações da tag de metadados da extensão do fornecedor. Pode definir ops como NULL se nenhuma tag de extensão do fornecedor for definida.

Definição na linha 795 do arquivo camera2.h .

int(* notify_request_queue_not_empty)(const struct camera2_device *)

Notifica o dispositivo de que a fila de solicitações não está mais vazia. Só precisa ser chamado quando o primeiro buffer é adicionado a uma nova fila ou depois que a origem retorna NULL em resposta a uma chamada de dequeue.

Definição na linha 544 do arquivo camera2.h .

int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)

Registre buffers para um determinado stream. Ele é chamado após uma chamada allocate_stream bem-sucedida e antes que a primeira solicitação que faz referência ao stream seja enfileirada. O objetivo desse método é permitir que o dispositivo HAL mapeie ou prepare os buffers para uso posterior. O num_buffers tem garantia de ser pelo menos max_buffers (de allocate_stream), mas pode ser maior. Os buffers já estarão bloqueados para uso. No final da chamada, todos os buffers precisam estar prontos para serem retornados à fila. Se o formato do stream foi definido como HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, o HAL da câmera precisa inspecionar os buffers transmitidos aqui para determinar qualquer informação de formato de pixel privada da plataforma.

Definição na linha 657 do arquivo camera2.h .

int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id)

Libere um fluxo de reprocessamento. Retorna um erro se for chamado quando get_in_progress_count for diferente de zero ou se o ID do stream não for válido.

Definição na linha 765 do arquivo camera2.h .

int(* release_stream)(const struct camera2_device *, uint32_t stream_id)

Libere uma transmissão. Retorna um erro se chamado quando get_in_progress_count for diferente de zero ou se o ID do stream for inválido.

Definição na linha 667 do arquivo camera2.h .

int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

Transmitir métodos de interface de fila de frames de saída

Definição na linha 549 do arquivo camera2.h .

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)

Configuração de callback de notificação

Definição na linha 787 do arquivo camera2.h .

int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

Transmita métodos de interface de fila de solicitações de entrada.

Definição na linha 536 do arquivo camera2.h .

int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)

Acionar uma atividade assíncrona. Ele é usado para acionar comportamentos especiais das rotinas de 3A da câmera quando elas estão em uso. Consulte a documentação de CAMERA2_TRIGGER_* acima para conferir detalhes dos IDs de gatilho e dos argumentos deles.

Definição na linha 779 do arquivo camera2.h .


A documentação desse struct foi gerada com base no seguinte arquivo: