Unterstützung mehrerer Kameras

In EVS 1.1 (Exterior View System) wird das logische Kameragerät unterstützt, das aus mehreren physischen Kamerageräten besteht. Damit dieses virtuelle Gerät verwendet werden kann, müssen Geräteimplementierungen das Synchronisierungs-Framework unterstützen.

Logisches Kameragerät auflisten, öffnen und schließen

Die App kann dieselben IEvsEnumerator-Methoden verwenden, um die verfügbaren logischen Kamerageräte zu verwenden. Das zurückgegebene EvsCamera-Objekt, das ein logisches Kameragerät darstellt, muss die folgenden Elemente in den Metadaten enthalten:

  • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
    Wenn ein zurückgegebenes EvsCamera-Objekt eine logische Kamera darstellt, müssen die Kamerametadaten diesen Funktionsschlüssel im Feld ANDROID_REQUEST_AVAILABLE_CAPABILITIES enthalten.
  • ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS Feld enthält die IDs physischer Kamerageräte.
  • Das Feld ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE kann einen der folgenden enum-Werte haben:
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE gilt für Sensoren im Master-Master-Modus, keine Hardware-Synchronisierung von Verschluss/Belichtung.
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED gilt für Sensoren im Master-Slave-Modus, Hardware-Verschluss-/Belichtungssynchronisation. Synchronisierte GMSL2-Kameras müssen diesen Wert haben.

Die App kann einen Deskriptor für physische Kamerageräte über IEvsCamera in der neuen getPhysicalCameraInfo(stringcameraId)-Methode abrufen.

/**
 * 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);

Unterstützung für mehrere Kameras konfigurieren

Alle logischen Kameras müssen statisch definiert und über eine Konfigurationsmanager-Implementierung aufgezählt werden. Da jedes Gerät in der Gruppe mit EVS unterschiedlich konfiguriert werden kann, enthält EVS eine Liste der Mitgliedsgeräte und gibt an, ob die Bildaufnahme synchronisiert ist oder nicht.

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