Transporte de búfer de cámara de un solo productor y múltiples consumidores
Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
Esta característica presenta un conjunto de métodos que permite a los clientes de cámara agregar y eliminar superficies de salida dinámicamente mientras 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 secuencia de cámara compartida específica seleccionada por el usuario. Una vez agregada una superficie, se puede quitar en cualquier momento.
La idea general es compartir los buffers asociados con una secuencia de cámara particular dentro de varias superficies de salida. Un contador de referencia interno realiza un seguimiento de los buffers a medida que están listos para su posterior procesamiento por parte del consumidor. Cuando todos los consumidores completan sus respectivas tareas, el búfer se retira de la cola y queda disponible para la cámara.
Figura 1. Compartir búfer
La Figura 1 muestra un escenario de ejemplo en el que los buffers procesados por el flujo de cámara 2 se conectan y desconectan dinámicamente, se cuentan las referencias y se administran mediante el componente divisor de flujo dentro de un flujo de salida compartido dedicado dentro del servicio de cámara.
Ejemplos y fuente
La implementación principal de esta función se puede encontrar en el módulo Camera3StreamSplitter
. La documentación sobre esta característica se puede encontrar en la referencia del desarrollador:
Implementación
No se requiere implementación en el lado de la cámara HAL ya que esta característica se implementa en el lado del marco.
Validación
Su implementación debe pasar los casos CTS que cubren esta característica del módulo MultiViewTest y la biblioteca JNI nativa para la API nativa.
El contenido y el código de ejemplo de esta página están sujetos a las licencias que se describen en la licencia de contenido. Java y OpenJDK son marcas registradas de Oracle o sus entidades asociadas.
Última actualización: 2024-03-18 (UTC).
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Me falta la información que necesito"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Es demasiado complicado o hay demasiados pasos"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Está obsoleto"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema de traducción"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema de muestras o código"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Otro"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Es fácil de entender"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Me ofreció una solución al problema"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Otro"
}]
{"lastModified": "\u00daltima actualizaci\u00f3n: 2024-03-18 (UTC)."}
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Me falta la información que necesito","missingTheInformationINeed","thumb-down"],["Es demasiado complicado o hay demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Está obsoleto","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema de muestras o código","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2024-03-18 (UTC)."]]