El bokeh de la cámara es un efecto de profundidad de campo superficial que se crea al desenfocar partes de una escena para que no estén en foco. En las cámaras de los 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 dobles (PD) de una sola cámara.
A partir de Android 11, la plataforma de Android es compatible con las 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:
Publica
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 modosANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
yANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
con sus respectivos tamaños máximos de transmisión.ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
de publicidad: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 extendida habilitado, en el mismo orden que enANDROID_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
enANDROID_CONTROL_AVAILABLE_MODES
.
Para que una app active la función de desenfoque, 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 compatibles.
Ten en cuenta que la implementación de bokeh puede generar un consumo de memoria adicional debido al procesamiento estéreo.
Si no se puede aplicar un modo de escena extendida compatible por fotograma y se producen 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 reconfigurar los modos de escena extendidos que no requieren reconfiguración.
Validación
Para validar la función de desenfoque en tu dispositivo, ejecuta las siguientes pruebas de CTS, VTS y CTS Verifier:
CtsCameraTestCases
VtsHalCameraProviderV2_4TargetTest
CameraBokehTest
en el verificador del CTS