מצלמה HAL

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

מצלמת AIDL HAL

עבור מכשירים עם אנדרואיד 13 ומעלה, מסגרת המצלמה כוללת תמיכה במצלמות AIDL. מסגרת המצלמה תומכת גם במצלמות HIDL, אולם תכונות המצלמה שנוספו באנדרואיד 13 ומעלה זמינות רק דרך ממשקי ה-HAL של מצלמת AIDL. כדי ליישם תכונות כאלה במכשירים המשדרגים לאנדרואיד 13 ומעלה, יצרני המכשירים חייבים להעביר את תהליך ה-HAL שלהם משימוש בממשקי מצלמות HIDL לממשקי מצלמות AIDL.

כדי ללמוד על היתרונות של AIDL, ראה AIDL for HALs .

הטמעת מצלמת AIDL HAL

ליישום עזר של מצלמת AIDL HAL, ראה hardware/google/camera/common/hal/aidl_service/ .

מפרטי HAL של מצלמת AIDL נמצאים במיקומים הבאים:

עבור מכשירים שעוברים ל-AIDL, ייתכן שיצרני המכשירים יצטרכו לשנות את מדיניות SELinux של Android (sepolicy) וקבצי RC בהתאם למבנה הקוד.

אימות מצלמת AIDL HAL

כדי לבדוק את יישום HAL מצלמת ה-AIDL שלך, ודא שהמכשיר עובר את כל מבחני ה-CTS וה-VTS. אנדרואיד 13 מציגה את מבחן AIDL VTS, VtsAidlHalCameraProvider_TargetTest.cpp .

תכונות המצלמה 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).