إتاحة استخدام كاميرات متعدّدة

إتاحة واجهة برمجة التطبيقات في Android 9 للكاميرات المتعددة أجهزة من خلال جهاز كاميرا منطقي جديد يتكون من اثنين أو أكثر من الأجهزة أجهزة الكاميرا التي تشير في الاتجاه نفسه. جهاز الكاميرا المنطقي هو الكشف عن جهاز CameraDevice/CaptureSession واحد لتطبيق يسمح التفاعل مع ميزات الكاميرات المتعددة المدمجة HAL. يمكن للتطبيقات بشكل اختياري الوصول إلى أحداث بث الكاميرا المادية والبيانات الوصفية وعناصر التحكّم والتحكّم فيها

إتاحة استخدام كاميرات متعدّدة

الشكل 1. إتاحة استخدام كاميرات متعدّدة

في هذا المخطّط البياني، تكون معرّفات الكاميرات المختلفة مُصنَّفة حسب الألوان. يمكن للتطبيق بث الموارد الاحتياطية الأولية من كل كاميرا فعلية في الوقت نفسه. من المهم أيضًا إمكانية تعيين عناصر تحكم منفصلة وتلقي بيانات وصفية منفصلة من جهات الكاميرات الفعلية.

الأمثلة والمصادر

يجب الإعلان عن الأجهزة ذات الكاميرات المتعددة بواسطة القدرة المنطقية لاستخدام كاميرات متعددة.

يمكن لعملاء الكاميرات الاستعلام عن معرّف الكاميرا للأجهزة الفعلية الكاميرا المنطقية من خلال استدعاء getPhysicalCameraIds() بعد ذلك، يتم استخدام أرقام التعريف التي يتم عرضها كجزء من النتيجة للتحكّم في الأجهزة الفعلية. كل على حدة من خلال setPhysicalCameraId() ويمكن الاستعلام عن نتائج هذه الطلبات الفردية من النتيجة عن طريق الاستدعاء getPhysicalCameraResults()

وقد لا تتيح طلبات الكاميرا الفعلية إلا مجموعة فرعية محدودة من المعلَمات. لتلقّي قائمة بالمعلَمات المتوافقة، يمكن للمطوّرين طلب getAvailablePhysicalCameraRequestKeys()

لا تتوافق أحداث بث الكاميرا الفعلية إلا مع الطلبات التي لا تتم إعادة معالجتها لأجهزة الاستشعار الأحادية اللون وأجهزة استشعار باير فقط.

التنفيذ

قائمة التحقّق الخاصة بالدعم

لإضافة أجهزة منطقية متعددة الكاميرات إلى جانب HAL:

بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 9، يجب أن تكون أجهزة الكاميرات يمكنك استبدال بث YUV/RAW منطقي واحد بمجموعات بث مادية نفس الحجم (لا ينطبق على مجموعات بث RAW) والتنسيق نفسه من اثنين الكاميرات. ولا ينطبق ذلك على الأجهزة التي تعمل بنظام التشغيل Android 10.

بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 10، حيث تم تثبيت إصدار جهاز HAL للكاميرا هو 3.5 أو أعلى، يجب أن يتوافق جهاز الكاميرا isStreamCombinationSupported للتطبيقات الاستعلام عن ما إذا كانت مجموعة بث معيّنة تحتوي على يتيح لهم البث المباشر

خريطة إعدادات ساحة المشاركات

للحصول على كاميرا منطقية، يتم تجميع مجموعات البث الإلزامية لجهاز الكاميرا مستوى جهاز معين هو نفسه المطلوب في CameraDevice.createCaptureSession يجب أن تكون كل مجموعات البث في خريطة ضبط البث أحداث بث منطقية.

لجهاز كاميرا منطقي يدعم إمكانات RAW مع الكاميرات الفرعية الفعلية ذات أحجام مختلفة، إذا ضبط أحد التطبيقات بث RAW منطقيًا، يجب ألا ينتقل جهاز الكاميرا المنطقي إلى كاميرات فرعية مادية أحجام أجهزة الاستشعار. ويضمن ذلك عدم تعطُّل تطبيقات التقاط صورة RAW الحالية.

للاستفادة من التكبير/التصغير البصري من خلال بروتوكول HAL عن طريق التبديل بين الكاميرات الفرعية الفعلية أثناء التقاط صور RAW، يجب على التطبيقات تهيئة مجموعات بث فعلية بكاميرا فرعية بدلاً من بث RAW منطقي.

مجموعة بث مضمونة

يجب أن تضمن كل من الكاميرا المنطقية وكاميراتها المادية مجموعات إلزامية من مصادر البيانات المطلوبة لمستويات أجهزتهم.

يجب أن يعمل جهاز الكاميرا المنطقي بنفس الطريقة التي تعمل بها الكاميرا الفعلية بناءً على مستوى معدّاته وإمكاناته. من المستحسن أن كمجموعة خصائص عظيمة لكل مجموعة من الكاميرات الفعلية الفردية.

على الأجهزة التي تعمل بنظام التشغيل Android 9، لكل مضمون مجموعة البث، يجب أن تتيح الكاميرا المنطقية ما يلي:

  • استبدال YUV_420_888 واحد منطقي أو بث أولي بمجموعتين ماديتين لها نفس الحجم والتنسيق، وكلاهما من كاميرا فعلية منفصلة، بالنظر إلى أن الحجم والتنسيق متوافقين مع الكاميرات الفعلية.

  • إضافة مجموعتَي بث أولي، واحد من كل كاميرا فعلية، إذا كانت الكاميرا المنطقية لا تعلن عن إمكانات RAW، لكن الكاميرات الفعلية الأساسية تعرض ذلك. يحدث هذا عادةً عندما تكون للكاميرات الفعلية أحجام استشعار مختلفة.

  • ومن خلال استخدام مجموعات بث مادية بدلاً من بث منطقي بنفس الحجم . يجب ألا يؤدي ذلك إلى إبطاء معدل عرض الإطارات للالتقاط عندما الحد الأدنى لمدة عرض اللقطة لأحداث البث الفعلية والمنطقية هو نفسه.

اعتبارات الأداء والقوة

  • الأداء:

    • قد تؤدي تهيئة أحداث البث الفعلية وبثها إلى إبطاء سرعة معدل التقاط الكاميرا المنطقية بسبب قيود الموارد.
    • قد يؤدي تطبيق إعدادات الكاميرا الفعلية إلى إبطاء معدل الالتقاط في حال يتم وضع الكاميرات الأساسية في معدلات عرض إطارات مختلفة.
  • القوة":

    • يواصل تحسين طاقة HAL العمل في الحالة التلقائية.
    • قد يؤدّي ضبط أحداث بث مادية أو طلبها إلى إلغاء الإعدادات الداخلية لـ HAL. تحسين الطاقة واستهلاك المزيد من الطاقة.

التخصيص

يمكنك تخصيص تنفيذ الجهاز بالطرق التالية:

  • يعتمد الإخراج المدمج لجهاز الكاميرا المنطقي كليًا على طبقة تجريد الأجهزة (HAL) التنفيذ. يعتمد قرار كيفية اشتقاق التدفقات المنطقية المدمجة من أنّ الكاميرات الفعلية شفافة للتطبيق وكاميرا Android إطار العمل.
  • يمكن اختياريًا إتاحة إمكانية تلقّي الطلبات والنتائج المادية الفردية. تشير رسالة الأشكال البيانية في هذه الطلبات بشكل كامل على مجموعة متنوعة من المعلمات تنفيذ HAL المحدد.
  • بدءًا من نظام التشغيل Android 10، يمكن أن تقلل ميزة HAL عدد الكاميرات التي يمكن لأحد التطبيقات فتحها مباشرةً من خلال اختيار عدم الإعلان عن بعض أو كل معرّفات PHYSical_ID في getCameraIdList جارٍ الاتصال بالرقم getPhysicalCameraCharacteristics خصائص الكاميرا الفعلية.

التحقُّق

يجب أن تجتاز الأجهزة المنطقية المتعددة الكاميرات CTS للكاميرا مثل أي كاميرا عادية أخرى. يمكن العثور على حالات الاختبار التي تستهدف هذا النوع من الأجهزة في LogicalCameraDeviceTest واحدة.

تستهدف اختبارات تقنية المعلومات الثلاثة هذه أنظمة كاميرات متعددة لتسهيل دمج الصور:

يتم إجراء اختبار المشهد 1 والمشهد 4 باستخدام اختبار ITS-in-a-box منصة يؤكد اختبار test_multi_camera_match أنّ سطوع يتطابق الجزء الأوسط من الصور عند تفعيل كلتا الكاميرتين. تشير رسالة الأشكال البيانية يؤكد اختبار test_multi_camera_alignment أن المسافات بين الكاميرا والاتجاهات والتشويه بشكل صحيح. إذا كان نظام الكاميرات المتعددة تتضمن كاميرا بعدسة واسعة الزاوية (أكثر من 90 درجة)، يلزم إصدار rev2 من صندوق تقنية المعلومات.

"Sensor_fusion" هو جهاز اختبار ثانٍ يتيح استخدام الهاتف الموصوف مجددًا. الحركة وتؤكد أن الطوابع الزمنية للجيروسكوب ومستشعر الصورة متطابقة وأن الإطارات ذات الكاميرات المتعددة متزامنة.

جميع الصناديق متوفرة من خلال AcuSpec, Inc. (www.acuspecinc.com، fred@acuspecinc.com) وMYWAY التصنيع (www.myway.tw, sales@myway.tw). بالإضافة إلى ذلك، يمكن شراء جهاز ITS rev1 من خلال شركة West-Mark (www.west-mark.com، dgoodman@west-mark.com).

أفضل الممارسات

الاستفادة الكاملة من الميزات التي توفّرها الكاميرات المتعددة مع الحفاظ على لتوافق التطبيقات، اتبع أفضل الممارسات هذه عند تنفيذ جهاز متعدد الكاميرات:

  • (نظام التشغيل Android 10 أو الإصدارات الأحدث) إخفاء الكاميرات الفرعية الفعلية عن getCameraIdList ويقلل هذا من عدد الكاميرات التي يمكن فتحها مباشرةً من خلال مما يغنيك عن الحاجة إلى أن يكون لدى التطبيقات منطق معقّد لاختيار الكاميرا.
  • (نظام التشغيل Android 11 أو الإصدارات الأحدث) لاستخدام كاميرات متعدّدة منطقية جهاز يتيح التكبير أو التصغير البصري، يمكنك تنفيذ ANDROID_CONTROL_ZOOM_RATIO واجهة برمجة التطبيقات واستخدام ANDROID_SCALER_CROP_REGION لاقتصاص نسبة العرض إلى الارتفاع فقط ANDROID_CONTROL_ZOOM_RATIO لتمكين الجهاز من التصغير والحفاظ على دقة أفضل. وفي هذه الحالة، يجب أن تضبط دالة HAL نظام الإحداثيات ANDROID_SCALER_CROP_REGION، ANDROID_CONTROL_AE_REGIONS, ANDROID_CONTROL_AWB_REGIONS, ANDROID_CONTROL_AF_REGIONS، ANDROID_STATISTICS_FACE_RECTANGLES، وANDROID_STATISTICS_FACE_LANDMARKS لمعالجة تأثير ما بعد التكبير مجال الرؤية كصفيفة نشطة للمستشعر. لمزيد من المعلومات حول كيفية ANDROID_SCALER_CROP_REGION مع ANDROID_CONTROL_ZOOM_RATIO، يمكنك الاطّلاع على camera3_crop_reprocess#cropping.
  • للأجهزة التي تستخدم كاميرات متعدّدة والتي تتضمن كاميرات مختلفة التأكد من أن الجهاز يعلن عن دعم لقيمة معينة أو نطاق لعنصر تحكم فقط إذا كان نطاق التكبير/التصغير بالكامل يدعم القيمة أو النطاق. فعلى سبيل المثال، إذا كانت الكاميرا المنطقية تتكون من عدسة لالتقاط صور موسّعة، وكاميرا واسعة وكاميرا مقرِّبة للتصوير عن بُعد، فعليك ما يلي:
    • إذا كانت أحجام الصفائف النشطة للكاميرات الفعلية مختلفة، يجب أن تجري طبقة تجريد الأجهزة (HAL) للكاميرا التخطيط من الصفائف النشطة للكاميرات الصفيف النشط للكاميرا المنطقية لـ ANDROID_SCALER_CROP_REGION، ANDROID_CONTROL_AE_REGIONS, ANDROID_CONTROL_AWB_REGIONS, ANDROID_CONTROL_AF_REGIONS، ANDROID_STATISTICS_FACE_RECTANGLES، وANDROID_STATISTICS_FACE_LANDMARKS ومن منظور التطبيق، نظام الإحداثيات هو حجم الصفيفة النشطة للكاميرا المنطقية.
    • إذا كانت الكاميرات المزوّدة بعدسات واسعة الزاوية وعدسات مقرِّبة للتصوير تدعمان التركيز التلقائي الكاميرا ذات تركيز ثابت، تأكَّد من أنّ الكاميرا المنطقية تعلن عن ميزة "التركيز التلقائي". والدعم. يجب أن تحاكي طبقة تجريد الأجهزة (HAL) جهاز حالة تركيز تلقائي الكاميرا، ومن ثم عند التصغير حتى يصل التطبيق إلى عدسة لالتقاط صور موسّعة، فإن الواقع أن يكون التركيز الثابت للكاميرا الأساسية شفافًا للتطبيق وتعمل آلات حالة التركيز التلقائي لأوضاع التركيز التلقائي المتوافقة متوقع.
    • إذا كانت الكاميرات المزوّدة بعدسة واسعة الزاوية وعدسة مقرِّبة (تيليفوتو) تدعمان 4K بمعدّل 60 لقطة في الثانية، لا تتوافق الكاميرا لالتقاط صور موسّعة سوى بدقة 4K بمعدّل 30 إطارًا في الثانية أو 1080p بسرعة 60 إطارًا في الثانية، ولكنّنا وليس بدقة 4K بمعدّل 60 لقطة في الثانية، تأكَّد من أنّ الكاميرا المنطقية لا تعرض الإعلانات بدقة 4k @ 60 إطارًا في الثانية بإعدادات البث المتوافقة. ويضمن ذلك وسلامة إمكانات الكاميرا المنطقية، ويضمن أن التطبيق لن ستواجه مشكلة في عدم تحقيق سرعة 4k بسرعة 60 إطارًا في الثانية ANDROID_CONTROL_ZOOM_RATIO أقل من 1.
  • يبرز الشاشة من خلال نظام التشغيل Android 10، متعدد الكاميرات المنطقية غير مطلوب لإتاحة مجموعات بث تتضمّن أحداث بث مادي. إذا كانت HAL متوافقة مع البث المباشر:
    • (الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث) للتعامل بشكل أفضل مع الاستخدام مثل العمق من الاستيريو وتتبع الحركة، يجعل مجال الرؤية من مخرجات البث الفعلي بأكبر حجم ممكن للأجهزة ومع ذلك، إذا نشأ البث الفعلي والبث المنطقي من نفس الكاميرا الفعلية، فإن قيود الأجهزة قد تفرض مجال رؤية البث الفعلي ليكون مطابقًا لتدفق المنطقي.
    • لمعالجة ضغط الذاكرة الناجم عن عمليات البث المادية المتعددة، التأكد من استخدام التطبيقات لـ discardFreeBuffers تحويل الموارد الاحتياطية المجانية (الموارد الاحتياطية التي يصدرها المستهلك، ولكن لم يوقفها المنتج في قائمة الانتظار) إذا كان من المتوقع أن يكون بث مادي خاملاً لفترة زمنية.
    • إذا تعذّر البث من كاميرات فعلية مختلفة مرفق بالطلب نفسه، فتأكد من أن التطبيقات تستخدم surface group بحيث يتم استخدام قائمة انتظار واحدة للمخزن المؤقت لدعم سطحين مواجهين للتطبيق، ما يقلل من استهلاك الذاكرة.