پشتیبانی از چند دوربین

در سیستم نمای خارجی (EVS) 1.1، دستگاه دوربین منطقی که از چندین دستگاه دوربین فیزیکی تشکیل شده است پشتیبانی می شود. برای استفاده از این دستگاه مجازی، پیاده‌سازی دستگاه باید از چارچوب همگام‌سازی پشتیبانی کند.

دستگاه دوربین منطقی را شمارش، باز و بسته کنید

این برنامه می تواند از همان روش های 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 برای حسگرها در حالت Master-Master است، بدون شاتر سخت افزاری/همگام سازی نوردهی.
    • 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 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);

پشتیبانی از چند دوربین را پیکربندی کنید

همه دوربین های منطقی باید به صورت ایستا تعریف شوند و باید از طریق پیاده سازی مدیر پیکربندی شمارش شوند. از آنجایی که 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>