Referência da estrutura camera_module

Referência da estrutura camera_module

#include < camera_common.h >

Campos de dados

hw_module_t   comum
 
int(*  get_number_of_cameras )(void)
 
int(*  get_camera_info )(int camera_id, struct camera_info *info)
 
int(*  set_callbacks )(const camera_module_callbacks_t *callbacks)
 
void(*  get_vendor_tag_ops )(vendor_tag_ops_t *ops)
 
int(*  open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)
 
int(*  set_torch_mode )(const char *camera_id, bool enabled)
 
int(*  init )()
 
void *  reservado [5]
 

Descrição detalhada

Definição na linha 646 do arquivo camera_common.h .

Documentação do campo

Métodos comuns do módulo da câmera. Ele precisa ser o primeiro membro de camera_module , já que os usuários dessa estrutura vão transmitir um hw_module_t para camera_module em contextos em que se sabe que o hw_module_t faz referência a um camera_module .

Os valores de retorno de common.methods->open para camera_module são:

0: ao abrir o dispositivo da câmera.

-ENODEV: o dispositivo da câmera não pode ser aberto devido a um erro interno.

-EINVAL: os argumentos de entrada são inválidos, ou seja, o ID é inválido e/ou o módulo é inválido.

-EBUSY: o dispositivo de câmera já foi aberto para esse ID de câmera (usando este método ou open_legacy), independentemente da versão do HAL do dispositivo em que ele foi aberto.

-EUSERS: o número máximo de dispositivos de câmera que podem ser abertos simultaneamente já foi aberto, seja por este método ou pelo método open_legacy.

Todos os outros valores de retorno de common.methods->open serão tratados como -ENODEV.

Definição na linha 674 do arquivo camera_common.h .

int(* get_camera_info)(int camera_id, struct camera_info *info)

get_camera_info:

Retorna as informações estáticas da câmera para um determinado dispositivo. Essas informações podem não mudar para um dispositivo de câmera.

Valores de retorno:

0: em uma operação bem-sucedida

-ENODEV: as informações não podem ser fornecidas devido a um erro interno.

-EINVAL: os argumentos de entrada são inválidos, ou seja, o ID é inválido e/ou o módulo é inválido.

Informações da versão (com base em camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_4 ou mais recente:

Quando uma câmera é desconectada, o ID dela se torna inválido. Chamar esse método com esse ID de câmera inválido vai gerar metadados estáticos de -EINVAL e NULL ( camera_info.static_camera_characteristics ).

Definição na linha 727 do arquivo camera_common.h .

int(* get_number_of_cameras)(void)

get_number_of_cameras:

Retorna o número de dispositivos de câmera acessíveis pelo módulo de câmera. Os dispositivos de câmera são numerados de 0 a N-1, em que N é o valor retornado por essa chamada. O nome do dispositivo da câmera para open() é simplesmente o número convertido em uma string. Ou seja, "0" para o ID 0 da câmera, "1" para o ID 1 da câmera.

Informações da versão (com base em camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 ou anterior:

O valor aqui precisa ser estático e não pode mudar após a primeira chamada para esse método.

CAMERA_MODULE_API_VERSION_2_4 ou mais recente:

O valor aqui precisa ser estático e contar apenas câmeras integradas, que têm valores de câmera CAMERA_FACING_BACK ou CAMERA_FACING_FRONT ( camera_info.facing ). A HAL não pode incluir as câmeras externas ( camera_info.facing == CAMERA_FACING_EXTERNAL) no valor de retorno dessa chamada. Os frameworks vão usar o callback camera_device_status_change para gerenciar o número de câmeras externas.

Definição na linha 701 do arquivo camera_common.h .

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

Acesse métodos para consultar informações da tag de metadados da extensão do fornecedor. O HAL precisa preencher todos os métodos de operação de tag do fornecedor ou deixar as operações inalteradas se nenhuma tag do fornecedor for definida.

A estrutura vendor_tag_ops usada aqui é definida em: system/media/camera/include/system/vendor_tags.h

Informações da versão (com base em camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: não fornecido pelo módulo HAL. O framework pode não chamar essa função.

CAMERA_MODULE_API_VERSION_2_2: válido para ser chamado pelo framework.

Definição na linha 778 do arquivo camera_common.h .

int(* init)()

init:

Esse método é chamado pelo serviço da câmera antes que qualquer outro método seja invocado, logo após a biblioteca HAL da câmera ser carregada. Ele pode ser deixado como NULL pelo módulo HAL, se nenhuma inicialização for necessária.

Ele pode ser usado por implementações do HAL para realizar a inicialização e outras operações únicas.

Informações da versão (com base em camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: não fornecido pelo módulo HAL. O framework não vai chamar essa função.

CAMERA_MODULE_API_VERSION_2_4: se não for NULL, será sempre chamado pelo framework uma vez após o carregamento do módulo HAL, antes de qualquer outro método do módulo HAL ser chamado.

Valores de retorno:

0: em uma operação bem-sucedida.

-ENODEV: não foi possível concluir a inicialização devido a um erro interno. O HAL precisa estar em um estado não funcional.

Definição na linha 909 do arquivo camera_common.h .

int(* open_legacy)(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)

open_legacy:

Abra um dispositivo HAL de câmera legada específico se várias versões da API HAL do dispositivo forem compatíveis com esse módulo HAL da câmera. Por exemplo, se o módulo de câmera oferecer suporte às APIs CAMERA_DEVICE_API_VERSION_1_0 e CAMERA_DEVICE_API_VERSION_3_2 para o mesmo ID de câmera, o framework poderá chamar essa função para abrir o dispositivo de câmera como CAMERA_DEVICE_API_VERSION_1_0.

Esse é um método opcional. Um módulo HAL de câmera não precisa oferecer suporte a mais de uma versão HAL por dispositivo, e esses módulos podem retornar -ENOSYS para todas as chamadas para esse método. Para todas as versões mais antigas da API de dispositivo HAL que não têm suporte, ele pode retornar -EOPNOTSUPP. Quando os casos acima ocorrem, o método normal open() (common.methods->open) é usado pelo framework.

Informações da versão (com base em camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: não fornecido pelo módulo HAL. O framework não vai chamar essa função.

CAMERA_MODULE_API_VERSION_2_3: válido para ser chamado pelo framework.

Valores de retorno:

0: ao abrir o dispositivo da câmera.

-ENOSYS Este método não é compatível.

-EOPNOTSUPP: a versão do HAL solicitada não é compatível com esse método.

-EINVAL: os argumentos de entrada são inválidos, ou seja, o ID é inválido e/ou o módulo é inválido.

-EBUSY: o dispositivo de câmera já foi aberto para esse ID de câmera (usando este método ou o método common.methods->open), independentemente da versão do HAL do dispositivo em que ele foi aberto.

-EUSERS: o número máximo de dispositivos de câmera que podem ser abertos simultaneamente já foi aberto, seja por este método ou pelo método common.methods->open.

Definição na linha 824 do arquivo camera_common.h .

void* reserved[5]

Definição na linha 912 do arquivo camera_common.h .

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

Forneça ponteiros de função de callback para o módulo HAL para informar o framework sobre eventos assíncronos do módulo da câmera. O framework vai chamar essa função uma vez após o carregamento inicial do módulo HAL da câmera, depois que o método get_number_of_cameras() for chamado pela primeira vez e antes de qualquer outra chamada para o módulo.

Informações da versão (com base em camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:

Não fornecido pelo módulo HAL. O framework pode não chamar essa função.

CAMERA_MODULE_API_VERSION_2_1:

Válido para ser chamado pelo framework.

Valores de retorno:

0: em uma operação bem-sucedida

-ENODEV: a operação não pode ser concluída devido a um erro interno.

-EINVAL: os argumentos de entrada são inválidos, ou seja, os callbacks são nulos.

Definição na linha 758 do arquivo camera_common.h .

int(* set_torch_mode)(const char *camera_id, bool enabled)

set_torch_mode:

Ativa ou desativa o modo lanterna da unidade de flash associada a um determinado ID de câmera. Se a operação for bem-sucedida, a HAL vai notificar o estado da lanterna do framework invocando camera_module_callbacks.torch_mode_status_change() com o novo estado.

O dispositivo da câmera tem prioridade maior para acessar a unidade de flash. Quando há conflitos de recursos, como quando o open() é chamado para abrir um dispositivo de câmera, o módulo HAL precisa notificar o framework usando camera_module_callbacks.torch_mode_status_change() para informar que o modo lanterna foi desativado e que o estado do modo lanterna se tornou TORCH_MODE_STATUS_NOT_AVAILABLE. Quando os recursos para ativar o modo de lanterna ficam disponíveis novamente, o módulo HAL precisa notificar o framework usando camera_module_callbacks.torch_mode_status_change() para que o estado do modo de lanterna se torne TORCH_MODE_STATUS_AVAILABLE_OFF para set_torch_mode() ser chamado.

Quando o framework chama set_torch_mode() para ativar o modo de lanterna de uma unidade de flash, se o HAL não puder manter vários modos de lanterna ativados simultaneamente, ele desativará o modo de lanterna ativado por uma chamada set_torch_mode() anterior e notificará o framework de que o estado do modo de lanterna dessa unidade de flash se tornou TORCH_MODE_STATUS_AVAILABLE_OFF.

Informações da versão (com base em camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: não fornecido pelo módulo HAL. O framework não vai chamar essa função.

CAMERA_MODULE_API_VERSION_2_4: válido para ser chamado pelo framework.

Valores de retorno:

0: em uma operação bem-sucedida.

-ENOSYS: o dispositivo da câmera não oferece suporte a essa operação. Ele é retornado somente se android.flash.info.available for falso.

-EBUSY: o dispositivo da câmera já está em uso.

-EUSERS: os recursos necessários para ativar o modo lanterna não estão disponíveis, normalmente porque outros dispositivos de câmera estão segurando os recursos para impedir o uso da unidade de flash.

-EINVAL: camera_id é inválido.

Definição na linha 878 do arquivo camera_common.h .


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