Suporte a metadados
Para oferecer suporte ao salvamento de arquivos de imagem bruta pelo framework do Android, são necessários metadados substanciais sobre as características do sensor. Isso inclui informações como espaços de cores e funções de sombreamento de lentes.
A maioria dessas informações é uma propriedade estática do subsistema da câmera e, portanto, pode
ser consultada antes de configurar pipelines de saída ou enviar
solicitações. As novas APIs da câmera ampliam muito as informações fornecidas pelo
método getCameraInfo()
para fornecer essas informações ao
app.
Além disso, o controle manual do subsistema da câmera exige feedback dos dispositivos diversos sobre o estado atual deles e os parâmetros reais usados na captura de um determinado frame. Os valores reais dos controles (tempo de exposição, duração do frame e sensibilidade) conforme usados pelo hardware precisam ser incluídos nos metadados de saída. Isso é essencial para que os apps saibam quando o limite ou o arredondamento ocorreram e para que o app possa compensar as configurações reais usadas para a captura de imagens.
Por exemplo, se um app definir a duração do frame como 0 em uma solicitação, o HAL vai precisar fixar a duração do frame na duração mínima real do frame para essa solicitação e informar essa duração mínima fixada nos metadados do resultado de saída.
Portanto, se um app precisar implementar uma rotina 3A personalizada (por exemplo, para medir corretamente uma explosão HDR), ele precisará saber as configurações usadas para capturar o conjunto de resultados mais recente que recebeu para atualizar as configurações da próxima solicitação. Portanto, a nova API da câmera adiciona uma quantidade considerável de metadados dinâmicos a cada frame capturado. Isso inclui os parâmetros solicitados e reais usados para a captura, além de metadados adicionais por frame, como carimbos de data/hora e saída do gerador de estatísticas.
Controle por configuração
Na maioria das configurações, a expectativa é que elas possam ser alteradas a cada frame, sem introduzir gagueiras ou atrasos significativos no fluxo de frames de saída. O ideal é que a taxa de frames de saída seja controlada apenas pelo campo de duração do frame da solicitação de captura e seja independente de qualquer mudança na configuração dos blocos de processamento. Na realidade, alguns controles específicos são conhecidos por serem lentos para mudar. Isso inclui a resolução e o formato de saída do pipeline da câmera, bem como controles que afetam dispositivos físicos, como a distância de foco da lente. Os requisitos exatos para cada conjunto de controle serão detalhados mais adiante.
Suporte a dados brutos do sensor
Além dos formatos de pixel compatíveis com a API antiga, a nova API adiciona um requisito de suporte a dados de sensores brutos (Bayer RAW), tanto para apps de câmera avançados quanto para arquivos de imagem brutos.