В системе внешнего обзора (EVS) 1.1 поддерживается логическое устройство камеры, состоящее из нескольких физических устройств камеры. Чтобы использовать это виртуальное устройство, его реализации должны поддерживать Synchronization Framework .
Перечислить, открыть и закрыть логическое устройство камеры
Приложение может использовать те же методы IEvsEnumerator
для использования доступных логических устройств камеры. Возвращаемый объект EvsCamera
, представляющий логическое устройство камеры, должен содержать в метаданных следующие элементы:
-
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
Если возвращаемый объект EvsCamera представляет логическую камеру, его метаданные камеры должны содержать этот ключ возможности в своем полеANDROID_REQUEST_AVAILABLE_CAPABILITIES
. - В поле
ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
перечислены физические идентификаторы камеры. -
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
может иметь одно из следующих значений перечисления:-
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE
предназначен для датчиков в режиме мастер-мастер, без аппаратной синхронизации затвора/экспозиции. -
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED
предназначен для датчиков в режиме ведущий-ведомый, аппаратная синхронизация затвора/экспозиции. Синхронизированные камеры GMSL2 должны иметь это значение.
-
Приложение может получить дескриптор физических камер через IEvsCamera
в новом 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 will return 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);
Настройка поддержки нескольких камер
Все логические камеры должны быть определены статически и должны быть перечислены с помощью реализации диспетчера конфигурации. Поскольку EVS позволяет настраивать каждое устройство в группе по-разному, EVS предоставляет список устройств-членов и указывает, синхронизирован ли захват изображения.
<!-- 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>