En el caso de 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 compatibles de un dispositivo llamando a getSupportedProfiles
.
Luego, el framework muestra una instancia de DynamicRangeProfiles
, que incluye información sobre los perfiles de rango dinámico compatibles y, si están disponibles, las restricciones de solicitudes 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 cámara pueden configurar combinaciones de transmisión llamando a setDynamicRangeProfile
.
Para obtener más información sobre las combinaciones de flujos de salida obligatorios, consulta la tabla de parámetros de configuración adicionales garantizados 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 compatible con 10 bits o superior con la compatibilidad con el ISP correspondiente. Para obtener más información sobre los requisitos de compatibilidad relacionados con la compatibilidad con 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 HAL de AIDL de la cámara:
- Incluye
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT
en las capacidades de la cámara. - Completa
ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP
con todos los perfiles de rango dinámico compatibles 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 compatible óptimo. - Asegúrate de admitir el valor del perfil de rango dinámico durante la configuración de transmisiones para transmisiones que usan el formato P010 o la compatibilidad con un formato definido por la implementación (
ImageFormat.PRIVATE
). - Según el perfil de rango dinámico, configura el búfer de metadatos estático o dinámico de los búferes Gralloc 4 procesados antes de notificar al servicio de cámara.
Para obtener más detalles sobre la salida de la cámara de 10 bits en la HAL de la cámara, consulta lo siguiente en metadata_definitions.xml
:
DYNAMIC_RANGE_TEN_BIT
- Detalles de la HAL de
availableDynamicRangeProfilesMap
recommendedTenBitDynamicRangeProfile
10BIT_OUTPUT
Para obtener una implementación de HAL de cámara de referencia que admita la salida de cámara de 10 bits, consulta /hardware/google/camera/devices/EmulatedCamera/hwl
.
Validación
Para validar la 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 lleves a cabo las tres etapas de validación que se indican a continuación.
- Cómo probar la corrección funcional de la API
- Compara la cámara nativa y la app de terceros
- Compara el rango dinámico estándar con 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 es compatible con la visualización de HDR (pantalla de más de 1,000 nits) y que la app de visualización de videos (por ejemplo, Google Fotos) admite la reproducción de videos 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 descubrimiento, 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/
: Garantizamos que la cámara se comporte según las especificaciones de la API de 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 la app de terceros
Te recomendamos que te asegures 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 transferirse de la app nativa a las apps de terceros. Para verificar el comportamiento de grabación de video de una app de terceros que admita la salida de 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 de los proveedores.
Escenas sugeridas para comparar
Para comparar la app de cámara nativa con una app de terceros, captura videos con varias escenas diferentes con la app de cámara nativa y la app de ejemplo Camera2Video. A continuación, se muestran las escenas sugeridas para usar en la comparación:
- Es una escena con poca luz y con un objeto brillante, como una vela o una pequeña luz que crea un rango significativo de brillo. Esto confirma el comportamiento de la exposición automática y el rango dinámico.
- Escena exterior brillante con colores brillantes y objetos reflectantes, como parachoques cromados en un automóvil, lo que crea zonas brillantes. Esto confirma la renderización de escenas brillantes con zonas brillantes aún más brillantes.
- Escena de rango medio y bajo rango dinámico, como una escena natural de interior en una oficina o casa Esto confirma que las condiciones de iluminación menos extremas se comportan como se espera.
Para todas las escenas, recomendamos que haya personas y rostros para verificar la exposición, el color y el manejo del tono de piel. Reducir la variación entre tomas facilita las comparaciones consecutivas.
Comparación entre el rango dinámico estándar y el alto rango dinámico
Para asegurarte de que se perciba el beneficio de 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 videos HDR para confirmar que aparezcan los aspectos clave del HDR 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.
Los siguientes son aspectos clave que debes verificar en las escenas sugeridas. Los paneles de visualización compatibles con HDR varían en los niveles de brillo (medidos en nits o lumens), por lo que los siguientes números son solo ejemplos:
- En las escenas con poca luz, los momentos destacados 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 se renderizan al brillo máximo para SDR (aproximadamente 100 nits) en el clip SDR. En el clip HDR, los reflejos brillantes deben brillar en la pantalla y capturar la percepción del usuario de cuál era el verdadero rango dinámico de la escena. En comparación con el clip HDR, el clip SDR debería aparecer más plano y menos brillante.
- En la escena de salida brillante, según la configuración 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 de la escena general (según el margen) debe ser más alto, por ejemplo, hasta 800 nits, y aún más para los elementos destacados, como los parachoques cromados, alrededor del brillo máximo.
- En la captura de interiores de rango dinámico bajo y medio, los clips HDR y SDR son similares en color y tono, y la captura 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.