O bokeh da câmera é um efeito de profundidade de campo rasa criado pelo desfoque de partes de uma cena para que elas não fiquem em foco. Em câmeras de dispositivos móveis, o bokeh é alcançado usando informações de profundidade adquiridas da visão estéreo de duas câmeras ou de fotodiodos duplos (PDs, na sigla em inglês) 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 apps de terceiros.
Implementação
Para disponibilizar o recurso de bokeh da câmera no seu dispositivo, faça o seguinte:
Anuncie
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}, o HAL da câmera também precisa listar um ou ambos os modosANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTUREeANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUScom os tamanhos máximos de streaming correspondentes.Anuncie
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 um modo de cena estendido ativado, na mesma ordem que emANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES. Um intervalo de zoom de[1.0, 1.0]significa que o zoom não é compatível.Preencha
ANDROID_CONTROL_USE_EXTENDED_SCENE_MODEemANDROID_CONTROL_AVAILABLE_MODES.
Para que um app acione o recurso de bokeh, ele precisa definir ANDROID_CONTROL_MODE como ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE e ANDROID_CONTROL_EXTENDED_SCENE_MODE como um dos modos de cena estendidos compatíveis.
A implementação do bokeh pode levar a um consumo extra de memória devido à computação 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 em ANDROID_REQUEST_AVAILABLE_SESSION_KEYS. Ao mesmo tempo, implemente o método ICameraDeviceSession::isReconfigurationRequired() para evitar a reconfiguração de modos de cena estendidos que não exigem reconfiguração.
Validação
Para validar o recurso de bokeh no seu dispositivo, execute os seguintes testes do CTS, VTS e CTS Verifier:
CtsCameraTestCasesVtsHalCameraProviderV2_4TargetTestCameraBokehTestno CTS Verifier