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

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

תמיכה ב-HDR ב-Android

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

‫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, ומאפשר ליצרן הציוד המקורי לספק הצללה של ה-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 ביט.
  • מפת הגברה של 8 ביט נוצרת משילוב של עיבוד בסיסי של SDR עם עיבוד של HDR.
  • הרינדור הבסיסי של SDR ומפת הגוונים מקודדים לקובץ PNG יחיד.

פרטי הקידוד של PNG הם:

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

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

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

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

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