Bokeh da câmera

O bokeh da câmera é um efeito de profundidade de campo criado ao desfocar partes de uma cena para que não fiquem focadas. Em câmeras de dispositivos móveis, o bokeh é obtido usando informações de profundidade adquiridas da visão estéreo de duas câmeras ou de fotodiodos duplos (PDs) de uma única câmera.

A partir do Android 11, a plataforma Android oferece suporte a implementações de bokeh e fornece APIs para disponibilizar o recurso para aplicativos de terceiros.

Implementação

Para disponibilizar o recurso bokeh da câmera no seu dispositivo, faça o seguinte:

  • Anuncie ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES :

    Esta tag está no formato de uma matriz de tuplas de três números inteiros, com cada tupla no formato de {mode, maxWidth, maxHeight} . Além de {ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0} , o HAL da câmera também deve listar um ou ambos os modos ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE e ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS com seus tamanhos máximos de streaming correspondentes.

  • Anuncie ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES :

    Esta tag está no formato de uma matriz {minZoomRatio, maxZoomRatio} , que contém todos os intervalos de proporção de zoom para um modo de cena estendido habilitado, na mesma ordem que em ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES . Uma faixa de zoom de [1.0, 1.0] significa que o zoom não é compatível.

  • Preencha ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE em ANDROID_CONTROL_AVAILABLE_MODES .

Para que um aplicativo acione o recurso bokeh, o aplicativo deve definir ANDROID_CONTROL_MODE como ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE e ANDROID_CONTROL_EXTENDED_SCENE_MODE como um dos modos de cena estendidos suportados. Observe que a implementação do bokeh pode levar ao consumo extra de memória devido à computação estéreo.

Se um modo de cena estendido compatível não puder ser aplicado por quadro e resultar em atrasos inesperados quando ativado/desativado, inclua ANDROID_CONTROL_EXTENDED_SCENE_MODE em ANDROID_REQUEST_AVAILABLE_SESSION_KEYS . Ao mesmo tempo, implemente o método ICameraDeviceSession::isReconfigurationRequired() para evitar a reconfiguração para modos de cena estendidos que não exigem reconfiguração.

Validação

Para validar o recurso bokeh em seu dispositivo, execute os seguintes testes CTS, VTS e CTS Verifier:

  • CtsCameraTestCases
  • VtsHalCameraProviderV2_4TargetTest
  • CameraBokehTest no verificador CTS
,

O bokeh da câmera é um efeito de profundidade de campo criado ao desfocar partes de uma cena para que não fiquem focadas. Em câmeras de dispositivos móveis, o bokeh é obtido usando informações de profundidade adquiridas da visão estéreo de duas câmeras ou de fotodiodos duplos (PDs) de uma única câmera.

A partir do Android 11, a plataforma Android oferece suporte a implementações de bokeh e fornece APIs para disponibilizar o recurso para aplicativos de terceiros.

Implementação

Para disponibilizar o recurso bokeh da câmera no seu dispositivo, faça o seguinte:

  • Anuncie ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES :

    Esta tag está no formato de uma matriz de tuplas de três números inteiros, com cada tupla no formato de {mode, maxWidth, maxHeight} . Além de {ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0} , o HAL da câmera também deve listar um ou ambos os modos ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE e ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS com seus tamanhos máximos de streaming correspondentes.

  • Anuncie ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES :

    Esta tag está no formato de uma matriz {minZoomRatio, maxZoomRatio} , que contém todos os intervalos de proporção de zoom para um modo de cena estendido habilitado, na mesma ordem que em ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES . Uma faixa de zoom de [1.0, 1.0] significa que o zoom não é compatível.

  • Preencha ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE em ANDROID_CONTROL_AVAILABLE_MODES .

Para que um aplicativo acione o recurso bokeh, o aplicativo deve definir ANDROID_CONTROL_MODE como ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE e ANDROID_CONTROL_EXTENDED_SCENE_MODE como um dos modos de cena estendidos suportados. Observe que a implementação do bokeh pode levar ao consumo extra de memória devido à computação estéreo.

Se um modo de cena estendido compatível não puder ser aplicado por quadro e resultar em atrasos inesperados quando ativado/desativado, inclua ANDROID_CONTROL_EXTENDED_SCENE_MODE em ANDROID_REQUEST_AVAILABLE_SESSION_KEYS . Ao mesmo tempo, implemente o método ICameraDeviceSession::isReconfigurationRequired() para evitar a reconfiguração para modos de cena estendidos que não exigem reconfiguração.

Validação

Para validar o recurso bokeh em seu dispositivo, execute os seguintes testes CTS, VTS e CTS Verifier:

  • CtsCameraTestCases
  • VtsHalCameraProviderV2_4TargetTest
  • CameraBokehTest no verificador CTS