Android incluye funciones que permiten clientes de cámara para elegir una cámara óptima transmisiones continuas para casos de uso específicos y para garantizar que determinadas combinaciones sean compatibles con el dispositivo de cámara. Una configuración de transmisión se refiere a un solo transmisión de la cámara configurada en el dispositivo de cámara y una combinación de transmisión hace referencia a a uno o más conjuntos de transmisiones configuradas en el dispositivo de cámara. Para obtener más información sobre estas funciones, consulta las configuraciones de transmisión recomendadas y API para consultar combinaciones de atributos.
Implementación de referencia
Hay una implementación de referencia del proveedor de la configuración recomendada y la API para consultar funciones de combinación de transmisión. Puede encontrar esta implementación con Cámara3HWI.cpp
Parámetros de configuración recomendados de transmisión
Los proveedores de cámaras pueden promocionar configuraciones de transmisión recomendadas para usos específicos a los clientes que usan cámaras. Estas configuraciones de transmisión recomendadas, que son subconjuntos de StreamConfigurationMap. puede ayudar a los clientes de cámara a elegir configuraciones óptimas.
Si bien StreamConfigurationMap brinda información exhaustiva de configuración de transmisión a clientes de cámaras, no brinda información sobre la eficiencia, la potencia ni el rendimiento impactos de elegir una transmisión por sobre otra. Los clientes de cámara pueden elegir libremente de todas las configuraciones de transmisión posibles, pero, en muchos casos, esto clientes con configuraciones de cámara y aplicaciones deficientes y exhaustivas búsquedas.
Por ejemplo, aunque algunos formatos YUV procesados son obligatorios y deben es posible que la cámara no tenga compatibilidad nativa con los formatos. Esta genera un pase de procesamiento adicional para la conversión del formato y reduce eficiencia. El tamaño y la relación de aspecto correspondiente también pueden tener un aspecto impacto que hacen que determinadas dimensiones sean preferibles en términos de poder y rendimiento.
No es necesario que tus mapas de configuración de transmisión recomendados sean exhaustivos en comparación con el StreamConfigurationMap. Los mapas de configuración sugeridos deben cumplir con los requisitos Implementación y puede incluir cualquiera de los formatos disponibles, tamaños u otros valores que se encuentren en StreamConfigurationMap. Formatos, tamaños y otros valores ocultos que no se encontraron en StreamConfigurationMap No se pueden incluir en los mapas de configuración de transmisión recomendados.
Todas las pruebas no se modifican ni se relajan según las recomendaciones de transmisión.
Las configuraciones de transmisión recomendadas que proporciona la implementación de la cámara son las siguientes: y el cliente de la cámara puede ignorarlos.
Implementación
Sigue estos pasos para implementar esta función.
Entradas de metadatos
Para habilitar esta función, la HAL de la cámara debe propagar la siguiente imagen estática entradas de metadatos:
android.scaler.availableRecommendedStreamConfigurations
: El subconjunto recomendado de configuraciones de transmisión para casos de uso específicos. El usa mapas de bits que indican los casos de uso sugeridos en con el formato de[1 << PREVIEW | 1 << RECORD..]
. Los casos de uso extienden el tupla regular (formato, ancho, alto, entrada) con una entrada adicional. Casos de uso públicos no existentes o cualquier otro bits configurado dentro del rango Se prohíbe[PUBLIC_END, VENDOR_START]
.Esta información se almacena
availableRecommendedStreamConfigurations
etiqueta de metadatos.En el siguiente ejemplo, se muestra un array para una transmisión recomendada de cámara para un dispositivo de cámara que solo admite 4K y 1080p, donde se prefieren ambas resoluciones para las grabaciones de video, pero solo se recomienda 1080p sugerido para la vista previa.
[3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT), 1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
android.depth.availableRecommendedDepthStreamConfigurations
(disponible solo si el dispositivo lo admite): Es el espacio de datos de profundidad recomendado. opciones de configuración de transmisión sugeridas para este dispositivo de cámara. Similar al arriba de la entrada de metadatos, un mapa de bits de caso de uso adicional indica el casos de uso.Esta información se almacena
availableRecommendedInputOutputFormatsMap
etiqueta de metadatos.android.scaler.availableRecommendedInputOutputFormatsMap
(disponible solo si son compatibles con el dispositivo): la asignación de formatos de imagen recomendados que para transmisiones de entrada en este dispositivo de cámara, a su formatos de salida correspondientes.Esta información se almacena
availableRecommendedDepthStreamConfigurations
etiqueta de metadatos.
Esta información está disponible para los clientes de cámara a través del RecommendedStreamConfigurationMap en la API de Cloud.
Casos de uso obligatorios
Se deben proporcionar los parámetros de configuración de transmisión recomendados para los siguientes casos de uso y cumplan con los requisitos correspondientes:
Caso de uso | Requisito |
---|---|
PREVIEW |
La vista previa solo debe incluir configuraciones de transmisiones procesadas que no se detengan
con formatos de salida como YUV_420_888 y
IMPLEMENTATION_DEFINED |
RECORD |
Un registro de video debe incluir configuraciones de transmisión que coincidan con la
perfiles multimedia compatibles
con el formato IMPLEMENTATION_DEFINED . |
VIDEO_SNAPSHOT |
Una instantánea de video debe incluir parámetros de configuración de transmisión que tengan al menos grande como las resoluciones máximas de RECORD y solo con el BLOB + Combinación de formato DATASPACE_JFIF y espacio de datos (JPEG). Los parámetros de configuración no debería provocar fallas en la vista previa y debería poder ejecutarse a 30 fps. |
SNAPSHOT |
La configuración de transmisión de instantáneas debe incluir al menos una con un tamaño cercano
a android.sensor.info.activeArraySize con el BLOB +
Combinación de formato DATASPACE_JFIF y espacio de datos (JPEG). Considerando
Restricciones sobre la relación de aspecto, la alineación y otras restricciones específicas del proveedor
el área del tamaño máximo sugerido no debe ser inferior al 97% del sensor
área de tamaño del array. |
ZSL (si es compatible) |
Si es compatible con el dispositivo de la cámara, se recomiendan las configuraciones de transmisión de entrada. Solo se deben anunciar junto con otros resultados procesados o detenidos. formatos. |
RAW (si es compatible) |
Si es compatible con el dispositivo de la cámara, se recomiendan las configuraciones de transmisión sin procesar. solo debe incluir formatos de salida RAW. |
Otros casos de uso
Puedes proporcionar flujos de configuración recomendados adicionales para casos de uso. específicas de tu implementación.
Validación
Para probar la implementación de los flujos de configuración recomendados, ejecuta el siguiente comando: las siguientes pruebas de CTS y VTS:
API para consultar combinaciones de funciones
A partir de Android 15, la plataforma de Android brinda una API para consultar combinaciones de atributos. Esta API permite que los clientes de la cámara consulten una combinación específica de funciones puede ser compatible con el dispositivo. Esta API es necesario porque la API de camera2 modela diferentes funciones, como 4K, 60 fps, Video HDR, UltraHDR, zoom ultra gran angular y estabilización como controles ortogonales.
Requisitos
Para que la API busque combinaciones de funciones, la HAL de la cámara debe implementar
versión 3 de la interfaz ICameraDevice
. Para obtener más información, consulta la
Implementación.
Cuando se admite la API, la estabilización de vista previa debe ser ortogonal a
otras funciones. Para un dispositivo de cámara
compatible con vista previa,
estabilización, el valor que se muestra de isStreamCombinationWithSettingsSupported
para una combinación determinada debe ser el mismo valor cuando la estabilización de vista previa
esté activada o desactivada. Esto reduce el espacio de búsqueda para las consultas de combinación de atributos.
Además, para el rendimiento del contenido multimedia clase 15, la cámara posterior principal debe compatibilidad con estabilización de vista previa con vista previa HLG10 de 10 bits para 1080p y 720p la vista previa y los archivos JPEG de tamaño máximo. Para obtener más detalles sobre estos requisitos, consulta sección 2.2.7.2. Cámara del CDD.
Implementación
Para admitir la API y consultar combinaciones de funciones, implementa lo siguiente:
de combinación de atributos
en la versión 3
ICameraDevice
:
constructDefaultRequestSettings
: Crea la configuración predeterminada para un tipo deCaptureRequest
especificado. La HAL pueden usar elICameraDeviceSession::constructDefaultRequestSettings
para implementarlos.isStreamCombinationWithSettingsSupported
: Comprueba la compatibilidad del dispositivo con una combinación de transmisión de cámara especificada con parámetros de sesión y clavesCaptureRequest
adicionales. Indispensable Se devuelvetrue
para las combinaciones admitidas yfalse
para las combinaciones no admitidas combinaciones de funciones. La HAL puede usarisStreamCombinationSupported
implementación y agregar compatibilidad para verificar la configuración deCaptureRequest
que se pasa ensessionParams
.getSessionCharacteristics
: Toma un de transmisión con parámetros de sesión y muestra el características específicas de la sesión.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Enumera todas las configuraciones de sesión de uso general. Estos parámetros de configuración se verifican con pruebas de cumplimiento.
En las versiones anteriores a la 3 de la interfaz de ICameraDevice
, la HAL
debería implementar el
isStreamCombinationSupported
.
Para obtener más información sobre las combinaciones de funciones que consulta la API, consulta la
documentación sobre sessionConfigurationQueryVersion
en
system/media/camera/docs/metadata_definitions.xml
Para ver una implementación de referencia de esta función, consulta
hardware/google/camera/devices/EmulatedCamera/hwl/
APIs públicas
Las apps pueden usar las siguientes APIs públicas para consultar combinaciones de funciones compatibles para el dispositivo:
CameraDevice.CameraDeviceSetup
: Una representación limitada deCameraDevice
que se puede usar para consultar la función combinaciones sin requerir una instancia deCameraDevice
.getCameraDeviceSetup
: Adquiere un objetoCameraDeviceSetup
para un ID de cámara determinado siisCameraDeviceSetupSupported
muestratrue
.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Admite consultas de combinación de atributos si este valor esVANILLA_ICE_CREAM
o una superior.OutputConfiguration
: Una clase que describe la salida de la cámara, que puede contener una superficie diferida para el propósito de las consultas de combinación de atributos de baja latencia.SessionConfiguration
: Una clase de utilidad que describe la configuración de la sesión, incluida la transmisión de entrenamiento y los parámetros de sesión, que se pueden usar para atributos de combinaciones.
Validación
Para validar la implementación de esta función, utiliza los siguientes VTS, CTS y Pruebas del ITS (verificador de CTS) de la cámara:
VTS
CTS
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/CameraDeviceSetupTest.java
ITS de la cámara