Referência de estrutura camera2_device_ops

Referência de estrutura camera2_device_ops

#include < camera2.h >

Campos de dados

interno(* set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)
interno(* notify_request_queue_not_empty )(const struct camera2_device *)
interno(* set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)
interno(* get_in_progress_count )(const estrutura camera2_device *)
interno(* flush_captures_in_progress )(const struct camera2_device *)
interno(* construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **solicitação)
interno(* allocate_stream )(const struct camera2_device *, uint32_t largura, uint32_t altura, formato int, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers)
interno(* registrar_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)
interno(* release_stream )(const struct camera2_device *, uint32_t stream_id)
interno(* allocate_reprocess_stream )(const struct camera2_device *, largura uint32_t, altura uint32_t, formato uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)
interno(* 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)
interno(* release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id)
interno(* trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)
interno(* set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *usuário)
interno(* get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops)
interno(* dump )(const struct camera2_device *, int fd)
interno(* 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 de campo

int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t largura, uint32_t altura, formato uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

alocar_reprocess_stream:

Aloque um novo fluxo de entrada para uso, definido pela largura, altura e formato do pixel do buffer de saída. Retorna o ID do novo fluxo, os sinalizadores de uso gralloc e a contagem de buffers adquiríveis simultaneamente necessária, em caso de sucesso. Condições de erro:

  • Solicitar uma combinação de largura/altura/formato não listada como suportada pelas características estáticas do sensor
  • Solicitando que muitos fluxos de reprocessamento sejam configurados de uma só vez.

Parâmetros de entrada:

  • largura, altura, formato: Especificação dos buffers a serem enviados através deste fluxo. O formato deve ser um valor da lista HAL_PIXEL_FORMAT_*.
  • reprocess_stream_ops: Uma estrutura de ponteiros de função para adquirir e liberar buffers para este fluxo. O fluxo subjacente será configurado com base nas saídas de uso e max_buffers.

Parâmetros de saída:

  • stream_id: um número inteiro não assinado que identifica este fluxo. Este valor é usado em solicitações recebidas para identificar o fluxo e na liberação do fluxo. Esses IDs são numerados separadamente dos IDs do fluxo de entrada.
  • consumer_usage: A máscara de uso gralloc necessária ao dispositivo HAL para consumir o tipo de dados solicitado. Isso é usado na alocação de novos buffers gralloc para a fila de buffer de fluxo.
  • max_buffers: O número máximo de buffers que o dispositivo HAL pode precisar adquirir ao mesmo tempo. O dispositivo não pode ter mais buffers adquiridos ao mesmo tempo que este 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)

alocar_reprocess_stream_from_stream:

Aloque um novo fluxo de entrada para uso, que usará os buffers alocados para um fluxo de saída existente. Isto é, depois que o HAL enfileira um buffer no fluxo de saída, ele pode ver esse mesmo buffer entregue a ele a partir desse fluxo de reprocessamento de entrada. Depois que o HAL liberar o buffer de volta ao fluxo de reprocessamento, ele será retornado à fila de saída para reutilização.

Condições de erro:

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

Parâmetros de entrada:

  • output_stream_id: O ID de um fluxo de saída existente que possui tamanho e formato adequados para reprocessamento.
  • reprocess_stream_ops: Uma estrutura de ponteiros de função para adquirir e liberar buffers para este fluxo. O fluxo subjacente usará os mesmos identificadores de buffer gráfico que o fluxo de saída usa.

Parâmetros de saída:

  • stream_id: um número inteiro não assinado que identifica este fluxo. Este valor é usado em solicitações recebidas para identificar o fluxo e na liberação do fluxo. Esses IDs são numerados separadamente dos IDs do fluxo de entrada.

O cliente HAL deve sempre liberar o fluxo de reprocessamento antes de liberar o fluxo de saída no qual se baseia.

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

int(* allocate_stream)(const struct camera2_device *,uint32_t largura, uint32_t altura, formato int, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers)

alocar_stream:

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

  • Solicitar uma combinação de largura/altura/formato não listada como suportada pelas características estáticas do sensor
  • Solicitar muitos streams de um determinado tipo de formato (2 bayer raw streams, por exemplo).

Parâmetros de entrada:

  • largura, altura, formato: Especificação dos buffers a serem enviados através deste fluxo. Formato é um valor da lista HAL_PIXEL_FORMAT_*. Se HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED for usado, o módulo gralloc da plataforma selecionará um formato com base nos sinalizadores de uso fornecidos pelo HAL da câmera e pelo consumidor do stream. A câmera HAL deve inspecionar os buffers entregues a ela na chamada Register_stream_buffers para obter o formato específico da implementação, se necessário.
  • stream_ops: Uma estrutura de ponteiros de função para obter e enfileirar buffers para este fluxo. O fluxo subjacente será configurado com base nas saídas de uso e max_buffers. Os métodos nesta estrutura não podem ser chamados até que allocate_stream retorne.

Parâmetros de saída:

  • stream_id: um número inteiro não assinado que identifica este fluxo. Este valor é usado em solicitações recebidas para identificar o fluxo e na liberação do fluxo.
  • uso: A máscara de uso gralloc necessária ao dispositivo HAL para produzir o tipo de dados solicitado. Isso é usado na alocação de novos buffers gralloc para a fila de buffer de fluxo.
  • max_buffers: O número máximo de buffers que o dispositivo HAL pode precisar retirar da fila ao mesmo tempo. O dispositivo não pode retirar da fila mais buffers 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 **solicitação)

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

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

O buffer de metadados retornado deve ser alocado com allocate_camera_metadata. A estrutura 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 *)

Libere todas as capturas em andamento. Isso inclui todas as solicitações retiradas da fila (regulares ou de reprocessamento) que ainda não colocaram nenhuma saída em um fluxo ou na fila de quadros. As capturas parcialmente concluídas devem ser concluídas normalmente. Nenhuma nova solicitação pode ser retirada da fila de solicitações até que a liberação seja concluída.

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

int(* get_in_progress_count)(const estrutura camera2_device *)

Número de solicitações de câmera sendo processadas pelo dispositivo no momento (capturas/reprocessamentos que tiveram suas solicitações retiradas da fila, mas ainda não foram enfileiradas no(s) pipeline(s) de saída). Nenhum fluxo pode ser liberado pela estrutura 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)

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

Versão informação:

CÂMERA_DEVICE_API_VERSION_2_0:

Não disponível. O Framework pode não acessar este ponteiro de função.

CÂMERA_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)

Obtenha métodos para consultar informações de tags de metadados de extensão de fornecedor. Pode definir operações como NULL se nenhuma tag de extensão de fornecedor for definida.

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

int(* notify_request_queue_not_empty)(const struct camera2_device *)

Notifique o dispositivo de que a fila de solicitações não está mais vazia. Só deve ser chamado quando o primeiro buffer for adicionado a uma nova fila ou depois que a origem tiver retornado NULL em resposta a uma chamada de desenfileiramento.

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 fluxo. Isso é chamado após uma chamada allocate_stream bem-sucedida e antes da primeira solicitação que faz referência ao fluxo ser enfileirada. Este método destina-se a permitir que o dispositivo HAL mapeie ou prepare os buffers para uso posterior. É garantido que num_buffers seja pelo menos max_buffers (de allocate_stream), mas pode ser maior. Os buffers já estarão bloqueados para uso. Ao final da chamada, todos os buffers devem estar prontos para serem retornados à fila. Se o formato de fluxo foi definido como HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, o HAL da câmera deverá inspecionar os buffers transmitidos aqui para determinar qualquer informação de formato de pixel privado 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 chamado quando get_in_progress_count for diferente de zero ou se o ID do fluxo 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 um fluxo. Retorna um erro se chamado quando get_in_progress_count for diferente de zero ou se o ID do fluxo 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)

Passar métodos de interface de fila de quadros 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 *usuário)

Configuração de retorno de chamada 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)

Passe métodos de interface da fila de solicitação 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 atividade assíncrona. Isto é usado para acionar comportamentos especiais das rotinas da câmera 3A quando elas estão em uso. Consulte a documentação de CAMERA2_TRIGGER_* acima para obter detalhes sobre os IDs dos gatilhos e seus argumentos.

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


A documentação desta estrutura foi gerada a partir do seguinte arquivo:
  • hardware/libhardware/incluir/hardware/ camera2.h