Le bokeh de l'appareil photo est un effet de profondeur de champ faible créé en floutant certaines parties d'une scène pour qu'elles ne soient pas nettes. Sur les appareils mobiles, le bokeh est obtenu à l'aide des informations de profondeur acquises par la vision stéréo de deux appareils photo ou par les doubles photodiodes (PD) d'un même appareil.
À partir d'Android 11, la plate-forme Android prend en charge les implémentations bokeh et fournit des API permettant de rendre cette fonctionnalité disponible pour les applications tierces.
Implémentation
Pour rendre la fonctionnalité Bokeh de l'appareil photo disponible sur votre appareil, procédez comme suit:
Annoncer
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:Ce tag est au format d'un tableau de tuples à trois entiers, chaque tuple au format
{mode, maxWidth, maxHeight}
. En plus de{ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
, le HAL de l'appareil photo doit également lister un ou les deux modesANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
etANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
avec leurs tailles de streaming maximales correspondantes.Annoncer
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
:Cette balise se présente sous la forme d'un tableau
{minZoomRatio, maxZoomRatio}
, qui contient toutes les plages de ratios de zoom pour un mode scène étendu activé, dans le même ordre que dansANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
. Une plage de zoom de[1.0, 1.0]
signifie que le zoom n'est pas pris en charge.Renseignez
ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
dansANDROID_CONTROL_AVAILABLE_MODES
.
Pour qu'une application déclenche la fonctionnalité de bokeh, elle doit définir ANDROID_CONTROL_MODE
sur ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
et ANDROID_CONTROL_EXTENDED_SCENE_MODE
sur l'un des modes de scène étendus compatibles.
Notez que l'implémentation du bokeh peut entraîner une consommation de mémoire supplémentaire en raison des calculs stéréo.
Si un mode de scène étendu compatible ne peut pas être appliqué par frame et entraîne des retards inattendus lorsqu'il est activé/désactivé, incluez ANDROID_CONTROL_EXTENDED_SCENE_MODE
dans ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
. Dans le même temps, implémentez la méthode ICameraDeviceSession::isReconfigurationRequired()
pour éviter la reconfiguration des modes de scène étendues qui ne nécessitent pas de reconfiguration.
Validation
Pour valider la fonctionnalité Bokeh sur votre appareil, exécutez les tests CTS, VTS et CTS Verifier suivants:
CtsCameraTestCases
VtsHalCameraProviderV2_4TargetTest
CameraBokehTest
dans le vérificateur CTS