מצלמה HAL3

המצלמה של אנדרואיד Hardware Abstraction Layer (HAL) מחברת את ממשקי ה-API של מסגרת המצלמה ברמה גבוהה יותר ב- android.hardware.camera2 למנהל התקן ולחומרה של המצלמה הבסיסיים שלך. אנדרואיד 8.0 הציגה את Treble , והחלפה את ה-API של CameraHal לממשק יציב המוגדר על ידי שפת התיאור של ה-HAL (HIDL). אם פיתחתם בעבר מודול HAL ומנהלי התקנים של מצלמה עבור אנדרואיד 7.0 ומטה, היו מודעים לשינויים משמעותיים בצנרת המצלמה.

תכונות מצלמה HAL3

מטרת העיצוב מחדש של ה-API של מצלמת אנדרואיד היא להגדיל באופן משמעותי את היכולת של יישומים לשלוט בתת-מערכת המצלמה במכשירי אנדרואיד תוך ארגון מחדש של ה-API כדי להפוך אותו ליעיל יותר ובר-תחזוקה. השליטה הנוספת מקלה על בניית יישומי מצלמה באיכות גבוהה במכשירי אנדרואיד שיכולים לפעול באופן אמין על פני מספר מוצרים תוך שימוש באלגוריתמים ספציפיים למכשיר בכל הזדמנות אפשרית כדי למקסם את האיכות והביצועים.

גרסה 3 של תת-מערכת המצלמה מבנה את מצבי הפעולה לתצוגה מאוחדת אחת, שבה ניתן להשתמש כדי ליישם כל אחד מהמצבים הקודמים וכמה אחרים, כגון מצב פרץ. זה מביא לשליטה טובה יותר של המשתמש במיקוד וחשיפה ויותר עיבוד שלאחר, כגון הפחתת רעשים, ניגודיות וחדות. יתר על כן, תצוגה פשוטה זו מקלה על מפתחי אפליקציות להשתמש בפונקציות השונות של המצלמה.

ה-API מדגמן את תת-מערכת המצלמה כצינור הממיר בקשות נכנסות ללכידת פריים לפריימים, על בסיס 1:1. הבקשות מקיפות את כל מידע התצורה לגבי לכידה ועיבוד של מסגרת. זה כולל רזולוציה ופורמט פיקסלים; בקרת חיישן, עדשה ופלאש ידני; מצבי הפעלה 3A; RAW->בקרת עיבוד YUV; יצירת סטטיסטיקה; וכן הלאה.

במילים פשוטות, מסגרת האפליקציה מבקשת מסגרת מתת-מערכת המצלמה, ותת-מערכת המצלמה מחזירה תוצאות לזרם פלט. בנוסף, מטא נתונים המכילים מידע כגון מרחבי צבע והצללת עדשות נוצרים עבור כל סט של תוצאות. אתה יכול לחשוב על גרסה 3 של מצלמה כצינור לזרם החד-כיווני של גרסה 1 של המצלמה. זה ממיר כל בקשת לכידה לתמונה אחת שנלכדה על ידי החיישן, שמעובדת ל:

  • אובייקט תוצאה עם מטא נתונים על הלכידה.
  • אחד עד N מאגרים של נתוני תמונה, כל אחד לתוך משטח היעד שלו.

קבוצת משטחי הפלט האפשריים מוגדרת מראש:

  • כל משטח הוא יעד לזרם של מאגרי תמונה ברזולוציה קבועה.
  • ניתן להגדיר רק מספר קטן של משטחים כפלטים בבת אחת (~3).

בקשה מכילה את כל הגדרות הלכידה הרצויות ואת רשימת משטחי הפלט שאליהם ניתן לדחוף מאגרי תמונה עבור בקשה זו (מתוך הסט הכולל המוגדר). בקשה יכולה להיות חד-פעמית (עם capture() ), או שהיא יכולה לחזור על עצמה ללא הגבלת זמן (עם setRepeatingRequest() ). ללכידות יש עדיפות על פני בקשות חוזרות.

דגם נתוני מצלמה

איור 1. מודל פעולת ליבת המצלמה

סקירה כללית של מצלמה HAL1

גרסה 1 של תת-מערכת המצלמה תוכננה כקופסה שחורה עם פקדים ברמה גבוהה ושלושת מצבי ההפעלה הבאים:

  • תצוגה מקדימה
  • הקלטת וידאו
  • עדיין לכידת

לכל מצב יש יכולות מעט שונות וחופפות. זה הקשה על יישום תכונות חדשות כגון מצב פרץ, הנופל בין שניים ממצבי ההפעלה.

דיאגרמת בלוקים של מצלמה

איור 2. רכיבי מצלמה

אנדרואיד 7.0 ממשיכה לתמוך במצלמה HAL1 מכיוון שמכשירים רבים עדיין מסתמכים עליה. בנוסף, שירות המצלמות של אנדרואיד תומך בהטמעת שני ה-HALs (1 ו-3), וזה שימושי כאשר רוצים לתמוך במצלמה קדמית פחות מסוגלת עם מצלמה HAL1 ומצלמה אחורית מתקדמת יותר עם מצלמה HAL3.

ישנו מודול HAL של מצלמה בודדת (עם מספר גרסה משלו), המפרט מספר התקני מצלמה עצמאיים שלכל אחד מהם יש מספר גרסה משלו. מודול מצלמה 2 ומעלה נדרש כדי לתמוך במכשירים 2 ומעלה, ולמודולי מצלמה כאלה יכולים להיות שילוב של גרסאות מכשירי מצלמה (לכך אנחנו מתכוונים כשאנחנו אומרים ש-Android תומך ביישום שני ה-HALs).