วิดีโอ 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 Visionint HDR_TYPE_HDR10
รองรับ HDR10 / PQint 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 เป็นต้นไป แต่โดยทั่วไป กระบวนการจะมีขั้นตอนดังนี้
- กําหนดพื้นที่สี/ปริมาตรเชิงเส้นที่มีเลเยอร์ทั้งหมดให้เป็น
แบบผสมตามเลเยอร์ สี การมาสเตอร์ริ่ง และไดนามิกที่เป็นไปได้
ข้อมูลเมตา
หากประกอบขึ้นไปยังจอแสดงผลโดยตรง ตัวแปรนี้อาจเป็นปริภูมิเชิงเส้น ที่ตรงกับปริมาตรสีของจอแสดงผล - แปลงเลเยอร์ทั้งหมดเป็นพื้นที่สีทั่วไป
- ทำการผสม
- หากแสดงผ่าน HDMI:
- ระบุสี การทำมาสเตอร์ และข้อมูลเมตาแบบไดนามิกที่เป็นไปได้สำหรับ แบบผสมผสาน
- แปลงฉากเบลนด์ที่ได้เป็นสีที่ได้ ในพื้นที่/ระดับเสียง
- หากแสดงไปยังจอแสดงผลโดยตรง ให้แปลงผลลัพธ์ที่ได้จากเบลนด์ เข้ากับสัญญาณการแสดงผลที่จำเป็นเพื่อสร้างฉาก
การค้นหาในเครือข่ายดิสเพลย์
รองรับการค้นพบการแสดงผล 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 ข้อมูลถูกจัดกลุ่มไว้ในรูปแบบเอาต์พุตของตัวถอดรหัส ซึ่งกระจายไปยัง กับพื้นผิวมากขึ้นภายหลัง
การดำเนินการของผู้ให้บริการ
- โฆษณาโปรไฟล์ตัวถอดรหัส HDR และประเภท OMX ระดับที่รองรับ ตัวอย่าง:
OMX_VIDEO_HEVCProfileMain10HDR10
(และMain10
) - ใช้การสนับสนุนสำหรับดัชนี:
"
OMX.google.android.index.describeHDRColorInfo
" - ใช้การสนับสนุนสำหรับดัชนี:
"
OMX.google.android.index.describeColorAspects
" - รองรับการแยกวิเคราะห์ 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 แบบปกติ
- Dolby-bitstreams จะรับรู้โดย DolbyExtractor ซึ่งจะเผยให้เห็น
เลเยอร์ต่างๆ เป็น 1 ถึง 2 แทร็กสำหรับแทร็กวิดีโอแบบ Dolby (กลุ่ม):
- DolbyDecoder:
- DolbyDecoder ได้รับหน่วยการเข้าถึงที่มีการเข้าถึงที่จำเป็น หน่วยสำหรับทุกเลเยอร์ (EL+BL+MD หรือ BL+MD)
- ข้อมูล CSD (ข้อมูลเฉพาะตัวแปลงรหัส เช่น SPS+PPS+VPS) สำหรับฟังก์ชัน แต่ละเลเยอร์สามารถจัดแพ็กเกจลงใน 1 เฟรม 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
- ใช้การสนับสนุนสำหรับดัชนี:
'OMX.google.android.index.describeColorAspects
นาที - เผยแพร่ข้อมูลเมตา HDR แบบไดนามิกไปยังแอปและแสดงผลใน เฟรม โดยปกติแล้วข้อมูลนี้จะต้องรวมอยู่ในเฟรมที่ถอดรหัส ที่กำหนดโดย Dolby เนื่องจากมาตรฐาน HDMI ไม่มีวิธีในการ ส่งข้อมูลนี้ไปยังจอแสดงผล
ไปป์ไลน์ตัวถอดรหัส VP9
รูปที่ 3 ไปป์ไลน์ VP9-PQ
บิตสตรีม VP9 มีการจัดแพ็กเกจในคอนเทนเนอร์ WebM ในลักษณะที่กำหนดโดย WebM ของทีม แอปพลิเคชันต้องใช้เครื่องมือแยก WebM เพื่อดึงข้อมูลเมตา HDR บิตสตรีมก่อนส่งเฟรมไปยังตัวถอดรหัส
- ตัวแยก WebM:
- WebM Extractor จะแยกข้อมูลเมตา HDR และเฟรมจาก คอนเทนเนอร์
- ตัวถอดรหัส VP9:
- ตัวถอดรหัสได้รับบิตสตรีมของ Profile2 และถอดรหัสเป็น VP9 ปกติ สตรีม
- ตัวถอดรหัสได้รับข้อมูลเมตา HDR แบบคงที่ทั้งหมดจากเฟรมเวิร์ก
- ตัวถอดรหัสได้รับข้อมูลเมตาแบบคงที่ผ่านหน่วยการเข้าถึงบิตสตรีมสำหรับ VP9 สตรีม PQ
- ตัวถอดรหัส VP9 ต้องเผยแพร่ข้อมูลเมตาแบบคงที่/ไดนามิกของ HDR ได้ กับจอแสดงผล
การดำเนินการของผู้ให้บริการ
- ใช้การสนับสนุนสำหรับดัชนี:
OMX.google.android.index.describeHDRColorInfo
- ใช้การสนับสนุนสำหรับดัชนี:
OMX.google.android.index.describeColorAspects
- เผยแพร่ข้อมูลเมตา HDR แบบคงที่