Suporte a metadados
Para suportar o salvamento de arquivos de imagem bruta pela estrutura 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 lente.
A maior parte dessas informações é uma propriedade estática do subsistema da câmera e, portanto, pode ser consultada antes de configurar qualquer pipeline de saída ou enviar qualquer solicitação. As novas APIs de câmera expandem bastante as informações fornecidas pelo método getCameraInfo()
para fornecer essas informações ao aplicativo.
Além disso, o controle manual do subsistema da câmera requer feedback dos diversos dispositivos sobre seu estado atual e os parâmetros reais usados na captura de um determinado quadro. Os valores reais dos controles (tempo de exposição, duração do quadro e sensibilidade) usados pelo hardware devem ser incluídos nos metadados de saída. Isto é essencial para que os aplicativos saibam quando ocorreu a fixação ou o arredondamento e para que o aplicativo possa compensar as configurações reais utilizadas para a captura da imagem.
Por exemplo, se um aplicativo definir a duração do quadro como 0 em uma solicitação, o HAL deverá limitar a duração do quadro à duração mínima real do quadro para essa solicitação e relatar essa duração mínima fixada nos metadados do resultado de saída.
Portanto, se um aplicativo precisar implementar uma rotina 3A personalizada (por exemplo, para medir adequadamente uma explosão de HDR), ele precisará saber as configurações usadas para capturar o último conjunto de resultados recebido para atualizar as configurações para a próxima solicitação. Portanto, a nova API da câmera adiciona uma quantidade substancial de metadados dinâmicos a cada quadro capturado. Isso inclui os parâmetros solicitados e reais usados para a captura, bem como metadados adicionais por quadro, como carimbos de data/hora e saída do gerador de estatísticas.
Controle por configuração
Para a maioria das configurações, a expectativa é que elas possam ser alteradas a cada quadro, sem introduzir interrupções ou atrasos significativos no fluxo de quadros de saída. Idealmente, a taxa de quadros de saída deve ser controlada exclusivamente pelo campo de duração do quadro da solicitação de captura e ser independente de quaisquer alterações na configuração dos blocos de processamento. Na realidade, sabe-se que alguns controlos específicos demoram a mudar; isso inclui a resolução de saída e o formato de saída do pipeline da câmera, bem como controles que afetam dispositivos físicos, como a distância do foco da lente. Os requisitos exatos para cada conjunto de controle serão detalhados posteriormente.
Suporte a dados brutos do sensor
Além dos formatos de pixel suportados pela API antiga, a nova API adiciona um requisito de suporte para dados brutos de sensores (Bayer RAW), tanto para aplicativos avançados de câmera quanto para suporte a arquivos de imagem brutos.