การเล่นวิดีโอ HDR

วิดีโอ High Dynamic Range (HDR) ก้าวไปอีกขั้นด้วยคุณภาพสูง การถอดรหัสวิดีโอ ซึ่งช่วยให้เกิดคุณภาพการสร้างฉากที่ไม่มีใครเทียบได้ ใช่เลย ดังนั้นโดยการเพิ่มช่วงไดนามิกของคอมโพเนนต์ความสว่างขึ้นอย่างมาก (จาก 100 cd/m2 ในปัจจุบันถึง 1,000 วินาทีของ cd/m2) และโดยการใช้แท็ก พื้นที่สี (BT 2020) ซึ่งตอนนี้กลายเป็นองค์ประกอบสำคัญของวิวัฒนาการของ 4K UHD ในพื้นที่ทีวี

Android 10 รองรับวิดีโอ HDR ต่อไปนี้

  • HDR10
  • VP9
  • HDR10+

ตั้งแต่ Android 9 ขึ้นไป MediaCodec จะรายงานข้อมูลเมตา HDR โดยไม่คำนึงถึงโหมด Tunnel คุณรับข้อมูลที่ถอดรหัสพร้อมกับข้อมูลเมตาแบบคงที่/แบบไดนามิกได้ในโหมดที่ไม่มีการเชื่อมต่อ สำหรับ 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 ผ่าน Tunnel เท่านั้น แต่อุปกรณ์อาจเพิ่มการรองรับการเล่น HDR บน SurfaceViews โดยใช้โหมดทึบแสง บัฟเฟอร์วิดีโอ กล่าวคือ

  • ไม่มี Android API มาตรฐานเพื่อตรวจสอบว่ารองรับการเล่นแบบ HDR หรือไม่ โดยใช้ตัวถอดรหัสที่ไม่ได้ทำ Tunnel
  • ตัวถอดรหัสวิดีโอแบบ Tunneel ที่โฆษณาความสามารถในการเล่นแบบ HDR รองรับการเล่นแบบ HDR เมื่อเชื่อมต่อกับจอแสดงผลที่รองรับ HDR
  • AOSP Android ไม่รองรับองค์ประกอบ GL ของเนื้อหา HDR รุ่น 7.0

Discovery

การเล่นแบบ HDR ต้องใช้ตัวถอดรหัสที่รองรับ HDR และเชื่อมต่อกับ จอแสดงผลที่รองรับ HDR เทคโนโลยีบางอย่างจำเป็นต้องมี เครื่องมือแยกข้อมูล

จอแสดงผล

แอปพลิเคชันต้องใช้ Display.getHdrCapabilities ใหม่ API สำหรับค้นหาเทคโนโลยี 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
    การรองรับ Log-Gamma แบบไฮบริด
  • float INVALID_LUMINANCE
    ค่าความสว่างไม่ถูกต้อง

วิธีการสาธารณะ

  • float getDesiredMaxAverageLuminance()
    แสดงผลข้อมูลความสว่างเฉลี่ยเฟรมสูงสุดของเนื้อหาที่ต้องการใน cd/cd/m2 สำหรับ จอแสดงผลนี้
  • float getDesiredMaxLuminance()
    แสดงผลข้อมูลความสว่างสูงสุดของเนื้อหาที่ต้องการใน cd/cd/m2 สำหรับจอแสดงผลนี้
  • float getDesiredMinLuminance()
    แสดงผลข้อมูลความสว่างขั้นต่ำของเนื้อหาที่ต้องการใน cd/cd/m2 สำหรับจอแสดงผลนี้
  • int[] getSupportedHdrTypes()
    รับประเภท HDR ที่รองรับของจอแสดงผลนี้ (ดูค่าคงที่) แสดงผลเป็นค่าว่าง หากจอแสดงผลไม่รองรับ HDR

ตัวถอดรหัส

แอปพลิเคชันต้องใช้ CodecCapabilities.profileLevels API เพื่อยืนยันการรองรับ โปรไฟล์ใหม่ที่รองรับ HDR

พร้อม Dolby-Vision

ค่าคงที่ของ MediaFormat:

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

เฉพาะตัวถอดรหัสแบบ Tunnel เท่านั้นที่จะเล่นเนื้อหา 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 HEVCโปรไฟล์หลัก10HDR10 VP9Profile2HDR หรือ VP9โปรไฟล์3HDR VP9Profile2HDR หรือ VP9โปรไฟล์3HDR

หมายเหตุ:

  • บิตสตรีมของ Dolby-Vision ได้รับการบรรจุไว้ในภาชนะบรรจุ MP4 ในลักษณะที่กำหนดไว้ ของ Dolby แอปพลิเคชันอาจติดตั้งใช้งานเครื่องมือแยกสัญญาณ Dolby ของตนเองในฐานะ ตราบใดที่โมเดลเหล่านั้นสร้างแพ็กเกจหน่วยการเข้าถึงจากเลเยอร์ที่เกี่ยวข้องลงใน หน่วยการเข้าถึงเดี่ยวสำหรับตัวถอดรหัสที่กำหนดโดย Dolby
  • แพลตฟอร์มอาจรองรับเครื่องมือแยกข้อมูลที่รองรับ HDR แต่ไม่รองรับ ตัวถอดรหัสที่รองรับ HDR

การเล่น

หลังจากแอปพลิเคชันยืนยันการรองรับการเล่นแบบ HDR แล้ว แอปพลิเคชันจะสามารถเล่นได้ ย้อนกลับเนื้อหา HDR เกือบจะในลักษณะเดียวกับการเล่นเนื้อหาที่ไม่ใช่ HDR พร้อมกับข้อควรระวังต่อไปนี้

  • สำหรับ Dolby-Vision ไม่ว่าไฟล์/แทร็กสื่อที่เจาะจงต้องใช้หรือไม่ก็ตาม ตัวถอดรหัสที่รองรับ HDR ไม่พร้อมใช้งานทันที แอปพลิเคชันต้อง ข้อมูลนี้ล่วงหน้าหรือสามารถรับข้อมูลนี้ได้โดย การแยกวิเคราะห์ส่วนข้อมูลเฉพาะตัวแปลงรหัสของ MediaFormat
  • CodecCapabilities.isFormatSupported ไม่ได้พิจารณาว่า และจำเป็นต้องใช้ฟีเจอร์ตัวถอดรหัสแบบ Tunnel เพื่อให้รองรับโปรไฟล์ดังกล่าว

เปิดใช้การรองรับแพลตฟอร์ม 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

  • โฆษณา Display แบบ HDMI ที่เชื่อมต่ออยู่ ความสามารถ HDR ของตนผ่าน HDMI EDID ตามที่กำหนดไว้ใน CTA-861.3 ส่วนที่ 4.2
  • ควรใช้การแมป EOTF ดังต่อไปนี้
    • ET_0 แกมมาแบบดั้งเดิม - SDR Luminance Range: ไม่ได้แมปกับ HDR ใดๆ ประเภท
    • ET_1 แกมมาแบบดั้งเดิม - HDR ช่วงความสว่าง: ไม่ได้แมปกับ HDR ใดๆ ประเภท
    • ET_2 SMPTE ST 2084 - แมปกับประเภท HDR HDR10
  • การส่งสัญญาณ Dolby Vision หรือ HLG ผ่าน HDMI เป็นไปตามที่กำหนดไว้ ตามองค์ประกอบที่เกี่ยวข้อง
  • โปรดทราบว่า HWC2 API จะใช้ค่าความสว่างที่ต้องการแบบลอย ดังนั้นค่า 8 บิต ค่า EDID ต้องได้รับการแปลในลักษณะที่เหมาะสม

ตัวถอดรหัส

แพลตฟอร์มต้องเพิ่มตัวถอดรหัสแบบอุโมงค์ข้อมูลที่รองรับ HDR และโฆษณา HDR ของตน การสนับสนุน โดยทั่วไปแล้ว ตัวถอดรหัสที่รองรับ HDR ต้องมีคุณสมบัติดังนี้

  • รองรับการถอดรหัส Tunnel (FEATURE_TunneledPlayback)
  • รองรับข้อมูลเมตา HDR แบบคงที่ (OMX.google.android.index.describeHDRColorInfo) และ การเผยแพร่ไปยังองค์ประกอบของจอแสดงผล/ฮาร์ดแวร์ สำหรับ HLG ข้อมูลเมตาที่เหมาะสม ลงในจอแสดงผล
  • รองรับคำอธิบายสี (OMX.google.android.index.describeColorAspects) และ การเผยแพร่ไปยังองค์ประกอบของจอแสดงผล/ฮาร์ดแวร์
  • รองรับข้อมูลเมตา HDR ที่ฝังอยู่ตามที่กำหนดโดยมาตรฐานที่เกี่ยวข้อง

รองรับตัวถอดรหัส Dolby Vision

แพลตฟอร์มต้องเพิ่ม Dolby-Vision เพื่อรองรับ Dolby Vision ตัวถอดรหัส HDR OMX จากลักษณะเฉพาะของ Dolby Vision โดยทั่วไปแล้ว ตัวถอดรหัส Wrapper รอบๆ ตัวถอดรหัส AVC และ/หรือ HEVC อย่างน้อย 1 ตัว รวมถึง compositor โดยตัวถอดรหัสดังกล่าวต้องมีลักษณะดังนี้

  • รองรับ MIME ประเภท "video/dolby-vision"
  • โปรไฟล์/ระดับ Dolby Vision ที่รองรับสำหรับโฆษณา
  • ยอมรับหน่วยการเข้าถึงที่มีหน่วยการเข้าถึงย่อยของเลเยอร์ทั้งหมดเป็น ที่กำหนดโดย Dolby
  • ยอมรับข้อมูลเฉพาะตัวแปลงรหัสที่กำหนดโดย Dolby ตัวอย่างเช่น ข้อมูลที่มี โปรไฟล์/ระดับ Dolby Vision และอาจรวมถึงข้อมูลของตัวแปลงรหัสสำหรับ ตัวถอดรหัสภายใน
  • รองรับการสลับระหว่างโปรไฟล์/ระดับ Dolby Vision แบบปรับอัตโนมัติตาม ที่ Dolby ต้องใช้

เมื่อกำหนดค่าตัวถอดรหัส จะไม่มีการสื่อสารโปรไฟล์ Dolby จริง ตัวแปลงรหัส การดำเนินการนี้ทำผ่านข้อมูลเฉพาะตัวแปลงรหัสที่อยู่หลังตัวถอดรหัสเท่านั้น ได้เริ่มต้นใช้งานแล้ว แพลตฟอร์มหนึ่งสามารถเลือกที่จะรองรับ Dolby Vision หลายตัว ตัวถอดรหัส: ตัวถอดรหัสสำหรับโปรไฟล์ AVC และอีกรายการหนึ่งสำหรับโปรไฟล์ HEVC เริ่มต้นตัวแปลงรหัสที่สำคัญในระหว่างการกำหนดค่า หากเป็น Dolby Vision แบบเดี่ยว ตัวถอดรหัสรองรับโปรไฟล์ทั้ง 2 ประเภท และต้องรองรับการสลับ แบบไดนามิกในลักษณะที่ปรับเปลี่ยนได้

หากแพลตฟอร์มมีตัวถอดรหัสที่รองรับ Dolby-Vision นอกเหนือจาก รองรับตัวถอดรหัส HDR ทั่วไป โค้ดนี้ต้องมีลักษณะดังนี้

  • จัดหาเครื่องมือแยกสัญญาณ Dolby-Vision แม้ว่าจะไม่รองรับ การเล่นแบบ HDR
  • จัดเตรียมตัวถอดรหัสที่รองรับโปรไฟล์การมองเห็นตามที่ Dolby กำหนด

รองรับตัวถอดรหัส HDR10

แพลตฟอร์มต้องเพิ่มตัวถอดรหัส OMX ที่รองรับ HDR10 จึงจะรองรับ HDR10 ได้ ช่วงเวลานี้ โดยปกติจะเป็นตัวถอดรหัส HEVC แบบ Tunnel ซึ่งรองรับการแยกวิเคราะห์และการจัดการด้วย ข้อมูลเมตาที่เกี่ยวข้องกับ HDMI ตัวถอดรหัสดังกล่าว (นอกเหนือจากตัวถอดรหัส HDR ทั่วไป support) ต้องมีลักษณะดังนี้

  • รองรับ MIME ประเภท "video/hevc"
  • HEVCMain10HDR10 ที่รองรับการโฆษณา การสนับสนุนโปรไฟล์ HEVCMain10HRD10 ยังต้องรองรับโปรไฟล์ HEVCMain10 ด้วย โดยต้องรองรับ โปรไฟล์ HEVCMain ในระดับเดียวกัน
  • รองรับการแยกวิเคราะห์บล็อก SEI การมาสเตอร์ริ่ง รวมถึง HDR อื่นๆ ข้อมูลที่เกี่ยวข้องใน SPS

รองรับตัวถอดรหัส VP9

หากต้องการรองรับ VP9 HDR แพลตฟอร์มจะต้องเพิ่ม HDR OMX ที่รองรับ VP9 Profile2 ตัวถอดรหัส โดยปกติจะเป็นตัวถอดรหัส VP9 แบบ Tunnel ซึ่งรองรับการจัดการด้วย ข้อมูลเมตาที่เกี่ยวข้องกับ HDMI ตัวถอดรหัสดังกล่าว (นอกเหนือจากตัวถอดรหัส HDR ทั่วไป support) ต้องมีลักษณะดังนี้

  • รองรับ MIME ประเภท "video/x-vnd.on2.vp9"
  • VP9Profile2HDR ที่รองรับการโฆษณา รองรับโปรไฟล์ VP9Profile2HDR ด้วย ต้องมีการรองรับโปรไฟล์ VP9Profile2 ในระดับเดียวกัน

เครื่องมือแยกข้อมูล

รองรับตัวแยกสัญญาณ Dolby Vision

แพลตฟอร์มที่รองรับตัวถอดรหัส Dolby Vision ต้องเพิ่มตัวแยก Dolby (เรียกว่า Dolby Extractor) เพื่อรองรับเนื้อหา Dolby Video

  • เครื่องมือแยก MP4 ปกติสามารถแยกเลเยอร์ฐานจากไฟล์เท่านั้น แต่ไม่ใช่เลเยอร์การเพิ่มประสิทธิภาพหรือข้อมูลเมตา ดังนั้นเครื่องมือแยก Dolby แบบพิเศษ ที่จำเป็นในการดึงข้อมูลจากไฟล์
  • เครื่องมือแยกสัญญาณ Dolby ต้องแสดงแทร็กวิดีโอ Dolby 1 ต่อ 2 แทร็ก (กลุ่ม):
    • แทร็ก HDR ของ Dolby Vision ประเภท "วิดีโอ/dolby-vision" สำหรับ รวมสตรีม Dolby 2/3 ชั้น รูปแบบหน่วยการเข้าถึงของแทร็ก HDR กำหนดวิธีการจัดแพ็กเกจหน่วยการเข้าถึงจากฐาน/การเพิ่มประสิทธิภาพ/ข้อมูลเมตา เลเยอร์ลงในบัฟเฟอร์เดียวเพื่อถอดรหัสเป็นเฟรม HDR เดียว ที่กำหนดโดย Dolby
    • หากแทร็กวิดีโอของ Dolby Vision มีแทร็กแยกต่างหาก (เข้ากันได้แบบย้อนหลัง) เลเยอร์ฐาน (BL) เครื่องมือแยกข้อมูลต้องแสดงสิ่งนี้เป็น "วิดีโอ/avc" แยกต่างหากด้วย หรือ "video/hevc" ติดตาม เครื่องมือแยกข้อมูลต้องให้สิทธิ์เข้าถึง AVC/HEVC เป็นประจำ หน่วยสำหรับแทร็กนี้
    • แทร็ก BL ต้องมีรหัสแทร็กที่ไม่ซ้ำ ("track-ID") เดียวกันกับ แทร็ก HDR เพื่อให้แอปเข้าใจว่านี่เป็นการเข้ารหัส 2 แบบ ในการสร้างสรรค์วิดีโอ
    • แอปพลิเคชันสามารถเลือกได้ว่าจะเลือกแทร็กใดโดยพิจารณาจากแพลตฟอร์ม แบบพื้นฐาน
  • โปรไฟล์/ระดับ Dolby Vision ต้องแสดงในรูปแบบแทร็กของ แทร็ก HDR
  • หากแพลตฟอร์มใดมีตัวถอดรหัสที่รองรับ Dolby-Vision แพลตฟอร์มนั้นต้องมี เครื่องมือแยกการรับรู้ Dolby-Vision แม้ว่าจะไม่รองรับการเล่น HDR ก็ตาม

รองรับเครื่องมือแยก HDR 10 และ VP9

โดยไม่มีข้อกำหนดเพิ่มเติมเกี่ยวกับเครื่องมือแยกข้อมูลเพื่อรองรับ HDR10 หรือ VP9 HLG แพลตฟอร์มต้องขยายเครื่องมือแยก MP4 เพื่อรองรับ VP9 PQ ใน MP4 HDR ข้อมูลเมตาแบบคงที่ต้องเผยแพร่ในบิตสตรีม PQ ของ VP9 ไปยังตัวถอดรหัส PQ ของ VP9 และแสดงผลผ่าน MediaExtractor => ไปป์ไลน์ MediaCodec

ส่วนขยาย Stagefright สำหรับการรองรับ Dolby Vision

แพลตฟอร์มต้องเพิ่มการรองรับรูปแบบ Dolby Vision ไปยัง Stagefright ดังนี้

  • รองรับการค้นหาคำจำกัดความของพอร์ตสำหรับพอร์ตที่บีบอัด
  • การแจกแจงโปรไฟล์/ระดับการสนับสนุนสำหรับตัวถอดรหัส DV
  • สนับสนุนการแสดงโปรไฟล์/ระดับ DV สำหรับแทร็ก HDR ของ DV

รายละเอียดการใช้งานเฉพาะเทคโนโลยี

ไปป์ไลน์ตัวถอดรหัส HDR10

รูปที่ 1 ไปป์ไลน์ HDR10

บิตสตรีม HDR10 จะรวมอยู่ในคอนเทนเนอร์ MP4 แอปพลิเคชันใช้บรรทัด เครื่องมือแยก MP4 เพื่อแยกข้อมูลเฟรมและส่งไปยังตัวถอดรหัส

  • ตัวแยก MPEG4
    ระบบจะรู้จักบิตสตรีม HDR10 ว่าเป็นสตรีม HEVC ปกติโดย MPEG4Extractor และแทร็ก HDR ที่มีประเภทเป็น "video/HEVC" จะ แยกออกมาแล้ว เฟรมเวิร์กจะเลือกตัวถอดรหัสวิดีโอ HEVC ที่รองรับ โปรไฟล์ Main10HDR10 เพื่อถอดรหัสแทร็กดังกล่าว
  • ตัวถอดรหัส HEVC
    ข้อมูล 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-bitstreams อยู่ในแพ็กเกจที่บรรจุ MP4 ตามที่กำหนดโดย Dolby ในทางทฤษฎี แอปพลิเคชันอาจใช้ตัวแยก MP4 ปกติในการดึงข้อมูล เลเยอร์ฐาน เลเยอร์การเพิ่มประสิทธิภาพ และเลเยอร์ข้อมูลเมตาโดยแยกจากกัน อย่างไรก็ตาม ตัวเลือกนี้ไม่พอดีกับโมเดล Android MediaExtractor/MediaCodec ปัจจุบัน

  • DolbyExtractor:
    • Dolby-bitstreams จะรับรู้โดย DolbyExtractor ซึ่งจะเผยให้เห็น เลเยอร์ต่างๆ เป็น 1 ถึง 2 แทร็กสำหรับแทร็กวิดีโอแบบ Dolby (กลุ่ม):
      • แทร็ก HDR ที่มีประเภทเป็น "video/dolby-vision" สำหรับทั้ง การสตรีมแบบ Dolby แบบ 2/3 ชั้น รูปแบบหน่วยการเข้าถึงของแทร็ก HDR ซึ่งกำหนด วิธีทำแพ็กเกจหน่วยการเข้าถึงจากเลเยอร์ฐาน/การเพิ่มประสิทธิภาพ/ข้อมูลเมตา ลงในบัฟเฟอร์เดียวเพื่อถอดรหัสเป็นเฟรม HDR เดียว มีการกำหนด ของ Dolby
      • (ไม่บังคับ เฉพาะกรณีที่ BL ใช้ร่วมกันได้) แทร็ก BL มี เฉพาะเลเยอร์ฐานเท่านั้น ซึ่งจะต้องถอดรหัส MediaCodec ปกติได้ เช่น ตัวถอดรหัส AVC/HEVC เครื่องมือแยกข้อมูลควรมี AVC/HEVC แบบปกติ หน่วยการเข้าถึงสำหรับแทร็กนี้ แทร็ก BL นี้ต้องมีรหัสแทร็กที่ไม่ซ้ำกัน ("track-ID") เป็นแทร็ก Dolby เพื่อให้แอปพลิเคชันเข้าใจว่า เป็นการเข้ารหัส 2 แบบของวิดีโอเดียวกัน
    • แอปพลิเคชันสามารถเลือกได้ว่าจะเลือกแทร็กใด โดยพิจารณาจากแท็ก แบบพื้นฐาน
    • เนื่องจากแทร็ก HDR เป็นประเภท HDR ที่เฉพาะเจาะจง เฟรมเวิร์กจะเลือก ตัวถอดรหัสวิดีโอ Dolby เพื่อถอดรหัสแทร็กนั้น แทร็ก BL จะได้รับการถอดรหัสด้วย โปรแกรมถอดรหัสวิดีโอ AVC/HEVC แบบปกติ
  • DolbyDecoder:
    • DolbyDecoder ได้รับหน่วยการเข้าถึงที่มีการเข้าถึงที่จำเป็น หน่วยสำหรับทุกเลเยอร์ (EL+BL+MD หรือ BL+MD)
    • ข้อมูล CSD (ข้อมูลเฉพาะตัวแปลงรหัส เช่น SPS+PPS+VPS) สำหรับฟังก์ชัน แต่ละเลเยอร์สามารถจัดแพ็กเกจลงใน 1 เฟรม 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:
  • ตัวถอดรหัส VP9:
    • ตัวถอดรหัสได้รับบิตสตรีมของ Profile2 และถอดรหัสเป็น VP9 ปกติ สตรีม
    • ตัวถอดรหัสได้รับข้อมูลเมตา HDR แบบคงที่ทั้งหมดจากเฟรมเวิร์ก
    • ตัวถอดรหัสได้รับข้อมูลเมตาแบบคงที่ผ่านหน่วยการเข้าถึงบิตสตรีมสำหรับ VP9 สตรีม PQ
    • ตัวถอดรหัส VP9 ต้องเผยแพร่ข้อมูลเมตาแบบคงที่/ไดนามิกของ HDR ได้ กับจอแสดงผล

การดำเนินการของผู้ให้บริการ

  1. ใช้การสนับสนุนสำหรับดัชนี: OMX.google.android.index.describeHDRColorInfo
  2. ใช้การสนับสนุนสำหรับดัชนี: OMX.google.android.index.describeColorAspects
  3. เผยแพร่ข้อมูลเมตา HDR แบบคงที่