Transporte de buffer de câmera de vários consumidores com produtor único

Esse recurso apresenta um conjunto de métodos que permite que os clientes da câmera adicionem e remove superfícies de saída dinamicamente enquanto a sessão de captura está ativa e o streaming da câmera está em andamento. Uma nova saída pode ser mapeada para um destino específico selecionado pelo usuário câmera compartilhada riacho. Depois que uma superfície é adicionada, ela pode ser removida a qualquer momento.

A ideia geral é compartilhar os buffers associados a uma determinada câmera em várias superfícies de saída. Um contador de referência interno monitora dos buffers à medida que se tornam prontos para processamento adicional no lado do consumidor. Quando todos os consumidores concluem suas respectivas tarefas, o buffer é removido da fila e está disponível para a câmera.

Compartilhamento de buffer

Figura 1. Compartilhamento de buffer

A Figura 1 ilustra um exemplo de cenário em que os buffers processados pela câmera stream 2 são anexados e desconectados dinamicamente, a referência é contada e gerenciada pelo componente do divisor de stream dentro de um stream de saída compartilhado dedicado o serviço de câmera.

Exemplos e origem

A implementação principal desse recurso pode ser encontrada na Camera3StreamSplitter mais tarde neste módulo. A documentação sobre esse recurso pode ser encontrada na referência do desenvolvedor:

Implementação

Nenhuma implementação é necessária no lado da HAL da câmera, já que esse recurso é implementados no lado da estrutura.

Validação

Sua implementação precisa passar por casos CTS que abrangem esse recurso da MultiViewTest (link em inglês) e o módulo biblioteca JNI nativa para a API nativa.