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 mientras la sesión de captura está activa y la transmisión de la cámara está en curso. Una salida nueva se puede asignar a una transmisión específica de cámara compartida que seleccione el usuario. Una vez que se agrega una plataforma, se puede quitar en cualquier momento.

La idea general es compartir los búferes asociados con una transmisión de cámara particular en varias plataformas de salida. Un contador de referencias interno realiza un seguimiento de los búferes a medida que se preparan para un procesamiento adicional 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 el componente divisor de flujos de la transmisión de la cámara 2 conecta y desconecta de forma dinámica los búferes, los cuenta por referencia y los administra dentro de un flujo de salida compartido dedicado dentro del servicio de la cámara.

Ejemplos y fuente

La implementación principal de esta función se puede encontrar en el módulo Camera3StreamSplitter. Puedes encontrar la 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 se implementa en el lado del framework.

Validación

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