كاميرا HAL3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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