referência de estrutura camera3_stream
#include < camera3.h >
Campos de dados | |
int | stream_type |
uint32_t | largura |
uint32_t | altura |
int | formato |
uint32_t | uso |
uint32_t | max_buffers |
vazio * | privado |
android_dataspace_t | data_space |
int | rotação |
vazio * | reservado [7] |
Descrição detalhada
camera3_stream_t:
Um identificador para um único fluxo de entrada ou saída de câmera. Um fluxo é definido pela estrutura por sua resolução e formato de buffer e, adicionalmente, pelo HAL com os sinalizadores de uso do gralloc e a contagem máxima de buffer em andamento.
As estruturas de fluxo são de propriedade da estrutura, mas os ponteiros para um camera3_stream passados para o HAL por configure_streams() são válidos até o final da primeira chamada configure_streams() subsequente que não inclui esse camera3_stream como argumento ou até o final de a chamada close().
Todos os membros controlados pela estrutura camera3_stream são imutáveis uma vez que camera3_stream é passado para configure_streams(). O HAL só pode alterar os parâmetros controlados por HAL durante uma chamada configure_streams(), exceto para o conteúdo do ponteiro privado.
Se uma chamada configure_streams() retornar um erro não fatal, todos os fluxos ativos permanecerão válidos como se configure_streams() não tivesse sido chamado.
O ponto final do fluxo não é visível para o dispositivo HAL da câmera. Em DEVICE_API_VERSION_3_1, isso foi alterado para compartilhar sinalizadores de uso do consumidor em streams em que a câmera é produtora (tipos de stream de SAÍDA e BIDIRECIONAL) veja o campo de uso abaixo.
Documentação de campo
android_dataspace_t data_space |
Um campo que descreve o conteúdo do buffer. O formato e as dimensões do buffer definem o layout da memória e a estrutura dos buffers de fluxo, enquanto o dataSpace define o significado dos dados dentro do buffer.
Para a maioria dos formatos, dataSpace define o espaço de cores dos dados da imagem. Além disso, para alguns formatos, dataSpace indica se os dados baseados em imagem ou profundidade são solicitados. Consulte system/core/include/system/graphics.h para obter detalhes de formatos e valores de dataSpace válidos para cada formato.
Versão informação:
< CAMERA_DEVICE_API_VERSION_3_3:
Não definido e não deve ser acessado. dataSpace deve ser assumido como HAL_DATASPACE_UNKNOWN, e o espaço de cor apropriado, etc., deve ser determinado a partir dos sinalizadores de uso e do formato.
= CAMERA_DEVICE_API_VERSION_3_3:
Sempre definido pelo serviço de câmera. A HAL deve usar esse dataSpace para configurar o fluxo para o espaço de cores correto ou para selecionar entre as saídas de cor e profundidade, se houver suporte. Os valores do espaço de dados são as definições legadas em graphics.h
>= CAMERA_DEVICE_API_VERSION_3_4:
Sempre definido pelo serviço de câmera. A HAL deve usar esse dataSpace para configurar o fluxo para o espaço de cores correto ou para selecionar entre as saídas de cor e profundidade, se houver suporte. Os valores de espaço de dados são definidos usando as definições de espaço de dados V0 em graphics.h
formato int |
O formato de pixel para os buffers neste fluxo. Formato é um valor da lista HAL_PIXEL_FORMAT_* em system/core/include/system/graphics.h, ou de cabeçalhos específicos do dispositivo.
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 dispositivo da câmera e pelo outro endpoint do fluxo.
<= CAMERA_DEVICE_API_VERSION_3_1:
O dispositivo HAL da câmera deve inspecionar os buffers entregues a ele na chamada register_stream_buffers() subsequente para obter os detalhes do formato específico da implementação, se necessário.
>= CAMERA_DEVICE_API_VERSION_3_2:
register_stream_buffers() não será chamado pela estrutura, portanto, o HAL deve configurar o ISP e o pipeline do sensor com base apenas nos tamanhos, sinalizadores de uso e formatos dos fluxos configurados.
uint32_t altura |
uint32_t max_buffers |
void* priv |
rotação interna |
A rotação de saída necessária do fluxo, um dos valores camera3_stream_rotation_t. Isso deve ser inspecionado pela HAL junto com a largura e a altura do fluxo. Por exemplo, se a rotação for de 90 graus e a largura e a altura do fluxo forem 720 e 1280 respectivamente, o serviço de câmera fornecerá buffers de tamanho 720x1280 e o HAL deverá capturar uma imagem de 1280x720 e girar a imagem em 90 graus no sentido anti-horário. O campo de rotação é no-op quando o tipo de fluxo é inserido. A câmera HAL deve ignorar o campo de rotação para um fluxo de entrada.
<= CAMERA_DEVICE_API_VERSION_3_2:
Não definido e não deve ser acessado. O HAL não deve aplicar nenhuma rotação nas imagens de saída.
>= CAMERA_DEVICE_API_VERSION_3_3:
Sempre definido pelo serviço de câmera. O HAL deve inspecionar esse campo durante a configuração do fluxo e retornar -EINVAL se o HAL não puder executar tal rotação. HAL deve sempre suportar CAMERA3_STREAM_ROTATION_0, portanto, uma chamada configure_streams() não deve falhar para rotação não suportada se o campo de rotação de todos os fluxos for CAMERA3_STREAM_ROTATION_0.
int stream_type |
uso do uint32_t |
Os sinalizadores de uso do gramloc para este fluxo, conforme necessário pelo HAL. Os sinalizadores de uso são definidos em gralloc.h (GRALLOC_USAGE_*), ou em cabeçalhos específicos do dispositivo.
Para fluxos de saída, esses são os sinalizadores de uso do produtor do HAL. Para fluxos de entrada, esses são os sinalizadores de uso do consumidor do HAL. Os sinalizadores de uso do produtor e do consumidor serão combinados e, em seguida, passados para o módulo gralloc HAL da plataforma para alocar os buffers gralloc para cada fluxo.
Versão informação:
== CAMERA_DEVICE_API_VERSION_3_0:
Nenhum valor inicial garantido quando passado via configure_streams(). HAL não pode usar este campo como entrada e deve escrever sobre este campo com seus sinalizadores de uso.
>= CAMERA_DEVICE_API_VERSION_3_1:
Para stream_type OUTPUT e BIDIRECIONAL, quando passado via configure_streams(), o valor inicial disso são os sinalizadores de uso do consumidor. O HAL pode usar esses sinalizadores de consumidor para decidir a configuração do fluxo. Para stream_type INPUT, quando passado via configure_streams(), o valor inicial é 0. Para todos os streams passados via configure_streams(), o HAL deve escrever sobre este campo com seus sinalizadores de uso.
uint32_t largura |
A documentação para esta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/include/hardware/ camera3.h