Эффект боке на камерах — это эффект малой глубины резкости, создаваемый размытием частей сцены, так что они оказываются вне фокуса. На камерах мобильных устройств эффект боке достигается с помощью информации о глубине, полученной из стереоскопического зрения двух камер или от двух фотодиодов (PD) одной камеры.
Начиная с Android 11, платформа Android поддерживает реализацию эффекта боке и предоставляет API для того, чтобы сделать эту функцию доступной для сторонних приложений.
Выполнение
Чтобы активировать функцию размытия фона (боке) на вашем устройстве, выполните следующие действия:
Рекламируйте
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES:Этот тег имеет формат массива из трех целых чисел, где каждое число имеет формат
{mode, maxWidth, maxHeight}. В дополнение к{ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}, HAL камеры также должен указывать один или оба режимаANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTUREиANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUSс соответствующими максимальными размерами потоковой передачи.Рекламируйте
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES:Этот тег имеет формат массива
{minZoomRatio, maxZoomRatio}, который содержит все диапазоны коэффициентов масштабирования для включенного расширенного режима сцены, в том же порядке, что и вANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES. Диапазон масштабирования[1.0, 1.0]означает, что масштабирование не поддерживается.Заполните поле
ANDROID_CONTROL_USE_EXTENDED_SCENE_MODEв полеANDROID_CONTROL_AVAILABLE_MODES.
Для активации функции боке приложение должно установить ANDROID_CONTROL_MODE в значение ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE и ANDROID_CONTROL_EXTENDED_SCENE_MODE в один из поддерживаемых расширенных режимов сцены. Обратите внимание, что реализация боке может привести к дополнительному потреблению памяти из-за вычислений стереоэффекта.
Если поддерживаемый расширенный режим сцены не может быть применен к каждому кадру и приводит к неожиданным задержкам при включении/выключении, включите ANDROID_CONTROL_EXTENDED_SCENE_MODE в ANDROID_REQUEST_AVAILABLE_SESSION_KEYS . Одновременно реализуйте метод ICameraDeviceSession::isReconfigurationRequired() , чтобы избежать переконфигурации для расширенных режимов сцены, которые не требуют переконфигурации.
Проверка
Для проверки функции боке на вашем устройстве выполните следующие тесты CTS, VTS и CTS Verifier:
-
CtsCameraTestCases -
VtsHalCameraProviderV2_4TargetTest -
CameraBokehTestв CTS Verifier