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

Esta función presenta un conjunto de métodos que permite que los clientes de la cámara agreguen y quiten superficies de salida de manera dinámica al mismo tiempo que la sesión de captura está activa y la transmisión de la cámara está en curso. Una nueva salida se puede asignar a una transmisión de cámara compartida específica seleccionada por el usuario. Después de agregar una plataforma, se puede quitar en cualquier momento.

La idea general es compartir los búferes asociados con una transmisión de cámara en particular dentro de varias superficies de salida. Un contador de referencias interno realiza un seguimiento de los búferes a medida que están listos para su procesamiento posterior del lado del consumidor. Cuando todos los consumidores completan sus tareas respectivas, 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 un ejemplo de situación en la que los búferes procesados por la transmisión de cámara 2 se adjuntan y separan de forma dinámica, se cuentan las referencias y se administran por el componente de divisor de transmisión dentro de una transmisión de salida compartida dedicada en el servicio de cámara.

Ejemplos y fuente

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

Implementación

No se requiere ninguna implementación del lado de la HAL de la cámara, ya que esta función se implementa del lado del framework.

Validación

Tu implementación debe aprobar los casos de CTS que abarcan esta función desde el módulo MultiViewTest y la biblioteca JNI nativa para la API nativa.