Transporte de búfer de cámara de un solo productor y varios consumidores

Esta función presenta un conjunto de métodos que permiten a los clientes de cámara agregar y Quita las superficies de salida de forma dinámica mientras la sesión de captura esté activa y la transmisión de la cámara está en curso. Un nuevo resultado se puede asignar a un segmento específico seleccionado por el usuario cámara compartida en tiempo real. Después de agregar una superficie, se puede quitar en cualquier momento.

La idea general es compartir los búferes asociados con una cámara en particular. transmitir en varias superficies de salida. Un contador de referencias internas realiza un seguimiento de los búferes a medida que están listos para el procesamiento posterior por parte del consumidor. Cuando todos los consumidores completan sus respectivas tareas, el búfer se quita de la cola y está disponible para la cámara.

Uso compartido de búfer

Figura 1: Uso compartido de búfer

En la figura 1, se muestra una situación de ejemplo en la que los búferes procesados por la cámara de la transmisión 2 se adjuntan y desconectan de forma dinámica, se cuentan y administran las referencias. por el componente divisor de transmisión dentro de una transmisión de salida compartida dedicada el servicio de cámara.

Ejemplos y fuente

La implementación principal de esta función se encuentra en Camera3StreamSplitter módulo. Puedes encontrar documentación sobre esta función en la referencia para desarrolladores:

Implementación

No se requiere implementación en el lado de la HAL de la cámara, ya que esta función sí lo es. o bien implementar en el framework.

Validación

Tu implementación debe pasar casos de CTS que abarquen esta función del MultiViewTest y las biblioteca JNI nativa para la API nativa.