Prise en charge de plusieurs caméras

Dans Outside View System (EVS) 1.1, le périphérique de caméra logique composé de plusieurs périphériques de caméra physiques est pris en charge. Pour utiliser ce périphérique virtuel, les implémentations de périphérique doivent prendre en charge le cadre de synchronisation .

Énumérer, ouvrir et fermer le périphérique de caméra logique

L'application peut utiliser les mêmes méthodes IEvsEnumerator pour utiliser les caméras logiques disponibles. L'objet EvsCamera renvoyé, qui représente un périphérique de caméra 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 fonctionnalité dans son champ ANDROID_REQUEST_AVAILABLE_CAPABILITIES .
  • Le champ ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS répertorie les identifiants physiques des appareils photo.
  • Le champ ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE peut avoir l'une des valeurs d'énumération ci-dessous :
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE est destiné aux capteurs en mode maître-maître, pas de synchronisation matérielle d'obturation/exposition.
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED est destiné aux capteurs en mode maître-esclave, synchronisation matérielle obturateur/exposition. Les caméras GMSL2 synchronisées doivent avoir cette valeur.

L'application peut récupérer un descripteur de caméras 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 prise en charge de plusieurs caméras

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 EVS permet de configurer différemment chaque appareil du groupe, EVS 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>
,

Dans Outside View System (EVS) 1.1, le périphérique de caméra logique composé de plusieurs périphériques de caméra physiques est pris en charge. Pour utiliser ce périphérique virtuel, les implémentations de périphérique doivent prendre en charge le cadre de synchronisation .

Énumérer, ouvrir et fermer le périphérique de caméra logique

L'application peut utiliser les mêmes méthodes IEvsEnumerator pour utiliser les caméras logiques disponibles. L'objet EvsCamera renvoyé, qui représente un périphérique de caméra 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 fonctionnalité dans son champ ANDROID_REQUEST_AVAILABLE_CAPABILITIES .
  • Le champ ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS répertorie les identifiants physiques des appareils photo.
  • Le champ ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE peut avoir l'une des valeurs d'énumération ci-dessous :
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE est destiné aux capteurs en mode maître-maître, pas de synchronisation matérielle d'obturation/exposition.
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED est destiné aux capteurs en mode maître-esclave, synchronisation matérielle obturateur/exposition. Les caméras GMSL2 synchronisées doivent avoir cette valeur.

L'application peut récupérer un descripteur de caméras 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 prise en charge de plusieurs caméras

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 EVS permet de configurer différemment chaque appareil du groupe, EVS 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>