دعم متعدد الكاميرات

في نظام العرض الخارجي (EVS) 1.1، يتم دعم جهاز الكاميرا المنطقية الذي يتكون من أجهزة كاميرا فعلية متعددة. لاستخدام هذا الجهاز الظاهري، يجب أن تدعم تطبيقات الجهاز Synchronization Framework .

تعداد وفتح وإغلاق جهاز الكاميرا المنطقية

يمكن للتطبيق استخدام نفس أساليب 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 مخصص لأجهزة الاستشعار في الوضع الرئيسي الرئيسي، ولا توجد مزامنة مصراع/تعريض للأجهزة.
    • 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>
,

في نظام العرض الخارجي (EVS) 1.1، يتم دعم جهاز الكاميرا المنطقية الذي يتكون من أجهزة كاميرا فعلية متعددة. لاستخدام هذا الجهاز الظاهري، يجب أن تدعم تطبيقات الجهاز Synchronization Framework .

تعداد وفتح وإغلاق جهاز الكاميرا المنطقية

يمكن للتطبيق استخدام نفس أساليب 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 مخصص لأجهزة الاستشعار في الوضع الرئيسي الرئيسي، ولا توجد مزامنة مصراع/تعريض للأجهزة.
    • 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>