פלט מצלמה באיכות 10 ביט

במכשירים עם Android מגרסה 13 ואילך, מערכת Android תומכת בפלט של מצלמה עם 10 ביט באמצעות פרופילים של טווח דינמי שאפשר להגדיר אותם על ידי לקוח המצלמה כחלק מהגדרת הסטרימינג. יצרני מכשירים יכולים להוסיף תמיכה בפרופילים של טווח דינמי של 10 ביט, כמו HLG10, ‏ HDR 10, ‏ HDR 10+ ו-Dolby Vision.

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

לקוחות המצלמה יכולים להגדיר שילובים של סטרימינג באמצעות קריאה ל-setDynamicRangeProfile. מידע נוסף על שילובים חובה של זרמי פלט זמין בטבלה 10-bit output additional guaranteed configurations במאמר Regular capture.

דרישות

כדי לתמוך בפלט של מצלמה עם 10 ביט, במכשיר צריך להיות חיישן מצלמה עם 10 ביט או יותר, עם תמיכה מתאימה ב-ISP. לפרטים על דרישות התאימות שקשורות לתמיכה ב-10 ביט, אפשר לעיין בסעיף 7.5. מצלמות ב-CDD.

הטמעה

כדי לספק תמיכה בפלט של מצלמה באיכות 10 ביט, יצרני המכשירים צריכים לבצע את השילובים הבאים של Camera AIDL HAL:

  • הכללת ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT ביכולות המצלמה.
  • מאכלסים את ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP בכל פרופילי הטווח הדינמי הנתמכים ואת מפת הסיביות של האילוצים שלהם. הפרופיל HLG10 חייב להיות נתמך. בנוסף, צריך לכלול פרופיל מומלץ של טווח דינמי כדי ליידע את לקוחות המצלמה לגבי הפורמט הנתמך האופטימלי.
  • צריך לוודא שיש תמיכה בערך של פרופיל הטווח הדינמי במהלך הגדרת מקורות נתונים שמשתמשים בפורמט P010 או בפורמט שמוגדר על ידי ההטמעה (ImageFormat.PRIVATE).
  • בהתאם לפרופיל הטווח הדינמי, מגדירים את מאגר המטא-נתונים הסטטי או הדינמי של מאגרי Gralloc 4 שעברו עיבוד לפני שליחת הודעה לשירות המצלמה.

לפרטים נוספים על פלט המצלמה באיכות 10 ביט ב-Camera HAL, אפשר לעיין במאמרים הבאים ב-metadata_definitions.xml:

לעיון בהטמעה לדוגמה של Camera HAL שתומכת בפלט מצלמה באיכות 10 ביט, אפשר לעבור אל /hardware/google/camera/devices/EmulatedCamera/hwl.

אימות

כדי לאמת את ההטמעה של פלט המצלמה ב-10 ביט ולוודא שאפליקציות של צד שלישי יכולות להפעיל את התכונה, מומלץ לבצע את שלושת שלבי האימות הבאים.

כדי לבצע אימות ויזואלי של פלט המצלמה באיכות 10 ביט, נניח שהמכשיר תומך בהצגת HDR (תצוגה של 1,000 ניטים ומעלה), ואפליקציית הצפייה בווידאו (לדוגמה, Google Photos) תומכת בהפעלה של וידאו HDR.

בדיקת התקינות הפונקציונלית של ה-API

כדי לבדוק את התקינות הפונקציונלית של פלט המצלמה ב-10 ביט, מריצים את הבדיקות הבאות של CTS,‏ ITS של המצלמה ו-VTS:

השוואה בין המצלמה המובנית לבין אפליקציית צד שלישי

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

הצעות לסצנות להשוואה

כדי להשוות בין אפליקציית המצלמה המובנית לבין אפליקציית צד שלישי, צריך לצלם סרטונים בכמה סצנות שונות באמצעות אפליקציית המצלמה המובנית ואפליקציית הדוגמה Camera2Video. הנה כמה סצנות מומלצות שאפשר להשתמש בהן להשוואה:

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

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

השוואה בין טווח דינמי רגיל לבין טווח דינמי גבוה

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

אלה כמה היבטים חשובים שכדאי לבדוק בסצנות המוצעות. רמות הבהירות (שנמדדות בניטים או בלומנים) של לוחות תצוגה עם יכולת HDR משתנות, ולכן המספרים הבאים הם דוגמאות:

  • בסצנה עם תאורה בינונית עד חלשה, האזורים הבהירים של הנר או של מקור אור קטן מוצגים בבהירות מקסימלית של הצג (יכולה להגיע עד 1,000 ניט) בקליפ באיכות HDR, ובבהירות מקסימלית של SDR (כ-100 ניט) בקליפ באיכות SDR. בסרטון ה-HDR, האזורים הבהירים צריכים לבלוט במסך ולשקף את התפיסה של המשתמש לגבי הטווח הדינמי האמיתי של הסצנה. בהשוואה לקליפ ה-HDR, קליפ ה-SDR צריך להיראות שטוח ופחות בהיר.
  • בסצנת הפלט הבהירה, בהתאם לכוונון המכשיר, קליפ ה-HDR מציג הבדל ברור בבהירות המסך בהשוואה לקליפ ה-SDR. בסרטון באיכות HDR, הבהירות של המסך בסצנה כולה (בהתאם למרווח הדינמי) צריכה להיות גבוהה יותר, למשל עד 800 ניטים, ואפילו יותר מכך באזורים הבהירים כמו פגושי הכרום, בסביבות הבהירות המקסימלית.
  • בצילום בתוך הבית בטווח דינמי נמוך, קליפים ב-HDR וב-SDR דומים בצבע ובגוון, אבל יכול להיות שהקליפ ב-HDR בהיר יותר מזה שב-SDR. ה-HDR לא צריך להיות כהה יותר מה-SDR. אם אפשרויות ההתאמה הופכות את זה לבלתי אפשרי, צריך לוודא שאופן הפעולה של אפליקציית הצד השלישי זהה לאופן הפעולה של אפליקציית המצלמה המקורית.