Soporte multicámara

En Exterior View System (EVS) 1.1, se admite el dispositivo de cámara lógica que consta de múltiples dispositivos de cámara físicos. Para utilizar este dispositivo virtual, las implementaciones del dispositivo deben admitir Synchronization Framework .

Enumerar, abrir y cerrar dispositivos de cámara lógica

La aplicación puede utilizar los mismos métodos IEvsEnumerator para utilizar los dispositivos de cámara lógica disponibles. El objeto EvsCamera devuelto, que representa un dispositivo de cámara lógica, debe contener los siguientes elementos en los metadatos:

  • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
    Si un objeto EvsCamera devuelto representa una cámara lógica, los metadatos de su cámara deben contener esta clave de capacidad en su campo ANDROID_REQUEST_AVAILABLE_CAPABILITIES .
  • El campo ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS enumera los identificadores de dispositivos de cámara física.
  • El campo ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE puede tener cualquiera de los siguientes valores de enumeración:
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE es para sensores en modo maestro-maestro, sin sincronización de exposición/obturador de hardware.
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED es para sensores en modo maestro-esclavo, sincronización de exposición/obturador de hardware. Las cámaras GMSL2 sincronizadas deben tener este valor.

La aplicación puede recuperar un descriptor de dispositivos de cámara física a través de IEvsCamera en el nuevo 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 el soporte multicámara

Es necesario que todas las cámaras lógicas se definan estáticamente y se enumeren mediante una implementación del administrador de configuración. Como EVS permite que cada dispositivo del grupo se configure de manera diferente, EVS proporciona una lista de dispositivos miembros e indica si la captura de imágenes está sincronizada o no.

<!-- 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>
,

En Exterior View System (EVS) 1.1, se admite el dispositivo de cámara lógica que consta de múltiples dispositivos de cámara físicos. Para utilizar este dispositivo virtual, las implementaciones del dispositivo deben admitir Synchronization Framework .

Enumerar, abrir y cerrar dispositivos de cámara lógica

La aplicación puede utilizar los mismos métodos IEvsEnumerator para utilizar los dispositivos de cámara lógica disponibles. El objeto EvsCamera devuelto, que representa un dispositivo de cámara lógica, debe contener los siguientes elementos en los metadatos:

  • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
    Si un objeto EvsCamera devuelto representa una cámara lógica, los metadatos de su cámara deben contener esta clave de capacidad en su campo ANDROID_REQUEST_AVAILABLE_CAPABILITIES .
  • El campo ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS enumera los identificadores de dispositivos de cámara física.
  • El campo ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE puede tener cualquiera de los siguientes valores de enumeración:
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE es para sensores en modo maestro-maestro, sin sincronización de exposición/obturador de hardware.
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED es para sensores en modo maestro-esclavo, sincronización de exposición/obturador de hardware. Las cámaras GMSL2 sincronizadas deben tener este valor.

La aplicación puede recuperar un descriptor de dispositivos de cámara física a través de IEvsCamera en el nuevo 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 el soporte multicámara

Es necesario que todas las cámaras lógicas se definan estáticamente y se enumeren mediante una implementación del administrador de configuración. Como EVS permite que cada dispositivo del grupo se configure de manera diferente, EVS proporciona una lista de dispositivos miembros e indica si la captura de imágenes está sincronizada o no.

<!-- 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>