Dans le système de vue extérieure (EVS, Exterior View System) 1.1, l'appareil photo logique composé de plusieurs appareils photo physiques est pris en charge. Pour utiliser cet appareil virtuel, les implémentations d'appareils doivent être compatibles avec le framework de synchronisation.
Énumérer, ouvrir et fermer l'appareil photo logique
L'application peut utiliser les mêmes méthodes IEvsEnumerator
pour utiliser les appareils photo logiques disponibles. L'objet EvsCamera
renvoyé, qui représente un appareil photo logique, doit contenir les éléments suivants dans les métadonnées:
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
Si un objet EvsCamera renvoyé représente une caméra logique, ses métadonnées de caméra doivent contenir cette clé de capacité dans son champANDROID_REQUEST_AVAILABLE_CAPABILITIES
.- Le champ
ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
liste les identifiants des appareils photo physiques. - Le champ
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
peut avoir l'une des valeurs d'énumération suivantes:ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE
est destiné aux capteurs en mode maître-maître, sans synchronisation matérielle de l'obturateur/de l'exposition.ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED
est destiné aux capteurs en mode maître-esclave, synchronisation de l'obturateur/de l'exposition matérielle. Cette valeur doit être définie pour les caméras GMSL2 synchronisées.
L'application peut récupérer un descripteur d'appareils photo physiques via IEvsCamera
dans la nouvelle méthode 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);
Configurer la compatibilité multi-caméra
Toutes les caméras logiques doivent être définies de manière statique et doivent être énumérées via une implémentation de gestionnaire de configuration. Comme l'EVS permet de configurer différemment chaque appareil du groupe, il fournit une liste des appareils membres et indique si la capture d'image est synchronisée ou non.
<!-- 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>