סרטונים בטווח דינמי גבוה (HDR) הם הדור הבא של פענוח וידאו באיכות גבוהה, שמאפשרים לשחזר את הסצנות בצורה חסרת תקדים. כדי לעשות זאת, הטווח הדינמי של רכיב הלחות הזו מוגדל באופן משמעותי (מ-100 cd/m2 הנוכחיים ל-1,000 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
בפורמט הפלט, והוא עשוי להשתנות בכל פריים פלט.
מידע נוסף זמין במאמר מנהור של מדיה.
החל מגרסה 7.0 של Android, התמיכה הראשונית ב-HDR כוללת יצירה של קבועים מתאימים לזיהוי ולהגדרה של צינורות עיבוד נתונים של וידאו ב-HDR. כלומר, צריך להגדיר סוגי קודקים ומצבי תצוגה, ולציין איך להעביר נתוני HDR ל-MediaCodec ולספק אותם למפענחי HDR.
מטרת המסמך הזה היא לעזור למפתחי אפליקציות לתמוך בהפעלת סטרימינג של HDR, ולעזור ליצרני ציוד מקורי ול-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 ב-SurfaceViews באמצעות מאגרי וידאו אטומים. במילים אחרות:
- אין ממשק API סטנדרטי ל-Android שאפשר להשתמש בו כדי לבדוק אם יש תמיכה בהפעלת HDR באמצעות מקודדים ללא מנהרה.
- מקודדי וידאו במנהרה שמפרסמים יכולת הפעלה של HDR חייבים לתמוך בהפעלת HDR כשהם מחוברים למסכים שתומכים ב-HDR.
- רכיב GL של תוכן HDR לא נתמך במהדורה 7.0 של AOSP Android.
Discovery
כדי להפעיל תוכן באיכות HDR, צריך ממיר עם תמיכה ב-HDR וחיבור למסך עם תמיכה ב-HDR. לחלק מהטכנולוגיות נדרש חילוץ נתונים ספציפי.
תצוגה
אפליקציות צריכות להשתמש ב-API החדש Display.getHdrCapabilities
כדי לשלוח שאילתות לגבי טכנולוגיות ה-HDR שנתמכות במסך שצוין. זהו בעצם המידע ב-EDID Static Metadata Data Block כפי שמוגדר ב-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
ערך לא חוקי של בהירות.
שיטות ציבוריות:
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 constant:
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
משתני קבוע של פרופיל:
int VP9Profile2HDR int VP9Profile2HDR10Plus int VP9Profile3HDR int VP9Profile3HDR10Plus
אם פלטפורמה תומכת במפענח שתומך ב-HDR, היא תומכת גם במחולל שתומך ב-HDR.
רק מקודדים במנהרה מובטחים להפעיל תוכן HDR. הפעלה באמצעות מקודדים ללא מנהרה עלולה לגרום לאובדן המידע של HDR ולמישור התוכן לנפח צבע SDR.
Extractor
הקונטיינרים הבאים נתמכים בטכנולוגיות 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, אבל התהליך מתבצע בדרך כלל לפי השלבים הבאים:
- מגדירים נפח/מרחב צבע לינארי שמכיל את כל השכבות שרוצים לשלב, על סמך הצבע, העיבוד והמטא-נתונים הדינמיים הפוטנציאליים של השכבות.
אם ה-Compositing מתבצע ישירות לתצוגה, זה יכול להיות המרחב הליניארי שמתאים לנפח הצבעים של התצוגה. - ממירים את כל השכבות למרחב הצבעים המשותף.
- מבצעים את המיזוג.
- אם המסך מוצג דרך HDMI:
- קובעים את הצבע, העיבוד והמטא-נתונים הדינמיים הפוטנציאליים של הסצנה המשולבת.
- ממירים את הסצנה המשולבת שנוצרה למרחב/נפח הצבע המשויך.
- אם התצוגה מתבצעת ישירות במסך, צריך להמיר את התמונה המשולבת שנוצרה לאותות התצוגה הנדרשים כדי ליצור את התמונה הזו.
גילוי מודעות לרשת המדיה
זיהוי של מסכים באיכות HDR נתמך רק דרך HWC2. כדי שהתכונה הזו תפעל, מי שמטמיע את המכשיר צריך להפעיל באופן סלקטיבי את המתאם HWC2 שפורסם עם Android 7.0. לכן, הפלטפורמות צריכות להוסיף תמיכה ב-HWC2 או להרחיב את מסגרת AOSP כדי לאפשר לספק את המידע הזה. ב-HWC2 מוצג API חדש להעברת נתונים סטטיים של HDR למסגרת ולאפליקציה.
HDMI
- מסך HDMI מחובר מכריז על יכולת ה-HDR שלו באמצעות HDMI EDID כפי שמוגדר בקטע 4.2 ב- CTA-861.3.
- יש להשתמש במיפוי EOTF הבא:
- ET_0 'גאמה רגילה' – טווח בהירות SDR: לא ממופה לאף סוג HDR
- ET_1 Traditional gamma - HDR Luminance Range: not mapped to any HDR type
- ET_2 SMPTE ST 2084 – ממופה לסוג HDR HDR10
- האותות של תמיכה ב-Dolby Vision או ב-HLG דרך HDMI מועברים בהתאם להגדרות של הגופים הרלוונטיים.
- הערה: ב-HWC2 API נעשה שימוש בערכי צפיפות אור רצויים מסוג float, לכן צריך לתרגם את ערכי EDID של 8 ביט באופן מתאים.
מפענחים
הפלטפורמות צריכות להוסיף מקודדים ב-tunnel עם תמיכה ב-HDR ולפרסם את התמיכה שלהן ב-HDR. באופן כללי, מפענחים שתומכים ב-HDR חייבים:
- תמיכה בפענוח במנהרה (
FEATURE_TunneledPlayback
). - תמיכה במטא-נתונים סטטיים של HDR (
OMX.google.android.index.describeHDRColorInfo
) והעברתם לרכיב המסך או החומרה. כדי להשתמש ב-HLG, צריך לשלוח למסך את המטא-נתונים המתאימים. - תמיכה בתיאור הצבע (
OMX.google.android.index.describeColorAspects
) והעברתו להרכב המסך או החומרה. - תמיכה במטא-נתונים מוטמעים של HDR כפי שהם מוגדרים בתקן הרלוונטי.
תמיכה במקודד Dolby Vision
כדי לתמוך ב-Dolby Vision, הפלטפורמות צריכות להוסיף ממיר OMX HDR שתומך ב-Dolby Vision. בהתאם לפרטים הספציפיים של Dolby Vision, בדרך כלל מדובר במפענח חבילה (wrapper decoder) שמקיף מפענח אחד או יותר של AVC ו/או HEVC, וגם רכיב עיבוד (compositor). מקודדים כאלה חייבים:
- תמיכה בסוג ה-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.
- לספק מקודד שתומך בפרופיל הווידאו כפי שהוגדר על ידי Dolby.
תמיכה במפענח HDR10
כדי לתמוך ב-HDR10, הפלטפורמות צריכות להוסיף ממקוד OMX שתומך ב-HDR10. בדרך כלל מדובר במפענח HEVC במנהרה שתומך גם בניתוח ובטיפול במטא-נתונים שקשורים ל-HDMI. מפענח כזה (בנוסף לתמיכה הכללית במפענח HDR) חייב:
- תמיכה בפורמט ה-MIME 'video/hevc'.
- לפרסם את HEVCMain10HDR10 הנתמך. כדי לתמוך בפרופיל HEVCMain10HRD10, צריך גם לתמוך בפרופיל HEVCMain10, שדורש תמיכה בפרופיל HEVCMain באותן רמות.
- תמיכה בניתוח של בלוקים של SEI של מטא-נתונים של מאסטרינג, וכן מידע נוסף שקשור ל-HDR שמופיע ב-SPS.
תמיכה במפענח VP9
כדי לתמוך ב-VP9 HDR, הפלטפורמות צריכות להוסיף ממקוד OMX שתומך ב-HDR בפרופיל 2 של VP9. בדרך כלל מדובר במפענח VP9 במנהרה שתומך גם בטיפול במטא-נתונים שקשורים ל-HDMI. מקודדים כאלה (בנוסף לתמיכה הכללית במקודד HDR) חייבים:
- תמיכה בפורמט ה-MIME 'video/x-vnd.on2.vp9'.
- להציג מודעות עם תמיכה ב-VP9Profile2HDR. כדי לתמוך בפרופיל VP9Profile2HDR, צריך גם לתמוך בפרופיל VP9Profile2 באותה רמה.
חילוצים
תמיכה ב-Dolby Vision extractor
פלטפורמות שתומכות במפענחי Dolby Vision צריכות להוסיף תמיכה בתוכן Dolby Video למחולל Dolby (שנקרא Dolby Extractor).
- כלי חילוץ רגיל של קובצי MP4 יכול לחלץ רק את שכבת הבסיס מהקובץ, אבל לא את שכבות השיפור או המטא-נתונים. לכן נדרש חילוץ נתונים מיוחד של Dolby כדי לחלץ את הנתונים מהקובץ.
- מחלץ ה-Dolby חייב לחשוף טראק אחד עד שניים לכל טראק וידאו (קבוצה) של Dolby:
- טראק Dolby Vision HDR עם הסוג '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 ובחילוץ HDR של VP9
אין דרישות נוספות למחולל כדי לתמוך ב-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 מזוהים על ידי MPEG4Extractor כפשוט שידור HEVC רגיל, והטראק של HDR עם הסוג 'video/HEVC' יופק. המסגרת בוחרת ממקודק הווידאו HEVC שתומך בפרופיל Main10HDR10 כדי לפענח את הטראק הזה. - HEVC Decoder
מידע HDR נמצא ב-SEI או ב-SPS. מקודד ה-HEVC מקבל קודם את התמונות שמכילות את נתוני ה-HDR. לאחר מכן, המפענח מחלץ את המידע של HDR ומודיע לאפליקציה שהוא מפענח סרטון HDR. המידע של HDR נכלל בפורמט הפלט של המפענח, שמופץ לממשק מאוחר יותר.
פעולות של ספקים
- פרסום של פרופיל המפענח הנתמך של HDR וסוג OMX ברמה. דוגמה:
OMX_VIDEO_HEVCProfileMain10HDR10
(וגםMain10
) - הטמעת תמיכה באינדקס:
'
OMX.google.android.index.describeHDRColorInfo
' - הטמעת תמיכה באינדקס:
'
OMX.google.android.index.describeColorAspects
' - הטמעת תמיכה בניתוח SEI של מטא-נתונים של עיבוד אודיו.
צינור עיבוד נתונים של מקודד Dolby Vision
איור 2. צינור עיבוד נתונים של Dolby Vision
זרמי הביט של Dolby ארוזים בקונטיינרים של MP4 כפי שהוגדרו על ידי Dolby. באופן תיאורטי, יישומים יכולים להשתמש בתוכנה רגילה לחילוץ קובצי MP4 כדי לחלץ את שכבת הבסיס, שכבת השיפור ושכבת המטא-נתונים בנפרד. עם זאת, הפתרון הזה לא מתאים למודל הנוכחי של Android MediaExtractor/MediaCodec.
- DolbyExtractor:
- זרמי ביטים של Dolby מזוהים על ידי DolbyExtractor, שמציג את השכבות השונות כטראק אחד עד שניים לכל טראק וידאו של Dolby (קבוצה):
- טראק HDR עם הסוג 'video/dolby-vision' לשידור ה-Dolby המורכב משכבות 2/3. פורמט יחידת הגישה של הטראק ב-HDR, שמגדיר איך לארוז את יחידות הגישה משכבות הבסיס/שיפור/המטא-נתונים למאגר יחיד לצורך פענוח לפריים HDR יחיד, מוגדר על ידי Dolby.
- (אופציונלי, רק אם ה-BL תואם לאחור) טראק BL מכיל רק את שכבת הבסיס, שצריכה להיות ניתנת לפענוח על ידי מפענח MediaCodec רגיל, למשל מפענח AVC/HEVC. הכלי לחילוץ צריך לספק יחידות גישה רגילות של AVC/HEVC לטראק הזה. לרצועת ה-BL הזו צריך להיות אותו מזהה ייחודי של רצועה (track-unique-ID, 'track-ID') כמו לרצועת Dolby, כדי שהאפליקציה תבין שמדובר בשני קידודים של אותו סרטון.
- האפליקציה יכולה להחליט איזה טראק לבחור על סמך היכולות של הפלטפורמה.
- מכיוון שלטראק HDR יש סוג HDR ספציפי, המסגרת תבחר ממקודק וידאו של Dolby כדי לפענח את הטראק הזה. הטראק BL יפורש על ידי מפענח וידאו רגיל של AVC/HEVC.
- זרמי ביטים של Dolby מזוהים על ידי DolbyExtractor, שמציג את השכבות השונות כטראק אחד עד שניים לכל טראק וידאו של Dolby (קבוצה):
- DolbyDecoder:
- ה-DolbyDecoder מקבל יחידות גישה שמכילות את יחידות הגישה הנדרשות לכל השכבות (EL+BL+MD או BL+MD)
- אפשר לארוז את המידע של CSD (נתונים ספציפיים לקודק, כמו SPS+PPS+VPS) של השכבות הנפרדות בתוך מסגרת CSD אחת שתוגדר על ידי Dolby. חובה לכלול מסגרת CSD אחת.
פעולות Dolby
- הגדרת האריזה של יחידות הגישה לסכמות הקונטיינר השונות של Dolby (למשל BL+EL+MD) למפענח Dolby המופשט (כלומר פורמט המאגר שציפית למפענח HDR).
- הגדרת האריזה של CSD למפענח Dolby המופשט.
פעולות של ספקים
- הטמעת חילוץ Dolby. גם Dolby יכולה לעשות זאת.
- משלבים את DolbyExtractor במסגרת. נקודת הכניסה היא
frameworks/av/media/libstagefright/MediaExtractor.cpp
. - הצהרה על פרופיל המפענח של HDR ועל סוג OMX ברמה. לדוגמה,
OMX_VIDEO_DOLBYPROFILETYPE
ו-OMX_VIDEO_DOLBYLEVELTYP
. - הטמעת תמיכה ב-'index:
'OMX.google.android.index.describeColorAspects
' - להעביר את המטא-נתונים הדינמיים של HDR לאפליקציה ולמסך בכל פריים. בדרך כלל צריך לארוז את המידע הזה בתוך המסגרת המקודדת כפי שמוגדרת על ידי Dolby, כי תקן HDMI לא מספק דרך להעביר את המידע הזה למסך.
צינור עיבוד נתונים של ממפענח VP9
איור 3. צינור עיבוד נתונים של VP9-PQ
זרמי הביט של VP9 נארזים במאגרי WebM באופן שמוגדר על ידי צוות WebM. באפליקציות צריך להשתמש במחולל WebM כדי לחלץ מטא-נתונים של HDR מזרם הביט לפני שליחת הפריימים למפענח.
- WebM Extractor:
- הכלי WebM Extractor מחלץ את המטא-נתונים והפריימים של HDR מ הקונטיינר.
- ממיר VP9:
- המקודד מקבל זרמי ביט של Profile2 ומפענח אותם כזרמים רגילים של VP9.
- המקודד מקבל מטא-נתונים סטטיים של HDR מהמסגרת.
- המקודד מקבל מטא-נתונים סטטיים דרך יחידות הגישה של מקור הנתונים (bitstream) עבור מקורות נתונים של VP9 PQ.
- למפענח VP9 צריכה להיות אפשרות להעביר את המטא-נתונים הסטטיים או הדינמיים של HDR למסך.
פעולות של ספקים
- הטמעת תמיכה במדד:
OMX.google.android.index.describeHDRColorInfo
- הטמעת תמיכה במדד:
OMX.google.android.index.describeColorAspects
- העברה של מטא-נתונים סטטיים של HDR