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 כולל פלאגין של מיפוי גוונים, שמאפשר ל-OEM (יצרן ציוד מקורי) לספק תוכנת הצללה (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, שכוללת נתח (chunk) שמכיל את הגרסה של המטא-נתונים ISO 21496-1.gmAP תמונת ה-PNG הזו כוללת גם נתח gdAT שמכיל את כל קובץ ה-PNG של מפת ההגברה המקודדת.

באיור הבא מוצג הפריסה של חלקי ה-PNG:

הפריסה של נתחי ה-PNG

איור 3. פריסת הנתחים של קובץ ה-PNG.

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