Le bokeh de l'appareil photo est un effet de faible profondeur de champ créé en rendant floues certaines parties d'une scène afin qu'elles ne soient pas nettes. Sur les caméras des appareils mobiles, le bokeh est obtenu à l'aide des informations de profondeur acquises à partir de la vision stéréo de deux caméras ou de deux photodiodes (PD) d'une seule caméra.
À partir d'Android 11, la plate-forme Android prend en charge les implémentations de bokeh et fournit des API pour rendre la fonctionnalité disponible aux applications tierces.
Mise en œuvre
Pour rendre la fonction bokeh de l'appareil photo disponible sur votre appareil, procédez comme suit :
Annoncez
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:Cette balise se présente sous le format d'un tableau de trois tuples entiers, chaque tuple étant au format
{mode, maxWidth, maxHeight}
. En plus de{ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
, la caméra HAL doit également répertorier l'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 le format d'un tableau
{minZoomRatio, maxZoomRatio}
, qui contient toutes les plages de taux 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.Remplissez
ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
dansANDROID_CONTROL_AVAILABLE_MODES
.
Pour qu'une application déclenche la fonctionnalité 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 pris en charge. Notez que l'implémentation du bokeh peut entraîner une consommation de mémoire supplémentaire en raison du calcul stéréo.
Si un mode scène étendu pris en charge ne peut pas être appliqué par image et entraîne des retards inattendus lorsqu'il est activé/désactivé, incluez ANDROID_CONTROL_EXTENDED_SCENE_MODE
dans ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
. En même temps, implémentez la méthode ICameraDeviceSession::isReconfigurationRequired()
pour éviter la reconfiguration des modes scène étendus 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 CTS Verifier
Le bokeh de l'appareil photo est un effet de faible profondeur de champ créé en rendant floues certaines parties d'une scène afin qu'elles ne soient pas nettes. Sur les caméras des appareils mobiles, le bokeh est obtenu à l'aide des informations de profondeur acquises à partir de la vision stéréo de deux caméras ou de deux photodiodes (PD) d'une seule caméra.
À partir d'Android 11, la plate-forme Android prend en charge les implémentations de bokeh et fournit des API pour rendre la fonctionnalité disponible aux applications tierces.
Mise en œuvre
Pour rendre la fonction bokeh de l'appareil photo disponible sur votre appareil, procédez comme suit :
Annoncez
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:Cette balise se présente sous le format d'un tableau de trois tuples entiers, chaque tuple étant au format
{mode, maxWidth, maxHeight}
. En plus de{ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
, la caméra HAL doit également répertorier l'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 le format d'un tableau
{minZoomRatio, maxZoomRatio}
, qui contient toutes les plages de taux 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.Remplissez
ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
dansANDROID_CONTROL_AVAILABLE_MODES
.
Pour qu'une application déclenche la fonctionnalité 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 pris en charge. Notez que l'implémentation du bokeh peut entraîner une consommation de mémoire supplémentaire en raison du calcul stéréo.
Si un mode scène étendu pris en charge ne peut pas être appliqué par image et entraîne des retards inattendus lorsqu'il est activé/désactivé, incluez ANDROID_CONTROL_EXTENDED_SCENE_MODE
dans ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
. En même temps, implémentez la méthode ICameraDeviceSession::isReconfigurationRequired()
pour éviter la reconfiguration des modes scène étendus 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 CTS Verifier