En los dispositivos que ejecutan Android 13 y versiones posteriores, Android admite la salida de cámara de 10 bits a través de perfiles de rango dinámico que el cliente de cámara puede configurar como parte de la configuración de transmisión. Los fabricantes de dispositivos pueden agregar compatibilidad con perfiles de rango dinámico de 10 bits, como HLG10, HDR 10, HDR 10+ y Dolby Vision.
La compatibilidad con la salida de cámara de 10 bits permite que los clientes de cámara descubran los perfiles de rango dinámico de 10 bits admitidos de un dispositivo llamando a getSupportedProfiles
.
Luego, el framework devuelve una instancia de DynamicRangeProfiles
, que incluye información sobre los perfiles de rango dinámico admitidos y, si están disponibles, las restricciones de la solicitud de captura. Se debe admitir el perfil HLG10
. El perfil de rango dinámico recomendado se indica en el campo REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE
.
Los clientes de la cámara pueden configurar combinaciones de transmisiones llamando a setDynamicRangeProfile
.
Para obtener más información sobre las combinaciones obligatorias de transmisiones de salida, consulta la tabla Configuraciones adicionales garantizadas de salida de 10 bits en Captura normal.
Requisitos
Para admitir la salida de cámara de 10 bits, el dispositivo debe tener un sensor de cámara capaz de 10 bits o más con la compatibilidad del ISP correspondiente. Para obtener detalles sobre los requisitos de compatibilidad relacionados con la compatibilidad de 10 bits, consulta la sección 7.5. Cámaras en el CDD
Implementación
Para brindar compatibilidad con la salida de cámara de 10 bits, los fabricantes de dispositivos deben realizar las siguientes integraciones de la HAL de cámara del AIDL:
- Incluye
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT
en las capacidades de la cámara. - Propaga
ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP
con todos los perfiles de rango dinámico admitidos y un mapa de bits de sus restricciones. Se debe admitir el perfilHLG10
. También debes incluir un perfil de rango dinámico recomendado para informar a los clientes de la cámara sobre el formato óptimo admitido. - Asegúrate de admitir el valor del perfil de rango dinámico durante la configuración de la transmisión para las transmisiones que usan el formato P010 o un formato definido por la implementación (
ImageFormat.PRIVATE
). - Según el perfil de rango dinámico, establece el búfer de metadatos estáticos o dinámicos de los búferes de Gralloc 4 procesados antes de notificar al servicio de cámara.
Para obtener más detalles sobre la salida de cámara de 10 bits en la HAL de la cámara, consulta lo siguiente en metadata_definitions.xml
:
DYNAMIC_RANGE_TEN_BIT
- Detalles del HAL para
availableDynamicRangeProfilesMap
recommendedTenBitDynamicRangeProfile
10BIT_OUTPUT
Para obtener una implementación de referencia de la HAL de cámara que admita la salida de cámara de 10 bits, consulta /hardware/google/camera/devices/EmulatedCamera/hwl
.
Validación
Para validar tu implementación de la salida de la cámara de 10 bits y asegurarte de que las apps de terceros puedan habilitar la función, te recomendamos que realices las siguientes tres etapas de validación.
- Prueba la corrección funcional de la API
- Compara la cámara nativa y la app de terceros
- Comparación entre el rango dinámico estándar y el rango dinámico alto
Para la validación visual de la salida de la cámara de 10 bits, se supone que el dispositivo admite la visualización en HDR (pantalla de más de 1,000 nits) y que la app de visualización de video (por ejemplo, Google Fotos) admite la reproducción de video en HDR.
Prueba la corrección funcional de la API
Para probar la corrección funcional de la API de la salida de la cámara de 10 bits, ejecuta las siguientes pruebas de CTS, ITS de la cámara y VTS:
hardware/interfaces/camera/provider/aidl/vts/
: Realiza pruebas de detección, configuración y transmisión básicas, y verifica la presencia de metadatos de HDR cuando sea necesario.tests/camera/src/android/hardware/camera2/cts/
: Garantiza que la cámara se comporte según las especificaciones de la API del AOSP.cts/apps/CameraITS
: Confirma que el comportamiento general del video es coherente cuando se usan perfiles HDR. La prueba específica estests/scene4/test_video_aspect_ratio_and_crop.py
.
Comparación entre la cámara nativa y una app de terceros
Recomendamos asegurarse de que los resultados de la captura de videos de 10 bits con una app de terceros sean similares, si no idénticos, a los de la app de cámara nativa. Esto significa que las opciones de ajuste, como la exposición, el rango dinámico y el color, deben trasladarse de la app nativa a las apps de terceros. Para verificar el comportamiento de grabación de video de una app de terceros que admite la salida de la cámara de 10 bits en tu dispositivo, usa la app de ejemplo Camera2Video en GitHub. La siguiente guía sirve para ilustrar los aspectos visibles del HDR sin números objetivos, debido a la variabilidad de los sensores, los paneles, las condiciones de visualización y las preferencias del proveedor.
Escenas sugeridas para comparar
Para comparar la app de cámara nativa con una app de terceros, captura videos en varias escenas diferentes con la app de cámara nativa y la app de ejemplo Camera2Video. A continuación, se sugieren escenas para usar en la comparación:
- Una escena con luz media o baja con un objeto brillante, como una vela o una luz brillante pequeña que crea un rango de brillo significativo Esto confirma el comportamiento de la exposición automática y el rango dinámico.
- Una escena exterior brillante con colores vibrantes y objetos reflectantes, como los parachoques cromados de un automóvil, que crean reflejos brillantes. Esto confirma la renderización para escenas brillantes con reflejos aún más brillantes.
- Una escena de rango dinámico bajo y medio, como una escena natural en interiores en una casa o una oficina Esto confirma que las condiciones de iluminación menos extremas se comportan según lo esperado.
Para todas las escenas, recomendamos incluir personas y rostros para verificar el manejo de la exposición, el color y el tono de piel. La reducción de la variación entre tomas facilita las comparaciones consecutivas.
Comparación entre el rango dinámico estándar y el rango dinámico alto
Para garantizar que se perciba un beneficio por usar un perfil de rango dinámico de 10 bits en lugar de un perfil de rango dinámico estándar, compara las capturas de video con SDR (sin perfil HDR) con los videos HDR para confirmar que los aspectos clave del HDR aparezcan en las capturas. Para comparar SDR y HDR, usa la app de ejemplo de Camera2Video y las escenas sugeridas para comparar la app de cámara nativa y las apps de terceros.
A continuación, se indican los aspectos clave que debes verificar en las escenas sugeridas. Los paneles de pantalla compatibles con HDR varían en los niveles de brillo (medidos en nits o lúmenes), por lo que los siguientes números son solo ejemplos:
- En la escena con iluminación media o baja, las zonas brillantes de la vela o la luz pequeña se renderizan con el brillo máximo de la pantalla (posiblemente hasta 1, 000 nits) en el clip HDR y con el brillo máximo para SDR (aproximadamente 100 nits) en el clip SDR. En el clip HDR, los puntos destacados brillantes deben sobresalir de la pantalla y capturar la percepción del usuario sobre el verdadero rango dinámico de la escena. En comparación con el clip HDR, el clip SDR debería verse más plano y menos brillante.
- En la escena de salida brillante, según el ajuste del dispositivo, el clip HDR muestra una diferencia aparente en el brillo de la pantalla en comparación con el clip SDR. En el caso del clip HDR, el brillo de la pantalla para la escena general (según el espacio libre) debería ser mayor, por ejemplo, hasta 800 nits, y aún más para las zonas brillantes, como los parachoques cromados, alrededor del brillo máximo.
- En la captura en interiores de rango dinámico bajo y medio, los clips en HDR y SDR son similares en color y tono, y la captura en HDR puede ser más brillante que la SDR. El HDR no debe ser más oscuro que el SDR. Si las opciones de ajuste hacen que esto sea imposible, asegúrate de que el comportamiento de la app de terceros coincida con el de la app de cámara nativa.