Камера Боке

Боке камеры — это эффект небольшой глубины резкости, создаваемый путем размытия частей сцены так, чтобы они не были в фокусе. На камерах мобильных устройств боке достигается с использованием информации о глубине, полученной в результате стереозрения от двух камер или от двойных фотодиодов (ФД) одной камеры.

Начиная с 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
,

Боке камеры — это эффект небольшой глубины резкости, создаваемый путем размытия частей сцены так, чтобы они не были в фокусе. На камерах мобильных устройств боке достигается с использованием информации о глубине, полученной в результате стереозрения от двух камер или от двойных фотодиодов (ФД) одной камеры.

Начиная с 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