Bokeh na câmera

O bokeh da câmera é um efeito de profundidade de campo leve criado ao desfocar partes de de uma cena para que não estejam em foco. Nas câmeras de dispositivos móveis, o bokeh é obtidos usando informações de profundidade provenientes da visão estereoscópica de dois ou de fotodiodos duplos (PDs, na sigla em inglês) de uma única câmera.

No Android 11 e versões mais recentes, a Plataforma Android oferece suporte a implementações bokeh e fornece APIs para disponibilizar o recurso a aplicativos de terceiros.

Implementação

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

  • Anunciar ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES:

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

  • Anunciar ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES:

    Essa tag está no formato de uma matriz {minZoomRatio, maxZoomRatio}, que contém todos os intervalos de proporção de zoom para uma cena estendida ativada , na mesma ordem que em ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES. Um intervalo de zoom de [1.0, 1.0] significa que não há suporte para zoom.

  • Preencher ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE em ANDROID_CONTROL_AVAILABLE_MODES.

Para que um app acione o recurso de bokeh, ele precisa definir ANDROID_CONTROL_MODE. para ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE e ANDROID_CONTROL_EXTENDED_SCENE_MODE para um dos modos de cena estendidos com suporte. A implementação do bokeh pode levar a um consumo extra de memória devido ao e estéreo.

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

Validação

Para validar o recurso bokeh no seu dispositivo, execute os seguintes comandos CTS, VTS e Testes do CTS Verifier:

  • CtsCameraTestCases
  • VtsHalCameraProviderV2_4TargetTest
  • CameraBokehTest no verificador do CTS