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

סרטונים בטווח דינמי גבוה (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 בפורמט הפלט, והם עשויים להשתנות בכל פריים של הפלט. מידע נוסף זמין במאמר בנושא מנהור מולטימדיה.

החל מ-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 הוא תומך בהם ופרטים על נתוני הבהירות הרצויים.

Constants:

  • 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:

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

ריכזנו כאן כמה שינויים חשובים בפלטפורמה (אפליקציה/שכבת Native) שיצרני ציוד מקורי (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 גמא מסורתי – טווח בהירות SDR: לא ממופה לאף סוג HDR
    • ‫ET_1 גמא מסורתי – טווח בהירות HDR: לא ממופה לאף סוג HDR
    • ‫ET_2 SMPTE ST 2084 – ממופה לסוג HDR‏ 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, כדי לאתחל את קובצי ה-codec הבסיסיים במהלך ההגדרה. אם מפענח 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 כדי לחלץ את הנתונים מהקובץ.
  • הכלי לחילוץ 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 מזוהים כזרם 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. הטמעה של תמיכה באינדקס: 'OMX.google.android.index.describeHDRColorInfo'
  3. הטמעה של תמיכה באינדקס: 'OMX.google.android.index.describeColorAspects'
  4. הטמעת תמיכה בניתוח SEI של מטא-נתונים של מאסטרינג.

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

איור 2. צינור Dolby Vision

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

  • DolbyExtractor:
    • ‫DolbyExtractor מזהה זרמי נתונים של Dolby, ומציג את השכבות השונות כטראק אחד או שניים לכל טראק וידאו של Dolby (קבוצה):
      • ‫HDR track עם הסוג video/dolby-vision לשידור Dolby המשולב של 2/3 שכבות. פורמט יחידת הגישה של רצועת ה-HDR, שמגדיר איך לארוז את יחידות הגישה משכבות הבסיס, השיפור והמטא-נתונים לתוך מאגר יחיד שיפוענח למסגרת HDR יחידה, מוגדר על ידי Dolby.
      • (אופציונלי, רק אם שכבת הבסיס תואמת לאחור) טראק של שכבת בסיס מכיל רק את שכבת הבסיס, שצריכה להיות ניתנת לפענוח על ידי מפענח 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 במסגרת. נקודת הכניסה היא frameworks/av/media/libstagefright/MediaExtractor.cpp.
  3. הצהרה על פרופיל ומפלס של מפענח HDR מסוג OMX. לדוגמה: OMX_VIDEO_DOLBYPROFILETYPE ו-OMX_VIDEO_DOLBYLEVELTYP.
  4. הטמעת תמיכה באינדקס: 'OMX.google.android.index.describeColorAspects'
  5. הפצת המטא-נתונים של ה-HDR הדינמי לאפליקציה ולמשטח בכל פריים. בדרך כלל, צריך לארוז את המידע הזה בפריים המפוענח, כפי שמוגדר על ידי Dolby, כי תקן ה-HDMI לא מספק דרך להעביר את המידע הזה לתצוגה.

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

איור 3. צינור עיבוד נתונים של VP9-PQ

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

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

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

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