HDR בצילומי מסך של Android

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

תמיכה ב-HDR ב-Android

מערכת Android תומכת בטכנולוגיית HDR בכמה אבני דרך:

‫Android 7

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

Android 13

  • תמיכה מקצה לקצה בצילום, בקידוד ובהצגה של סרטוני HDR.
  • הוספנו קומפוזיציה של SDR ו-HDR, שמגדירה טווחי בהירות שונים שניתנים להצגה בין SDR ל-HDR.

Android 14

  • תמיכה בתמונות HDR עם Ultra HDR.

גם התמיכה בצילומי מסך ב-HDR התפתחה והשתנתה.

שיפורים ביכולות של צילומי מסך ב-HDR

בקטע הזה מתוארת ההתקדמות של יכולת צילום המסך ב-HDR בעדכוני Android.

‫Android 9

‫SurfaceFlinger, כלי ההרכבה של הגרפיקה ב-Android, כולל תמיכה בווידאו באיכות HDR. עיבוד GPU של סרטוני HDR וצילומי מסך משתמש במיפוי גוונים פולינומי מורכב. העקומות של מיפוי הטונים לא תמיד זהות למיפוי הטונים של המסך, ולכן צילומי המסך שונים מהתוכן שמוצג במסך.

Android 13

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

  • צילומי המסך נשארים בפורמט SDR. לכן, כשמסתכלים על צילום המסך לצד סצנת HDR, האזורים ב-HDR נראים כהים יותר.
  • בהירות SDR לא מנוהלת, ולכן תוכן SDR בצילום המסך נראה בהיר כמו תוכן HDR.

במילים אחרות, המערכת ממירה כל סרטון HDR שצולם בצילום המסך לסרטון SDR.

Android 14

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

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

כדי להתמודד עם האתגר הזה, כדאי לשקול שלוש אפשרויות לביצוע צילומי מסך:

  • שמירה של פרטי ה-HDR של תמונה בפורמט Ultra HDR, וכתוצאה מכך ממשק המשתמש של האפליקציה בצילום המסך מושחר.
  • שמירה של פרטים בממשק המשתמש של האפליקציה, שגורמת לחיתוך של תמונות Ultra HDR.
  • פשרה: הבהרת ממשק המשתמש של האפליקציה תוך חיתוך האזורים הבהירים ב-HDR.

ב-Android 14 מיושמת הגישה השלישית, שבה ממשק המשתמש של האפליקציה מואר והאזורים הבהירים ב-HDR נחתכים.

Android 15 QPR1

‫SurfaceFlinger כולל אלגוריתם מקומי למיפוי טונים לצילומי מסך. התהליך הזה כולל:

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

האלגוריתם הזה משפר משמעותית את צילומי המסך בין Android 14 ל-Android 15 QPR1, כפי שמוצג בדוגמאות הבאות:

  • דוגמה 1 היא צילום מסך של סרטון HDR שמוצג כשכבת-על מעל דף ב-Chrome שמכיל Ultra HDR. הצבעים בממשק המשתמש נשמרים ברובם בהטמעה החדשה, והתמונה לא נחתכת יותר.

    Android 14 Android 15 QPR1
    דוגמה 1 ב-Android 14 דוגמה 1 ב-Android 15qpr

    איור 1. השוואה בין Android 14 לבין Android 15 QPR1 בדוגמה 1.

  • דוגמה 2 היא צילום מסך של סרטון HDR שמוצג מעל ההגדרות עם צילומי מסך נוספים. ב-Android 14, הצבעים בצילום המסך הופכים כהים יותר בהדרגה. ב-Android 15 QPR1, מיפוי הטונים משכפל ושומר את צבעי ממשק המשתמש בצורה נכונה.

    Android 14 ‫Android 15 QPR1
    דוגמה 2 ב-Android 14 דוגמה 2 ב-Android 15qpr

    איור 2. השוואה בין Android 14 ל-Android 15 QPR1 בדוגמה 2.

Android 16

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

יצירת צילומי מסך כוללת את השלבים הבאים:

  • כשתוכן HDR מוצג במכשיר, נוצר צילום מסך באמצעות פיקסלים FP16.
  • המיפוי המקומי של גוונים שמתואר ב-Android 15 QPR1 יוצר עיבוד SDR בסיסי של 8 ביט.
  • נוצרת מפת עוצמת הארה (gainmap) של 8 ביט על ידי שילוב של עיבוד ה-SDR הבסיסי עם עיבוד ה-HDR.
  • הרינדור הבסיסי של SDR ומפת ההגברה מקודדים לקובץ PNG יחיד.

קידוד PNG כולל את הפעולות הבאות:

  • מפת ההגברה מקודדת כתמונת PNG, שכוללת נתח gmAP שמכיל את המטא-נתונים של מפת ההגברה לפי ISO 21496-1.
  • הגרסה הבסיסית של ה-SDR מקודדת כתמונת PNG, שכוללת gmAP נתח (chunk) שמכיל את הגרסה של המטא-נתונים ISO 21496-1. תמונת ה-PNG הזו כוללת גם נתח gdAT שמכיל את כל תמונת ה-PNG של מפת הגוונים המקודדת.

בתרשים הבא מוצג הפריסה של מקטעי ה-PNG:

הפריסה של חלקי ה-PNG

איור 3. הפריסה של חלקי ה-PNG.

ב-Android 16, קודק ה-PNG תומך גם בקידוד וגם בפענוח של קובצי ה-PNG האלה. אפליקציות יכולות להציג תמונת PNG עם מפת בהירות באותו אופן כמו Ultra HDR.