הפעלת סרטוני HDR

סרטונים בטווח דינמי גבוה (HDR) הם הדבר הבא בקידוד סרטונים באיכות גבוהה, והם מאפשרים לשחזר סצנות באיכות שאין לה תחרות. השיפור מתבצע על ידי הגדלה משמעותית של הטווח הדינמי של רכיב הבהירות (מ-100 cd/m2 הנוכחיים לאלפי cd/m2) ועל ידי שימוש במרחב צבעים רחב הרבה יותר (BT 2020). היא הפכה עכשיו למרכיב מרכזי בהתפתחות של 4K UHD בתחום הטלוויזיה.

‫Android 10 תומך בסרטוני ה-HDR הבאים.

  • HDR10
  • VP9
  • HDR10+‎

מגרסה Android 9 ואילך, MediaCodec מדווח על מטא-נתונים של HDR ללא קשר למצב המנהור. במצב ללא מנהור, אפשר לקבל נתונים מפוענחים יחד עם מטא-נתונים סטטיים או דינמיים. ב-HDR10 וב-VP9Profile2 שמשתמשים במטא-נתונים סטטיים, הנתונים האלה מדווחים בפורמט הפלט עם המפתח KEY_HDR_STATIC_INFO. בפורמט HDR10+‎ שמשתמש במטא-נתונים דינמיים, הנתונים האלה מדווחים באמצעות המפתח KEY_HDR10_PLUS_INFO בפורמט הפלט, והם עשויים להשתנות בכל פריים של הפלט. מידע נוסף זמין במאמר בנושא מנהור מולטימדיה.

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

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

טכנולוגיות HDR נתמכות

ב-Android מגרסה 7.0 ואילך יש תמיכה בטכנולוגיות ה-HDR הבאות.

טכנולוגיה Dolby-Vision HDR10 VP9-HLG VP9-PQ
קודק AVC/HEVC HEVC VP9 VP9
פונקציית העברה ST-2084 ST-2084 HLG ST-2084
סוג מטא-נתונים של HDR דינמי סטטי ללא סטטי

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

  • אין API סטנדרטי ל-Android לבדיקה אם הפעלה באיכות HDR נתמכת באמצעות מפענחים לא מנהרים.
  • מפענחי וידאו עם מנהור שמפרסמים יכולת הפעלה של HDR חייבים לתמוך בהפעלה של HDR כשהם מחוברים למסכים עם יכולת HDR.
  • גרסת Android‏ 7.0 של AOSP לא תומכת בהרכבת תוכן HDR ב-GL.

Discovery

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

תצוגה

אפליקציות צריכות להשתמש ב-API החדש Display.getHdrCapabilities כדי לשלוח שאילתות לגבי טכנולוגיות ה-HDR שנתמכות בתצוגה שצוינה. זה בעצם המידע בבלוק הנתונים של המטא-נתונים הסטטיים של EDID, כפי שמוגדר ב-CTA-861.3:

  • public Display.HdrCapabilities getHdrCapabilities()
    מחזירה את יכולות ה-HDR של המסך.
  • Display.HdrCapabilities
    מכיל את היכולות של HDR בצג נתון. לדוגמה, אילו סוגי HDR הוא תומך בהם ופרטים על נתוני הבהירות הרצויים.

קבועים:

  • int HDR_TYPE_DOLBY_VISION
    תמיכה ב-Dolby Vision.
  • int HDR_TYPE_HDR10
    תמיכה ב-HDR10 / PQ.
  • int HDR_TYPE_HDR10_PLUS
    תמיכה ב-HDR10+.
  • int HDR_TYPE_HLG
    תמיכה ב-Hybrid Log-Gamma.
  • float INVALID_LUMINANCE
    ערך הבהירות לא תקין.

‫methods ציבוריות:

  • float getDesiredMaxAverageLuminance()
    מחזירה את נתוני הבהירות הממוצעת של המסגרת המקסימלית של התוכן הרצוי ב-cd/cd/m2 עבור המסך הזה.
  • float getDesiredMaxLuminance()
    מחזירה את נתוני הבהירות המקסימלית של התוכן הרצוי ב-cd/cd/m2 עבור המסך הזה.
  • float getDesiredMinLuminance()
    מחזירה את נתוני הבהירות המינימלית של התוכן הרצוי ב-cd/cd/m2 עבור המסך הזה.
  • int[] getSupportedHdrTypes()
    מקבל את סוגי ה-HDR הנתמכים של המסך הזה (ראו קבועים). הפונקציה מחזירה מערך ריק אם המסך לא תומך ב-HDR.

מפענח קוד

אפליקציות צריכות להשתמש בממשק ה-API הקיים CodecCapabilities.profileLevels כדי לאמת את התמיכה בפרופילים החדשים עם יכולת HDR:

Dolby-Vision

MediaFormat קבוע mime:

String MIMETYPE_VIDEO_DOLBY_VISION

MediaCodecInfo.CodecProfileLevel קבועים של פרופילים:

int DolbyVisionProfileDvavPen
int DolbyVisionProfileDvavPer
int DolbyVisionProfileDvheDen
int DolbyVisionProfileDvheDer
int DolbyVisionProfileDvheDtb
int DolbyVisionProfileDvheDth
int DolbyVisionProfileDvheDtr
int DolbyVisionProfileDvheStn

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

HEVC HDR 10

MediaCodecInfo.CodecProfileLevel קבועים של פרופילים:

int HEVCProfileMain10HDR10
int HEVCProfileMain10HDR10Plus

VP9 HLG & PQ

MediaCodecInfo.CodecProfileLevel profile constants:

int VP9Profile2HDR
int VP9Profile2HDR10Plus
int VP9Profile3HDR
int VP9Profile3HDR10Plus

אם פלטפורמה תומכת במפענח שתומך ב-HDR, היא חייבת לתמוך גם בכלי לחילוץ נתונים שתומך ב-HDR.

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

חולץ

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

טכנולוגיה Dolby-Vision HDR10 VP9-HLG VP9-PQ
מאגר MP4 MP4 WebM WebM

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

סיכום

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

טכנולוגיה Dolby-Vision HDR10 VP9-HLG VP9-PQ
סוג ה-HDR הנתמך (תצוגה) HDR_TYPE_DOLBY_VISION HDR_TYPE_HDR10 HDR_TYPE_HLG HDR_TYPE_HDR10
קונטיינר (כלי לחילוץ נתונים) MP4 MP4 WebM WebM
מפענח קוד MIMETYPE_VIDEO_DOLBY_VISION MIMETYPE_VIDEO_HEVC MIMETYPE_VIDEO_VP9 MIMETYPE_VIDEO_VP9
פרופיל (מפענח קוד) אחד מהפרופילים של Dolby HEVCProfileMain10HDR10 VP9Profile2HDR או VP9Profile3HDR VP9Profile2HDR או VP9Profile3HDR

הערות:

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

הפעלה

אחרי שאפליקציה מאמתת את התמיכה בהפעלת HDR, היא יכולה להפעיל תוכן HDR כמעט באותו אופן שבו היא מפעילה תוכן שאינו HDR, עם ההערות הבאות:

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

הפעלת תמיכה בפלטפורמת HDR

ספקי SoC ויצרני ציוד מקורי (OEM) צריכים לבצע עבודה נוספת כדי להפעיל תמיכה בפלטפורמת HDR במכשיר.

שינויים בפלטפורמה ב-Android 7.0 ל-HDR

ריכזנו כאן כמה שינויים חשובים בפלטפורמה (שכבת האפליקציה/השכבה המקורית) שיצרני ציוד מקורי (OEM) ומערכות על שבב (SOC) צריכים להכיר.

תצוגה

הרכב החומרה

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

  1. קובעים נפח או מרחב צבע ליניארי שמכיל את כל השכבות שצריך לבצע להן קומפוזיציה, על סמך הצבע, המאסטרינג והמטא-נתונים הדינמיים הפוטנציאליים של השכבות.
    אם מתבצעת קומפוזיציה ישירות לתצוגה, יכול להיות שזהו המרחב הלינארי שמתאים לנפח הצבע של התצוגה.
  2. המרת כל השכבות למרחב הצבעים המשותף.
  3. מבצעים את המיזוג.
  4. אם התצוגה היא דרך HDMI:
    1. קובעים את הצבע, את המאסטרינג ואת המטא-נתונים הדינמיים הפוטנציאליים של הסצנה המשולבת.
    2. המרת הסצנה הממוזגת שמתקבלת למרחב/נפח הצבעים הנגזר.
  5. אם התוצאה מוצגת ישירות במסך, צריך להמיר את הסצנה הממוזגת שנוצרה לאותות התצוגה הנדרשים כדי להפיק את הסצנה הזו.

גילוי של מודעות לרשת המדיה

זיהוי של מסך HDR נתמך רק דרך HWC2. כדי שהתכונה הזו תפעל, מפתחי מכשירים צריכים להפעיל באופן סלקטיבי את מתאם HWC2 שמופץ עם Android 7.0. לכן, פלטפורמות צריכות להוסיף תמיכה ב-HWC2 או להרחיב את מסגרת ה-AOSP כדי לאפשר דרך לספק את המידע הזה. ‫HWC2 חושף API חדש להפצת נתונים סטטיים של HDR למסגרת ולאפליקציה.

HDMI

  • מסך HDMI מחובר מפרסם את יכולת ה-HDR שלו דרך HDMI EDID, כפי שמוגדר בסעיף 4.2 של CTA-861.3.
  • צריך להשתמש במיפוי הבא של EOTF:
    • ET_0 Traditional gamma - SDR Luminance Range: not mapped to any HDR type
    • ‫ET_1 Traditional gamma - HDR Luminance Range: not mapped to any HDR type
    • ‫ET_2 SMPTE ST 2084 – ממופה לסוג HDR10
  • הסימון של תמיכה ב-Dolby Vision או ב-HLG דרך HDMI מתבצע בהתאם להגדרות של הגופים הרלוונטיים.
  • שימו לב: HWC2 API משתמש בערכי בהירות רצויים מסוג float, ולכן צריך לתרגם את ערכי ה-EDID של 8 ביט בצורה מתאימה.

מפענחי קוד

הפלטפורמות צריכות להוסיף מפענחים עם תמיכה ב-HDR ופרסום תמיכה ב-HDR. בדרך כלל, מפענחים עם תמיכה ב-HDR צריכים:

  • תמיכה בפענוח מנהור (FEATURE_TunneledPlayback).
  • תמיכה במטא נתונים סטטיים של HDR‏ (OMX.google.android.index.describeHDRColorInfo) והעברה שלהם לקומפוזיציית המסך/החומרה. ב-HLG, צריך לשלוח מטא-נתונים מתאימים לתצוגה.
  • תמיכה בתיאור צבע (OMX.google.android.index.describeColorAspects) והעברה שלו לרכיבי התצוגה או החומרה.
  • תמיכה במטא-נתונים מוטמעים של HDR בהתאם להגדרה בתקן הרלוונטי.

תמיכה במפענח Dolby Vision

כדי לתמוך ב-Dolby Vision, הפלטפורמות צריכות להוסיף מפענח HDR OMX עם תמיכה ב-Dolby Vision. בהתחשב במאפיינים הספציפיים של Dolby Vision, בדרך כלל מדובר במפענח עוטף סביב מפענח AVC אחד או יותר ו/או מפענח HEVC, וגם במרכיב של קומפוזיציה. מפענחים כאלה חייבים:

  • תמיכה בסוג ה-MIME ‏video/dolby-vision.
  • פרסום פרופילים או רמות נתמכים של Dolby Vision.
  • אישור יחידות גישה שמכילות את יחידות המשנה של כל השכבות, כפי שהוגדר על ידי Dolby.
  • קבלת נתונים ספציפיים לקודק שהוגדרו על ידי Dolby. לדוגמה, נתונים שמכילים פרופיל או רמה של Dolby Vision, ואולי גם נתונים ספציפיים לקודק של המפענחים הפנימיים.
  • תמיכה במעבר דינמי בין פרופילים/רמות של Dolby Vision בהתאם לדרישות של Dolby.

כשמגדירים את המפענח, פרופיל Dolby בפועל לא מועבר לקודק. הפעולה הזו מתבצעת רק באמצעות נתונים ספציפיים לקודק אחרי שהמפענח מופעל. פלטפורמה יכולה לבחור לתמוך בכמה מפענחי Dolby Vision: אחד לפרופילי AVC ואחד לפרופילי HEVC, כדי לאפשר אתחול של קודקים בסיסיים במהלך ההגדרה. אם מפענח Dolby Vision יחיד תומך בשני סוגי הפרופילים, הוא צריך לתמוך גם במעבר ביניהם באופן דינמי ומתאים.

אם פלטפורמה מספקת מפענח עם תמיכה ב-Dolby Vision בנוסף לתמיכה הכללית במפענח HDR, היא צריכה:

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

תמיכה במפענח HDR10

כדי לתמוך ב-HDR10, הפלטפורמות צריכות להוסיף מפענח OMX עם תמיכה ב-HDR10. בדרך כלל מדובר במפענח HEVC מנהור שתומך גם בניתוח ובטיפול במטא-נתונים שקשורים ל-HDMI. מפענח כזה (בנוסף לתמיכה כללית במפענח HDR) צריך:

  • תמיכה בסוג MIME ‏'video/hevc'.
  • פרסום תמיכה ב-HEVCMain10HDR10. כדי לתמוך בפרופיל HEVCMain10HRD10, צריך גם לתמוך בפרופיל HEVCMain10, שדורש תמיכה בפרופיל HEVCMain באותן רמות.
  • תמיכה בניתוח של בלוקים של מטא-נתונים של מאסטרינג מסוג SEI, וגם מידע אחר שקשור ל-HDR שנכלל ב-SPS.

תמיכה במפענח VP9

כדי לתמוך ב-VP9 HDR, הפלטפורמות צריכות להוסיף מפענח VP9 Profile2-capable HDR OMX. בדרך כלל מדובר במפענח VP9 ממונר שגם תומך בטיפול במטא-נתונים שקשורים ל-HDMI. מפענחים כאלה (בנוסף לתמיכה כללית במפענח HDR) צריכים:

  • תמיכה בסוג ה-MIME ‏video/x-vnd.on2.vp9.
  • מודעות שתומכות ב-VP9Profile2HDR. כדי לתמוך בפרופיל VP9Profile2HDR, צריך לתמוך גם בפרופיל VP9Profile2 באותה רמה.

מוציאי קומדונים

תמיכה בכלי לחילוץ Dolby Vision

בפלטפורמות שתומכות במפענחי Dolby Vision, צריך להוסיף תמיכה ב-Dolby Extractor (שנקרא Dolby Extractor) לתוכן Dolby Video.

  • כלי רגיל לחילוץ קובצי MP4 יכול לחלץ רק את שכבת הבסיס מקובץ, אבל לא את שכבות השיפור או המטא-נתונים. לכן נדרש כלי מיוחד לחילוץ Dolby כדי לחלץ את הנתונים מהקובץ.
  • ה-extractor של Dolby צריך לחשוף טראק אחד או שניים לכל טראק וידאו של Dolby (קבוצה):
    • ‫Dolby Vision HDR track עם הסוג video/dolby-vision עבור הזרם המשולב של Dolby עם 2/3 שכבות. פורמט יחידת הגישה של טראק ה-HDR, שמגדיר איך לארוז את יחידות הגישה משכבות הבסיס, השיפור והמטא-נתונים לתוך מאגר יחיד שיפוענח למסגרת HDR יחידה, מוגדר על ידי Dolby.
    • אם רצועת וידאו ב-Dolby Vision מכילה שכבת בסיס (BL) נפרדת (תואמת לאחור), כלי החילוץ צריך לחשוף אותה גם כרצועה נפרדת מסוג video/avc או video/hevc. הכלי לחילוץ חייב לספק יחידות גישה רגילות ל-AVC/HEVC עבור הרצועה הזו.
    • לרצועת BL צריך להיות אותו מזהה ייחודי לרצועה (track-ID) כמו לרצועת HDR, כדי שהאפליקציה תבין שאלה שני קידודים של אותו סרטון.
    • האפליקציה יכולה להחליט איזו רצועה לבחור על סמך היכולת של הפלטפורמה.
  • הפרופיל או הרמה של Dolby Vision צריכים להיות חשופים בפורמט של רצועת HDR.
  • אם פלטפורמה מספקת מפענח עם יכולת Dolby Vision, היא חייבת לספק גם כלי לחילוץ עם תמיכה ב-Dolby Vision, גם אם היא לא תומכת בהפעלה באיכות HDR.

תמיכה בחילוץ HDR10 ו-VP9 HDR

אין דרישות נוספות לחילוץ נתונים כדי לתמוך ב-HDR10 או ב-VP9 HLG. הפלטפורמות צריכות להרחיב את כלי החילוץ של MP4 כדי לתמוך ב-VP9 PQ ב-MP4. מטא-נתונים סטטיים של HDR צריכים להיות מועברים בזרם הביטים של VP9 PQ, כך שהמטא-נתונים האלה יועברו למפענח VP9 PQ ולתצוגה דרך צינור הנתונים הרגיל MediaExtractor => MediaCodec.

תוספים ל-Stagefright לתמיכה ב-Dolby Vision

פלטפורמות צריכות להוסיף תמיכה בפורמט Dolby Vision ל-Stagefright:

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

פרטי הטמעה ספציפיים לטכנולוגיה

צינור עיבוד נתונים של מפענח HDR10

איור 1. פייפליין HDR10

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

  • MPEG4 Extractor
    ‫HDR10 bitstreams מזוהים כזרם HEVC רגיל על ידי ‫MPEG4Extractor, והרצועה של HDR עם הסוג video/HEVC תחולץ. המסגרת בוחרת מפענח וידאו HEVC שתומך בפרופיל Main10HDR10 כדי לפענח את הרצועה הזו.
  • HEVC Decoder
    פרטי ה-HDR נמצאים ב-SEI או ב-SPS. המפענח HEVC מקבל קודם כל פריימים שמכילים את פרטי ה-HDR. לאחר מכן, המפענח מחלץ את נתוני ה-HDR ושולח לאפליקציה הודעה על כך שהוא מפענח סרטון HDR. פרטי HDR נכללים בפורמט הפלט של המפענח, שמועבר אל המשטח מאוחר יותר.

פעולות של ספקים

  1. פרסום פרופיל ומפלס נתמכים של מפענח HDR מסוג OMX. דוגמה:
    OMX_VIDEO_HEVCProfileMain10HDR10 (וגם Main10)
  2. Implement support for index: 'OMX.google.android.index.describeHDRColorInfo'
  3. Implement support for index: 'OMX.google.android.index.describeColorAspects'
  4. הטמעת תמיכה בניתוח SEI של מטא-נתונים של מאסטרינג.

צינור פעולה של מפענח Dolby Vision

איור 2. פייפליין של Dolby Vision

‫Dolby-bitstreams ארוזים במאגרי MP4 כמוגדר על ידי Dolby. באופן תיאורטי, אפליקציות יכולות להשתמש בכלי רגיל לחילוץ MP4 כדי לחלץ את שכבת הבסיס, שכבת השיפור ושכבת המטא-נתונים בנפרד. עם זאת, זה לא מתאים למודל הנוכחי של Android MediaExtractor/MediaCodec.

  • DolbyExtractor:
    • ‫DolbyExtractor מזהה ביטסטרים של Dolby, ומציג את השכבות השונות כטראקים 1 עד 2 לכל טראק וידאו של Dolby (קבוצה):
      • ‫HDR track עם הסוג video/dolby-vision לשידור Dolby המשולב של 2/3 שכבות. פורמט יחידת הגישה של רצועת ה-HDR, שמגדיר איך לארוז את יחידות הגישה משכבות הבסיס, השיפור והמטא-נתונים לתוך מאגר יחיד שיפוענח למסגרת HDR יחידה, מוגדר על ידי Dolby.
      • (אופציונלי, רק אם ה-BL תואם לאחור) טראק BL מכיל רק את שכבת הבסיס, שצריכה להיות ניתנת לפענוח על ידי מפענח MediaCodec רגיל, למשל מפענח AVC/HEVC. הכלי לחילוץ צריך לספק יחידות גישה רגילות של AVC/HEVC עבור הרצועה הזו. לרצועת ה-BL הזו צריך להיות אותו מזהה ייחודי של הרצועה ("מזהה הרצועה") כמו לרצועת Dolby, כדי שהאפליקציה תבין שאלה שני קידודים של אותו סרטון.
    • האפליקציה יכולה להחליט איזו רצועה לבחור על סמך היכולת של הפלטפורמה.
    • לכל טראק HDR יש סוג HDR ספציפי, ולכן המסגרת תבחר מפענח וידאו של Dolby כדי לפענח את הטראק הזה. הפענוח של רצועת BL יתבצע על ידי מפענח וידאו רגיל של AVC/HEVC.
  • ‪DolbyDecoder:
    • ה-DolbyDecoder מקבל יחידות גישה שמכילות את יחידות הגישה הנדרשות לכל השכבות (EL+BL+MD או BL+MD)
    • אפשר לארוז מידע CSD (נתונים ספציפיים של קודק, כמו SPS+PPS+VPS) של השכבות הנפרדות בפריים CSD אחד שמוגדר על ידי Dolby. חובה להגדיר פריים אחד של CSD.

פעולות Dolby

  1. מגדירים את האריזה של יחידות הגישה לתוכניות שונות של קונטיינר Dolby (למשל, BL+EL+MD) עבור מפענח Dolby מופשט (כלומר, פורמט המאגר שצפוי על ידי מפענח ה-HDR).
  2. הגדרת האריזה של CSD עבור מפענח Dolby מופשט.

פעולות של ספקים

  1. הטמעה של כלי לחילוץ Dolby. אפשר גם לבצע את הפעולה הזו באמצעות Dolby.
  2. שילוב של DolbyExtractor ב-framework. נקודת הכניסה היא frameworks/av/media/libstagefright/MediaExtractor.cpp.
  3. הצהרה על פרופיל ומפלס של מפענח HDR מסוג OMX ‎. לדוגמה, OMX_VIDEO_DOLBYPROFILETYPE ו-OMX_VIDEO_DOLBYLEVELTYP.
  4. הטמעת תמיכה ב-index: 'OMX.google.android.index.describeColorAspects'
  5. הפצת המטא-נתונים של ה-HDR הדינמי לאפליקציה ולמשטח בכל פריים. בדרך כלל המידע הזה צריך להיות ארוז בפריים המפוענח, כפי שמוגדר על ידי Dolby, כי תקן ה-HDMI לא מספק דרך להעביר את המידע הזה לתצוגה.

פייפליין של מפענח VP9

איור 3. VP9-PQ pipeline

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

  • WebM Extractor:
  • מפענח VP9:
    • הפענוח מקבל זרמי ביטים של Profile2 ומפענח אותם כזרמי VP9 רגילים.
    • הפענוח מקבל מטא-נתונים סטטיים של HDR מהמסגרת.
    • הפענוח מקבל מטא-נתונים סטטיים דרך יחידות הגישה לזרם הביטים עבור זרמי VP9 PQ.
    • מפענח VP9 צריך להיות מסוגל להעביר את המטא-נתונים הסטטיים או הדינמיים של HDR אל המסך.

פעולות של ספקים

  1. הטמעת תמיכה באינדקס: OMX.google.android.index.describeHDRColorInfo
  2. הטמעת תמיכה באינדקס: OMX.google.android.index.describeColorAspects
  3. הפצת מטא-נתונים סטטיים של HDR