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. יש תמיכה ברינדור של וידאו ותמונות מסך ב-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 כולל אלגוריתם מקומי למיפוי צבעים (tone-mapping) של צילומי מסך. התהליך כולל:

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

באלגוריתם הזה יש שיפורים משמעותיים בצילום המסך בין 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 נשמרת מפת רווח (gainmap) בקובץ צילום המסך כדי לשחזר את ייצוג ה-HDR במהלך העיבוד. עם זאת, בניגוד ל-Ultra HDR, צילום המסך נשאר בפורמט PNG לצורך תאימות לאחור עם מערכות שמטמיעות צילומי מסך בפורמט PNG.

פרטי היצירה של צילום המסך הם:

  • כשתוכן HDR מוצג במכשיר, צילום המסך נוצר באמצעות פיקסלים מסוג FP16.
  • המיפוי המקומי של הטונים שמתואר ב-Android 15-QPR1 יוצר גרסה בסיסית של SDR ב-8 ביט.
  • מפת הגברה של 8 ביט נוצרת על ידי שילוב של הגרסה הבסיסית של SDR עם הגרסה של HDR.
  • הגרסה הבסיסית של SDR וה-gainmap מקודדים בקובץ 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.