كاميرا HAL

تعمل طبقة تجريد أجهزة الكاميرا (HAL) لنظام Android على توصيل واجهات برمجة التطبيقات (APIs) لإطار عمل الكاميرا ذات المستوى الأعلى في android.hardware.camera2 ببرنامج تشغيل الكاميرا الأساسي والأجهزة. بدءًا من Android 13، يستخدم تطوير واجهة HAL للكاميرا AIDL . قدم Android 8.0 نظام Treble ، حيث قام بتحويل واجهة برمجة تطبيقات Camera HAL إلى واجهة مستقرة محددة بواسطة لغة وصف واجهة HAL (HIDL). إذا كنت قد قمت مسبقًا بتطوير وحدة HAL للكاميرا وبرنامج التشغيل لنظام التشغيل Android 7.0 والإصدارات الأقدم، فكن على دراية بالتغييرات المهمة في مسار الكاميرا.

AIDL كاميرا هال

بالنسبة للأجهزة التي تعمل بنظام التشغيل Android 13 أو الإصدارات الأحدث، يتضمن إطار عمل الكاميرا دعمًا لـ AIDL للكاميرات HALs. يدعم إطار الكاميرا أيضًا HALs لكاميرا HIDL، ومع ذلك فإن ميزات الكاميرا المضافة في Android 13 أو الإصدارات الأحدث متاحة فقط من خلال واجهات HAL لكاميرا AIDL. لتنفيذ مثل هذه الميزات على الأجهزة التي تقوم بالترقية إلى Android 13 أو أعلى، يجب على الشركات المصنعة للأجهزة ترحيل عملية HAL الخاصة بها من استخدام واجهات كاميرا HIDL إلى واجهات كاميرا AIDL.

للتعرف على مزايا AIDL، راجع AIDL لـ HALs .

تنفيذ كاميرا AIDL HAL

للحصول على تطبيق مرجعي hardware/google/camera/common/hal/aidl_service/ .

مواصفات كاميرا AIDL HAL موجودة في المواقع التالية:

بالنسبة للأجهزة التي يتم ترحيلها إلى AIDL، قد تحتاج الشركات المصنعة للأجهزة إلى تعديل سياسة Android SELinux (sepolicy) وملفات RC اعتمادًا على بنية التعليمات البرمجية.

التحقق من صحة كاميرا AIDL HAL

لاختبار تنفيذ HAL لكاميرا AIDL، تأكد من اجتياز الجهاز لجميع اختبارات CTS وVTS. يقدم Android 13 اختبار AIDL VTS، VtsAidlHalCameraProvider_TargetTest.cpp .

مميزات كاميرا HAL3

الهدف من إعادة تصميم Android Camera API هو زيادة قدرة التطبيقات بشكل كبير على التحكم في نظام الكاميرا الفرعي على أجهزة Android مع إعادة تنظيم واجهة برمجة التطبيقات لجعلها أكثر كفاءة وقابلية للصيانة. يعمل التحكم الإضافي على تسهيل إنشاء تطبيقات كاميرا عالية الجودة على أجهزة Android التي يمكن أن تعمل بشكل موثوق عبر منتجات متعددة مع الاستمرار في استخدام الخوارزميات الخاصة بالجهاز كلما أمكن ذلك لتحقيق أقصى قدر من الجودة والأداء.

يقوم الإصدار 3 من النظام الفرعي للكاميرا ببناء أوضاع التشغيل في عرض واحد موحد، والذي يمكن استخدامه لتنفيذ أي من الأوضاع السابقة والعديد من الأوضاع الأخرى، مثل وضع الاندفاع. وينتج عن ذلك تحكم أفضل للمستخدم في التركيز والتعرض والمزيد من المعالجة اللاحقة، مثل تقليل الضوضاء والتباين والحدة. علاوة على ذلك، فإن هذا العرض المبسط يجعل من السهل على مطوري التطبيقات استخدام وظائف الكاميرا المتنوعة.

تعمل واجهة برمجة التطبيقات (API) على تصميم النظام الفرعي للكاميرا كمسار يحول الطلبات الواردة لالتقاط الإطارات إلى إطارات، على أساس 1:1. تتضمن الطلبات جميع معلومات التكوين المتعلقة بالتقاط الإطار ومعالجته. يتضمن ذلك الدقة وتنسيق البكسل؛ الاستشعار اليدوي، والتحكم في العدسة والفلاش؛ أوضاع التشغيل 3A؛ RAW-> التحكم في معالجة YUV؛ توليد الإحصاءات. وما إلى ذلك وهلم جرا.

بعبارات بسيطة، يطلب إطار التطبيق إطارًا من النظام الفرعي للكاميرا، ويقوم نظام الكاميرا الفرعي بإرجاع النتائج إلى دفق الإخراج. بالإضافة إلى ذلك، يتم إنشاء بيانات التعريف التي تحتوي على معلومات مثل مساحات الألوان وتظليل العدسات لكل مجموعة من النتائج. يمكنك اعتبار الإصدار 3 من الكاميرا بمثابة خط أنابيب للبث أحادي الاتجاه للإصدار 1 من الكاميرا. يقوم بتحويل كل طلب التقاط إلى صورة واحدة يتم التقاطها بواسطة المستشعر، والتي تتم معالجتها إلى:

  • كائن نتيجة يحتوي على بيانات تعريف حول الالتقاط.
  • مخزن مؤقت واحد إلى N لبيانات الصورة، كل منها في سطح الوجهة الخاص بها.

تم تكوين مجموعة أسطح الإخراج المحتملة مسبقًا:

  • يعد كل سطح بمثابة وجهة لتدفق من مخازن الصور المؤقتة ذات الدقة الثابتة.
  • يمكن تكوين عدد صغير فقط من الأسطح كمخرجات مرة واحدة (~3).

يحتوي الطلب على كافة إعدادات الالتقاط المطلوبة وقائمة أسطح الإخراج لدفع المخازن المؤقتة للصورة إلى هذا الطلب (من إجمالي المجموعة التي تم تكوينها). يمكن أن يكون الطلب مرة واحدة (باستخدام capture() )، أو يمكن تكراره إلى أجل غير مسمى (باستخدام setRepeatingRequest() ). اللقطات لها الأولوية على الطلبات المتكررة.

نموذج بيانات الكاميرا

الشكل 1. نموذج التشغيل الأساسي للكاميرا

نظرة عامة على كاميرا HAL1

تم تصميم الإصدار 1 من النظام الفرعي للكاميرا على شكل صندوق أسود مزود بعناصر تحكم عالية المستوى وأوضاع التشغيل الثلاثة التالية:

  • معاينة
  • تسجيل فيديو
  • لا يزال التقاط

يتمتع كل وضع بقدرات مختلفة ومتداخلة قليلاً. وهذا جعل من الصعب تنفيذ ميزات جديدة مثل وضع الاندفاع، الذي يقع بين وضعين من أوضاع التشغيل.

مخطط كتلة الكاميرا

الشكل 2. مكونات الكاميرا

يستمر Android 7.0 في دعم الكاميرا HAL1 حيث لا تزال العديد من الأجهزة تعتمد عليها. بالإضافة إلى ذلك، تدعم خدمة كاميرا Android تنفيذ كلا من HALs (1 و3)، وهو أمر مفيد عندما تريد دعم كاميرا أمامية أقل قدرة مع كاميرا HAL1 وكاميرا خلفية أكثر تقدمًا مع كاميرا HAL3.

توجد وحدة HAL للكاميرا واحدة (مع رقم الإصدار الخاص بها)، والتي تسرد عدة أجهزة كاميرا مستقلة لكل منها رقم الإصدار الخاص بها. وحدة الكاميرا 2 أو الأحدث مطلوبة لدعم الأجهزة 2 أو الأحدث، ويمكن أن تحتوي وحدات الكاميرا هذه على مزيج من إصدارات أجهزة الكاميرا (وهذا ما نعنيه عندما نقول أن Android يدعم تنفيذ كلا طبقتي HALs).