Bokeh de la cámara

El bokeh de la cámara es un efecto de profundidad de campo reducida que se crea desenfocando partes de una escena para que no estén en primer plano. En las cámaras de dispositivos móviles, el bokeh se logra con la información de profundidad adquirida de la visión estéreo de dos cámaras o de fotodiodos (PD) dobles de una sola cámara.

A partir de Android 11, la plataforma de Android admite implementaciones de bokeh y proporciona APIs para que la función esté disponible en apps de terceros.

Implementación

Para que la función de bokeh de la cámara esté disponible en tu dispositivo, haz lo siguiente:

  • Anuncia ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES:

    Esta etiqueta tiene el formato de un array de tuplas de tres números enteros, con cada tupla en el formato de {mode, maxWidth, maxHeight}. Además de {ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}, el HAL de la cámara también debe enumerar uno o ambos modos ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE y ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS con sus tamaños de transmisión máximos correspondientes.

  • Anuncia ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES:

    Esta etiqueta tiene el formato de un array {minZoomRatio, maxZoomRatio}, que contiene todos los rangos de relación de zoom para un modo de escena extendido habilitado, en el mismo orden que en ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES. Un rango de zoom de [1.0, 1.0] significa que no se admite el zoom.

  • Propaga ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE en ANDROID_CONTROL_AVAILABLE_MODES.

Para que una app active la función de bokeh, debe establecer ANDROID_CONTROL_MODE en ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE y ANDROID_CONTROL_EXTENDED_SCENE_MODE en uno de los modos de escena extendidos admitidos. Ten en cuenta que la implementación de bokeh puede generar un consumo de memoria adicional debido al cálculo estéreo.

Si no se puede aplicar un modo de escena extendido admitido por fotograma y genera demoras inesperadas cuando se habilita o inhabilita, incluye ANDROID_CONTROL_EXTENDED_SCENE_MODE en ANDROID_REQUEST_AVAILABLE_SESSION_KEYS. Al mismo tiempo, implementa el método ICameraDeviceSession::isReconfigurationRequired() para evitar la reconfiguración de los modos de escena extendidos que no la requieren.

Validación

Para validar la función de bokeh en tu dispositivo, ejecuta las siguientes pruebas de CTS, VTS y Verificador del CTS:

  • CtsCameraTestCases
  • VtsHalCameraProviderV2_4TargetTest
  • CameraBokehTest en el Verificador del CTS