ตั้งแต่เปิดตัววิดีโอ High Dynamic Range (HDR) บริการสตรีมมิง ได้เริ่มสตรีมวิดีโอ HDR โดยมุ่งเน้นที่ประสบการณ์แบบเต็มหน้าจอ ล่าสุดแอปโซเชียลมีเดีย ได้เปิดตัวการรองรับวิดีโอ HDR และ Ultra HDR ซึ่งแสดงให้เห็นถึงความสนใจที่เพิ่มขึ้นในการนำ HDR มาใช้ในแอปต่างๆ
การรองรับ HDR ใน Android
ต่อไปนี้คือเหตุการณ์สำคัญในการรองรับเทคโนโลยี HDR ของ Android ในช่วงหลายปีที่ผ่านมา
Android 7
- รองรับการถอดรหัสและการแสดงผลวิดีโอ HDR ในเบื้องต้น
- ความสามารถของ HDR ที่ได้รับการพัฒนาอย่างต่อเนื่อง
Android 13
- รองรับการจับภาพ การเข้ารหัส และการแสดงวิดีโอ HDR ตั้งแต่ต้นจนจบ
- การเปิดตัวการจัดองค์ประกอบ SDR และ HDR แบบผสม ซึ่งกำหนดช่วงความสว่างที่แสดงได้แตกต่างกันระหว่าง SDR และ HDR
Android 14
- รองรับรูปภาพ HDR ด้วย Ultra HDR
การรองรับภาพหน้าจอด้วย HDR ก็ได้รับการพัฒนาและมีการเปลี่ยนแปลงหลายอย่าง ในช่วงหลายปีที่ผ่านมาเช่นกัน
ความสามารถในการถ่ายภาพหน้าจอ HDR ที่ได้รับการปรับปรุง
ส่วนนี้จะติดตามความคืบหน้าของความสามารถในการถ่ายภาพหน้าจอ HDR ในการอัปเดต Android ล่าสุด
Android 9
SurfaceFlinger ซึ่งเป็นตัวจัดองค์ประกอบกราฟิกของ Android ได้เปิดตัวการรองรับวิดีโอ HDR การแสดงผลวิดีโอและภาพหน้าจอ HDR ด้วย GPU รองรับการใช้ตัวแมปโทนพหุนามที่ซับซ้อน เส้นโค้งการแมปโทนนี้ไม่ได้เทียบเท่ากับแมปเปอร์โทนของจอแสดงผลเสมอไป ดังนั้นภาพหน้าจอจึงแตกต่างจากเนื้อหาบนหน้าจอ
Android 13
มีการเพิ่มปลั๊กอินการแมปโทนลงในบล็อกการแสดงผล GPU ของ SurfaceFlinger ซึ่งช่วยให้ OEM สามารถจัดหาเชเดอร์ GPU เพื่อให้ตรงกับเส้นโค้งการแมปโทนของจอแสดงผล ภาพหน้าจอจะตรงกับสิ่งที่อยู่บนหน้าจอเกือบทั้งหมด แต่จะมีความแตกต่างดังนี้
- ภาพหน้าจอจะยังคงอยู่ในรูปแบบ SDR ดังนั้น เมื่อดูควบคู่ไปกับฉาก HDR พื้นที่ HDR ภายในภาพหน้าจอจะดูสว่างน้อยลง
- ระบบไม่ได้จัดการความสว่างของ SDR จึงทำให้เนื้อหา SDR ภายในภาพหน้าจอ ดูสว่างเท่ากับเนื้อหา HDR
กล่าวคือ ระบบจะแปลงวิดีโอ HDR ที่บันทึกในภาพหน้าจอเป็นวิดีโอ SDR
Android 14
Ultra HDR เป็นความท้าทายที่สำคัญในการถ่ายภาพหน้าจอ โดยทั่วไปแล้ว ระบบจะแสดงผลรูปภาพภายใน Framebuffer ของ UI ซึ่งมีผลกระทบหลัก 2 ประการ ดังนี้
- รูปภาพต้องไม่มีการประมวลผลรูปภาพ ซึ่งรวมถึงการแมปโทน ที่แตกต่างจาก UI โดยรอบ
- แอปมีหน้าที่รับผิดชอบในการแมปโทนตามแหล่งที่มาเมื่อแสดงผล UI
การแก้ปัญหานี้ทำได้ 3 วิธีในการใช้ภาพหน้าจอ
- คงรายละเอียด HDR ของรูปภาพ Ultra HDR ไว้ ซึ่งจะส่งผลให้ UI ของแอปในภาพหน้าจอมืดลง
- คงรายละเอียด UI ของแอปไว้ ซึ่งทำให้เกิดการครอบตัดรูปภาพ Ultra HDR
- โดยการเพิ่มความสว่างให้กับ UI ของแอปขณะที่ตัดไฮไลต์ HDR
Android 14 ใช้แนวทางที่ 3 ในการทำให้ UI ของแอปสว่างขึ้นและตัด ไฮไลต์ HDR
Android 15-QPR1
SurfaceFlinger มีอัลกอริทึมการแมปโทนสีเฉพาะสำหรับภาพหน้าจอ กระบวนการนี้ประกอบด้วยขั้นตอนต่อไปนี้
- การแบ่งรูปภาพอินพุตออกเป็นรูปภาพที่เล็กลง
- คำนวณความสว่างสูงสุดในแต่ละภาพ และทิ้งค่าความสว่างต่ำ ในแต่ละส่วน
- การประมาณค่าความสว่างที่คำนวณแล้วผ่านการเบลอและการสุ่มตัวอย่างใหม่
- ใช้ตัวแมปโทน Reinhard ที่มีพารามิเตอร์กับรูปภาพอินพุตโดยอิงตามค่าความสว่างที่ประมาณ
อัลกอริทึมนี้แสดงการปรับปรุงภาพหน้าจอที่สำคัญระหว่าง Android 14 กับ Android 15-QPR1 ดังตัวอย่างต่อไปนี้
ตัวอย่างที่ 1 คือภาพหน้าจอของวิดีโอ HDR ที่ซ้อนทับอยู่บนหน้า Chrome ซึ่งมี Ultra HDR โดยสีของ UI ส่วนใหญ่จะยังคงอยู่ใน การติดตั้งใช้งานใหม่ และระบบจะไม่ครอบตัดรูปภาพอีกต่อไป
Android 14 Android 15-QPR1 รูปที่ 1 การเปรียบเทียบ Android 14 กับ Android 15-QPR1 สำหรับตัวอย่างที่ 1
ตัวอย่างที่ 2 คือภาพหน้าจอของวิดีโอ HDR ที่ซ้อนทับอยู่ด้านบนการตั้งค่า พร้อมภาพหน้าจอที่ตามมา ใน Android 14 สีของภาพหน้าจอจะ เข้มขึ้นเรื่อยๆ ใน Android 15-QPR1 ตัวทำแผนที่โทนจะจำลองและ รักษาค่าสีของ UI ได้อย่างถูกต้อง
Android 14 Android 15-QPR1 รูปที่ 2 การเปรียบเทียบ Android 14 กับ Android 15-QPR1 สำหรับตัวอย่างที่ 2
Android 16
ภาพหน้าจอ HDR จะจัดเก็บ Gainmap ไว้ในไฟล์ภาพหน้าจอเพื่อกู้คืนการแสดงผล HDR ระหว่างการเรนเดอร์ ซึ่งคล้ายกับ Ultra HDR อย่างไรก็ตาม ภาพหน้าจอจะยังคงอยู่ในรูปแบบ PNG เพื่อให้เข้ากันได้กับระบบที่รับภาพหน้าจอ PNG ซึ่งแตกต่างจาก Ultra HDR
รายละเอียดการสร้างภาพหน้าจอมีดังนี้
- เมื่อแสดงเนื้อหา HDR บนอุปกรณ์ ระบบจะสร้างภาพหน้าจอโดยใช้ พิกเซล FP16
- เครื่องมือแมปโทนในเครื่องที่อธิบายไว้ใน Android 15-QPR1 สร้างการแสดงผล SDR พื้นฐานแบบ 8 บิต
- Gainmap 8 บิตเกิดจากการรวมการแสดงผลฐาน SDR กับการแสดงผล HDR
- ระบบจะเข้ารหัสการแสดงผลพื้นฐาน SDR และ Gainmap เป็นไฟล์ PNG ไฟล์เดียว
รายละเอียดการเข้ารหัส PNG มีดังนี้
- Gainmap จะได้รับการเข้ารหัสเป็นรูปภาพ PNG ซึ่งมี Chunk gmAP ที่มีข้อมูลเมตา ISO 21496-1 สำหรับ Gainmap
- การแสดงผลพื้นฐานของ SDR จะได้รับการเข้ารหัสเป็นรูปภาพ PNG ซึ่งมี Chunk gmAP ที่มีข้อมูลเมตาเวอร์ชัน ISO 21496-1 รูปภาพ PNG นี้ยังมี Chunk gdAT ซึ่งมี PNG ของ Gainmap ที่เข้ารหัสทั้งหมด
รูปที่ 1 แสดงเลย์เอาต์ของ Chunk PNG
รูปที่ 3 เลย์เอาต์ของ Chunk PNG
ใน Android 16 ตัวแปลงรหัส PNG จะรองรับทั้งการเข้ารหัส และการถอดรหัส PNG เหล่านี้ แอปสามารถแสดง PNG ที่มี Gainmap ในลักษณะเดียวกับ Ultra HDR