camera_info Struct Reference

camera_info Struct Reference

#include < camera_common.h >

Campos de Dados

int voltado para
int orientação
uint32_t device_version
const camera_metadata_t * static_camera_characteristics
int resource_cost
Caracteres ** dispositivos_conflitantes
size_t comprimento_de_dispositivos_conflitantes

Descrição detalhada

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

Documentação de Campo

char ** dispositivos_conflitantes

Uma matriz de IDs de dispositivos de câmera representados como strings terminadas em NULL indicando outros dispositivos que não podem ser abertos simultaneamente enquanto este dispositivo de câmera está em uso.

Este campo deve ser usado para indicar que este dispositivo de câmera é um composto de vários outros dispositivos de câmera ou possui dependências de hardware que proíbem o uso simultâneo. Se não houver dependências, um NULL pode ser retornado neste campo para indicar isso.

O serviço de câmera nunca abrirá simultaneamente nenhum dos dispositivos desta lista enquanto este dispositivo de câmera estiver aberto.

As sequências apontadas neste campo não serão limpas pelo serviço da câmera e devem permanecer enquanto este dispositivo estiver conectado.

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

CAMERA_MODULE_API_VERSION_2_3 ou inferior:

Inválido. Pode ser considerado NULL. Não leia este campo.

CAMERA_MODULE_API_VERSION_2_4 ou superior:

Sempre válido.

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

tamanho_t comprimento_de_dispositivos_conflitantes

O comprimento da matriz fornecida no campo dispositivos_conflitantes.

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

CAMERA_MODULE_API_VERSION_2_3 ou inferior:

Inválido. Pode ser assumido como 0. Não leia este campo.

CAMERA_MODULE_API_VERSION_2_4 ou superior:

Sempre válido.

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

uint32_t device_version

O valor de camera_device_t.common.version.

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

CAMERA_MODULE_API_VERSION_1_0:

Inválido. Pode ser considerado CAMERA_DEVICE_API_VERSION_1_0. Não leia este campo.

CAMERA_MODULE_API_VERSION_2_0 ou superior:

Sempre válido

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

enfrentando

A direção para a qual a câmera está voltada. Consulte system / core / include / system / camera.h para definições voltadas para a câmera.

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

CAMERA_MODULE_API_VERSION_2_3 ou inferior:

Deve ser CAMERA_FACING_BACK ou CAMERA_FACING_FRONT.

CAMERA_MODULE_API_VERSION_2_4 ou superior:

Deve ser CAMERA_FACING_BACK, CAMERA_FACING_FRONT ou CAMERA_FACING_EXTERNAL.

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

orientação interna

A orientação da imagem da câmera. O valor é o ângulo que a imagem da câmera precisa ser girada no sentido horário para que seja exibida corretamente na tela em sua orientação natural. Deve ser 0, 90, 180 ou 270.

Por exemplo, suponha que um dispositivo tenha uma tela naturalmente alta. O sensor da câmera voltado para trás é montado em paisagem. Você está olhando para a tela. Se o lado superior do sensor da câmera estiver alinhado com a borda direita da tela na orientação natural, o valor deve ser 90. Se o lado superior do sensor da câmera frontal estiver alinhado com o lado direito da tela, o valor deve ser 270.

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

CAMERA_MODULE_API_VERSION_2_3 ou inferior:

Válido em todas as versões camera_module .

CAMERA_MODULE_API_VERSION_2_4 ou superior:

Válido se a orientação da câmera for CAMERA_FACING_BACK ou CAMERA_FACING_FRONT, não válido se a orientação da câmera for CAMERA_FACING_EXTERNAL.

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

int resource_cost

O "custo" total do recurso de usar esta câmera, representado como um valor inteiro no intervalo [0, 100], onde 100 representa o uso total do recurso compartilhado que é o gargalo limitante do subsistema da câmera. Esta pode ser uma estimativa muito aproximada e é usada como uma dica para o serviço de câmera determinar quando impedir que vários aplicativos abram simultaneamente câmeras diferentes anunciadas pelo serviço de câmera.

O serviço de câmera deve ser capaz de abrir e usar simultaneamente qualquer combinação de dispositivos de câmera expostos pelo HAL onde a soma dos custos de recursos dessas câmeras é <= 100. Para determinar o custo, cada dispositivo de câmera deve ser assumido como configurado e operando na taxa de quadros que consome o máximo de recursos e configurações de tamanho de fluxo disponíveis nas configurações expostas para aquele dispositivo por meio dos metadados da câmera.

O serviço de câmera ainda pode tentar abrir simultaneamente combinações de dispositivos de câmera com um custo total de recursos> 100. Isso pode ser bem-sucedido ou falhar. Se isso for bem-sucedido, as combinações de configurações que não são suportadas devido a restrições de recursos por ter vários dispositivos abertos devem falhar durante as chamadas de configuração. Se o custo total do recurso for <= 100, abrir e configurar nunca deve falhar para qualquer definição de configuração de fluxo ou outros recursos do dispositivo que normalmente teriam sucesso para um dispositivo quando é o único dispositivo de câmera aberto.

Este campo será usado para determinar se os aplicativos em segundo plano têm permissão para usar este dispositivo de câmera enquanto outros aplicativos estão usando outros dispositivos de câmera. Nota: vários aplicativos nunca serão permitidos pelo serviço de câmera para abrir simultaneamente o mesmo dispositivo de câmera.

Casos de uso de exemplo:

Ex. 1: Dispositivo da câmera 0 = Dispositivo da câmera traseira 1 = Câmera frontal

  • O uso de ambos os dispositivos de câmera causa uma grande desaceleração da taxa de quadros devido à largura de banda limitada do ISP.

Configuração:

Dispositivo de câmera 0 - resource_cost = 51 conflito_devices = nulo Dispositivo de câmera 1 - resource_cost = 51 conflito_devices = nulo

Resultado:

Como a soma dos custos do recurso é> 100, se um aplicativo de prioridade mais alta tiver qualquer um dos dispositivos abertos, nenhum aplicativo de prioridade mais baixa será permitido pelo serviço de câmera para abrir qualquer um dos dispositivos. Se um aplicativo de prioridade mais baixa estiver usando um dispositivo que uma prioridade mais alta subsequentemente tenta abrir, o aplicativo de prioridade mais baixa será forçado a desconectar o dispositivo.

Se o aplicativo de prioridade mais alta escolher, ele ainda pode tentar abrir ambos os dispositivos (uma vez que esses dispositivos não estão listados como conflitantes nos campos de dispositivos_conflitantes), mas o uso desses dispositivos pode falhar nas chamadas abertas ou de configuração.

Ex. 2: Dispositivo da câmera 0 = Dispositivo da câmera traseira esquerda 1 = Dispositivo da câmera traseira direita 2 = Câmera estéreo combinada usando os sensores da câmera traseira direita e esquerda usados ​​pelos dispositivos 0 e 1 Dispositivo da câmera 3 = Câmera frontal

  • Devido a restrições de hardware, até duas câmeras podem ser abertas ao mesmo tempo. A câmera estéreo combinada nunca pode ser usada ao mesmo tempo que qualquer um dos dois dispositivos de câmera traseira (dispositivo 0, 1) e normalmente requer muita largura de banda para usar ao mesmo tempo que a câmera frontal (dispositivo 3).

Configuração:

Dispositivo da câmera 0 - resource_cost = 50 conflting_devices = {2} Dispositivo da câmera 1 - resource_cost = 50 conflito_devices = {2} Dispositivo da câmera 2 - resource_cost = 100 conflting_devices = {0, 1} Dispositivo da câmera 3 - resource_cost = 50 conflting_devices = null

Resultado:

Com base nos campos de dispositivos_conflitantes, o serviço da câmera garante que os seguintes conjuntos de dispositivos abertos nunca serão permitidos: {1, 2}, {0, 2}.

Com base nos campos resource_cost, se um aplicativo de primeiro plano de alta prioridade estiver usando o dispositivo de câmera 0, um aplicativo de segundo plano teria permissão para abrir o dispositivo de câmera 1 ou 3 (mas seria forçado a desconectá-lo novamente se o aplicativo de primeiro plano abrisse outro dispositivo).

O aplicativo de prioridade mais alta ainda pode tentar abrir simultaneamente os dispositivos 0, 2 e 3, mas o HAL pode falhar ao abrir ou configurar chamadas para essa combinação.

Ex. 3: Dispositivo da câmera 0 = Dispositivo da câmera traseira 1 = Dispositivo da câmera frontal 2 = Câmera frontal de baixa potência que usa o mesmo sensor do dispositivo 1, mas expõe apenas resoluções de fluxo de imagem que podem ser usadas no modo de baixa energia

  • Usar as duas câmeras frontais (dispositivo 1, 2) ao mesmo tempo é impossível devido a um sensor físico compartilhado. Usar a câmera frontal traseira e de "alta potência" (dispositivo 1) pode ser impossível para algumas configurações de fluxo devido a limitações de hardware, mas a opção de câmera frontal de "baixa potência" pode sempre ser usada, pois tem hardware dedicado especial.

    Configuração:

    Dispositivo de câmera 0 - resource_cost = 100 conflito_devices = nulo Dispositivo de câmera 1 - resource_cost = 100 conflito de dispositivos = {2} Dispositivo de câmera 2 - resource_cost = 0 conflito_devices = {1} Resultado:

    Com base nos campos dispositivos_conflitantes, o serviço da câmera garante que os seguintes conjuntos de dispositivos abertos nunca serão permitidos: {1, 2}.

    Com base nos campos resource_cost, apenas o aplicativo de prioridade mais alta pode tentar abrir os dispositivos 0 e 1 ao mesmo tempo. Se um aplicativo de prioridade mais alta não estiver usando o dispositivo 1 ou 2, um aplicativo em segundo plano de baixa prioridade pode abrir o dispositivo 2 (mas será forçado a desconectá-lo se um aplicativo de prioridade mais alta subsequentemente abrir o dispositivo 1 ou 2).

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

CAMERA_MODULE_API_VERSION_2_3 ou inferior:

Inválido. Pode ser considerado 100. Não leia este campo.

CAMERA_MODULE_API_VERSION_2_4 ou superior:

Sempre válido.

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

const camera_metadata_t * static_camera_characteristics

As características fixas da câmera, que incluem todos os metadados estáticos da câmera especificados em system / media / camera / docs / docs.html. Deve ser um buffer de metadados classificado e não pode ser modificado ou liberado pelo chamador. O ponteiro deve permanecer válido por toda a vida útil do módulo da câmera, e os valores nele não podem mudar após ser retornado por get_camera_info ().

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

CAMERA_MODULE_API_VERSION_1_0:

Inválido. Características extras não estão disponíveis. Não leia este campo.

CAMERA_MODULE_API_VERSION_2_0 ou superior:

Válido se device_version> = CAMERA_DEVICE_API_VERSION_2_0. Não leia de outra forma.

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


A documentação para esta estrutura foi gerada a partir do seguinte arquivo: