No Sistema de visualização externa (EVS) 1.1, o dispositivo de câmera lógica que consiste em vários dispositivos de câmera física é aceito. Para usar esse dispositivo virtual, as implementações de dispositivo precisam oferecer suporte ao Framework de sincronização.
Enumerar, abrir e fechar o dispositivo de câmera lógica
O app pode usar os mesmos métodos IEvsEnumerator
para usar os
dispositivos de câmera lógica disponíveis. O objeto EvsCamera
retornado, que
representa um dispositivo de câmera lógico, precisa conter os seguintes itens nos metadados:
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
Se um objeto EvsCamera retornado representar uma câmera lógica, os metadados da câmera precisam conter essa chave de capability no campoANDROID_REQUEST_AVAILABLE_CAPABILITIES
.- O campo
ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
lista os identificadores de dispositivos de câmera física. - O campo
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
pode ter um dos valores de tipo enumerado abaixo:ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE
é para sensores no modo mestre-mestre, sem sincronização de obturador/exposição de hardware.ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED
é para sensores no modo mestre-escravo, sincronização de obturador/exposição de hardware. As câmeras GMSL2 sincronizadas precisam ter esse valor.
O app pode extrair um descritor de dispositivos de câmera física usando
IEvsCamera
no novo método
getPhysicalCameraInfo(stringcameraId)
.
/** * Returns the description of the physical camera device that backs this * logical camera. * * If a requested device does not either exist or back this logical device, * this method returns a null camera descriptor. And, if this is called on * a physical camera device, this method is the same as getCameraInfo_1_1() * method if a given device ID is matched. Otherwise, this returns a * null camera descriptor. * * @param deviceId Physical camera device identifier string. * @return info The description of a member physical camera device. * This must be the same value as reported by * EvsEnumerator::getCameraList_1_1(). */ getPhysicalCameraInfo(string deviceId) generates (CameraDesc info);
Configurar o suporte a várias câmeras
Todas as câmeras lógicas precisam ser definidas de forma estática e precisam ser enumeradas por uma implementação do gerenciador de configuração. Como o EVS permite que cada dispositivo do grupo seja configurado de maneira diferente, ele fornece uma lista de dispositivos membros e indica se a captura de imagem está sincronizada ou não.
<!-- camera group 0 --> <group id='group0' synchronized='CALIBRATED'> <caps> <!-- list of supported controls supported by all physical devices --> <supported_controls> <control name='BRIGHTNESS' min='0' max='255'/> <control name='CONTRAST' min='0' max='255'/> </supported_controls> <!-- list of stream configuration supported by all physical devices --> <stream id='0' width='640' height='480' format='RGBA_8888' framerate='30'/> </caps> <!-- list of parameters --> <characteristics> <parameter name='REQUEST_AVAILABLE_CAPABILITIES' type='enum' size='1' value='LOGICAL_MULTI_CAMERA' /> <parameter name='LOGICAL_MULTI_CAMERA_PHYSICAL_IDS' type='byte[]' size='2' value='/dev/video3,/dev/video4' /> </characteristics> </group>