Referência da estrutura camera3_stream
#include <
camera3.h
>
Campos de dados |
|
int | stream_type |
uint32_t | width |
uint32_t | height |
int | formato |
uint32_t | uso |
uint32_t | max_buffers |
void * | priv |
android_dataspace_t | data_space |
int | rotação |
void * | reservado [7] |
Descrição detalhada
camera3_stream_t:
Um identificador para um único stream de entrada ou saída da câmera. Um stream é definido pelo framework pela resolução e formato do buffer e, além disso, pelo HAL com as flags de uso do gralloc e a contagem máxima de buffer em andamento.
As estruturas de stream são de propriedade do framework, mas os ponteiros para um camera3_stream transmitidos 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 um argumento ou até o final da chamada close().
Todos os membros controlados pelo framework camera3_stream são imutáveis quando o camera3_stream é transmitido para configure_streams(). A HAL só pode mudar os parâmetros controlados pela HAL durante uma chamada de configure_streams(), exceto o conteúdo do ponteiro privado.
Se uma chamada de configure_streams() retornar um erro não fatal, todos os streams ativos vão permanecer válidos como se configure_streams() não tivesse sido chamado.
O endpoint do stream não é visível para o dispositivo HAL da câmera. Em DEVICE_API_VERSION_3_1, isso foi alterado para compartilhar flags de uso do consumidor em transmissões em que a câmera é um produtor (tipos de transmissão OUTPUT e BIDIRECTIONAL). Confira o campo de uso abaixo.
Documentação do campo
android_dataspace_t data_space |
Um campo que descreve o conteúdo do buffer. As dimensões de formato e buffer definem o layout e a estrutura de memória dos buffers de fluxo, enquanto o dataSpace define o significado dos dados no buffer.
Para a maioria dos formatos, o dataSpace define o espaço de cor dos dados da imagem. Além disso, para alguns formatos, o dataSpace indica se os dados são baseados em imagem ou em profundidade. Consulte system/core/include/system/graphics.h para detalhes sobre formatos e valores válidos de dataSpace para cada formato.
Informações da versão:
< CAMERA_DEVICE_API_VERSION_3_3:
Não está definido e não pode ser acessado. O dataSpace deve ser considerado HAL_DATASPACE_UNKNOWN, e o espaço de cores adequado, etc., deve ser determinado com base nos sinalizadores de uso e no formato.
= CAMERA_DEVICE_API_VERSION_3_3:
Sempre definido pelo serviço da câmera. O HAL precisa usar esse dataSpace para configurar o fluxo no espaço de cores correto ou para selecionar entre 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 da câmera. O HAL precisa usar esse dataSpace para configurar o fluxo no espaço de cores correto ou para selecionar entre saídas de cor e profundidade, se houver suporte. Os valores do espaço de dados são definidos usando as definições do espaço de dados V0 em graphics.h
formato int |
O formato de pixel dos buffers neste stream. O 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 vai selecionar um formato com base nos flags de uso fornecidos pelo dispositivo da câmera e pelo outro endpoint do stream.
<= CAMERA_DEVICE_API_VERSION_3_1:
O dispositivo HAL da câmera precisa inspecionar os buffers transmitidos a ele na chamada register_stream_buffers() subsequente para receber os detalhes do formato específicos da implementação, se necessário.
>= CAMERA_DEVICE_API_VERSION_3_2:
O método register_stream_buffers() não será chamado pelo framework. Portanto, o HAL precisa configurar o ISP e o pipeline do sensor com base apenas nos tamanhos, flags de uso e formatos dos streams configurados.
altura de uint32_t |
uint32_t max_buffers |
void* priv |
Rotação de int |
A rotação de saída necessária do stream, um dos valores camera3_stream_rotation_t. Isso precisa ser inspecionado pelo 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 stream forem 720 e 1280, respectivamente, o serviço de câmera vai fornecer buffers de tamanho 720x1280, e o HAL vai capturar uma imagem de 1280x720 e girá-la em 90 graus no sentido anti-horário. O campo de rotação não é usado quando o tipo de stream é de entrada. O HAL da câmera precisa ignorar o campo de rotação para um stream de entrada.
<= CAMERA_DEVICE_API_VERSION_3_2:
Não está definido e não pode ser acessado. O HAL não pode aplicar nenhuma rotação nas imagens de saída.
>= CAMERA_DEVICE_API_VERSION_3_3:
Sempre definido pelo serviço da câmera. O HAL precisa inspecionar esse campo durante a configuração do stream e retornar -EINVAL se não puder realizar essa rotação. O HAL precisa sempre oferecer suporte a CAMERA3_STREAM_ROTATION_0. Portanto, uma chamada configure_streams() não pode falhar para rotações sem suporte se o campo de rotação de todos os streams for CAMERA3_STREAM_ROTATION_0.
int stream_type |
Uso de uint32_t |
As flags de uso do gralloc para esse stream, conforme necessário pelo HAL. Os flags de uso são definidos em gralloc.h (GRALLOC_USAGE_*) ou em cabeçalhos específicos do dispositivo.
Para streams de saída, esses são os flags de uso do produtor do HAL. Para streams de entrada, são as flags de uso do consumidor do HAL. As flags de uso do produtor e do consumidor serão combinadas e transmitidas ao módulo HAL gralloc da plataforma para alocar os buffers gralloc de cada stream.
Informações da versão:
== CAMERA_DEVICE_API_VERSION_3_0:
Nenhum valor inicial é garantido quando transmitido por configure_streams(). O HAL não pode usar esse campo como entrada e precisa gravar nele com as flags de uso.
>= CAMERA_DEVICE_API_VERSION_3_1:
Para stream_type OUTPUT e BIDIRECTIONAL, quando transmitido por configure_streams(), o valor inicial é os flags de uso do consumidor. O HAL pode usar essas flags de consumidor para decidir a configuração do stream. Para stream_type INPUT, quando transmitido por configure_streams(), o valor inicial é 0. Para todos os streams transmitidos por configure_streams(), o HAL precisa gravar neste campo com as flags de uso.
largura de uint32_t |
A documentação desse struct foi gerada com base no seguinte arquivo:
- hardware/libhardware/include/hardware/ camera3.h