Hỗ trợ nhiều camera

Trong Hệ thống quan sát bên ngoài (EVS) 1.1, thiết bị camera logic bao gồm nhiều thiết bị camera vật lý được hỗ trợ. Để sử dụng thiết bị ảo này, việc triển khai thiết bị phải hỗ trợ Khung đồng bộ hóa .

Liệt kê, đóng mở thiết bị camera logic

Ứng dụng có thể sử dụng các phương pháp IEvsEnumerator tương tự để sử dụng các thiết bị camera logic có sẵn. Đối tượng EvsCamera được trả về, đại diện cho thiết bị camera logic, phải chứa các mục sau trong siêu dữ liệu:

  • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
    Nếu đối tượng EvsCamera được trả về đại diện cho một máy ảnh logic thì siêu dữ liệu máy ảnh của nó phải chứa khóa khả năng này trong trường ANDROID_REQUEST_AVAILABLE_CAPABILITIES của nó.
  • Trường ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS liệt kê các mã nhận dạng thiết bị máy ảnh vật lý.
  • Trường ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE có thể có một trong các giá trị enum bên dưới:
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE dành cho cảm biến ở chế độ chính-chính, không có đồng bộ hóa màn trập/phơi sáng phần cứng.
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED dành cho cảm biến ở chế độ chính-phụ, đồng bộ hóa màn trập/phơi sáng phần cứng. Máy ảnh GMSL2 được đồng bộ hóa phải có giá trị này.

Ứng dụng có thể truy xuất bộ mô tả của thiết bị máy ảnh vật lý thông qua IEvsCamera theo phương thức getPhysicalCameraInfo(stringcameraId) mới.

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

Cấu hình hỗ trợ nhiều camera

Tất cả các camera logic đều phải được xác định tĩnh và phải được liệt kê thông qua việc triển khai trình quản lý cấu hình. Vì EVS cho phép mỗi thiết bị trong nhóm được cấu hình khác nhau nên EVS cung cấp danh sách các thiết bị thành viên và cho biết liệu việc chụp ảnh có được đồng bộ hóa hay không.

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

Trong Hệ thống quan sát bên ngoài (EVS) 1.1, thiết bị camera logic bao gồm nhiều thiết bị camera vật lý được hỗ trợ. Để sử dụng thiết bị ảo này, việc triển khai thiết bị phải hỗ trợ Khung đồng bộ hóa .

Liệt kê, đóng mở thiết bị camera logic

Ứng dụng có thể sử dụng các phương pháp IEvsEnumerator tương tự để sử dụng các thiết bị camera logic có sẵn. Đối tượng EvsCamera được trả về, đại diện cho thiết bị camera logic, phải chứa các mục sau trong siêu dữ liệu:

  • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
    Nếu đối tượng EvsCamera được trả về đại diện cho một máy ảnh logic thì siêu dữ liệu máy ảnh của nó phải chứa khóa khả năng này trong trường ANDROID_REQUEST_AVAILABLE_CAPABILITIES của nó.
  • Trường ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS liệt kê các mã nhận dạng thiết bị máy ảnh vật lý.
  • Trường ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE có thể có một trong các giá trị enum bên dưới:
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE dành cho cảm biến ở chế độ chính-chính, không có đồng bộ hóa màn trập/phơi sáng phần cứng.
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED dành cho cảm biến ở chế độ chính-phụ, đồng bộ hóa màn trập/phơi sáng phần cứng. Máy ảnh GMSL2 được đồng bộ hóa phải có giá trị này.

Ứng dụng có thể truy xuất bộ mô tả của thiết bị máy ảnh vật lý thông qua IEvsCamera theo phương thức getPhysicalCameraInfo(stringcameraId) mới.

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

Cấu hình hỗ trợ nhiều camera

Tất cả các camera logic đều phải được xác định tĩnh và phải được liệt kê thông qua việc triển khai trình quản lý cấu hình. Vì EVS cho phép mỗi thiết bị trong nhóm được cấu hình khác nhau nên EVS cung cấp danh sách các thiết bị thành viên và cho biết liệu việc chụp ảnh có được đồng bộ hóa hay không.

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