HDR ในภาพหน้าจอ Android

นับตั้งแต่เปิดตัววิดีโอ 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 แล้ว GPU รองรับการแสดงผลวิดีโอและภาพหน้าจอ HDR ด้วยโปรแกรมแมปโทนสีเชิงพีชคณิตที่ซับซ้อน เส้นโค้งการปรับโทนสีนี้อาจไม่เท่ากับการปรับโทนสีของจอแสดงผลเสมอไป ดังนั้นภาพหน้าจอจึงแตกต่างจากเนื้อหาบนหน้าจอ

Android 13

ระบบจะเพิ่มปลั๊กอินการปรับโทนสีลงในบล็อกการแสดงผล GPU ของ SurfaceFlinger ซึ่งช่วยให้ OEM ระบุโปรแกรมเปลี่ยนสี GPU ให้ตรงกับเส้นโค้งการปรับโทนสีของจอแสดงผลได้ ภาพหน้าจอเกือบตรงกับสิ่งที่แสดงบนหน้าจอ แต่มีข้อแตกต่างดังนี้

  • ภาพหน้าจอจะยังคงอยู่ในรูปแบบ SDR ดังนั้น เมื่อดูภาพหน้าจอควบคู่ไปกับฉาก HDR บริเวณ HDR ในภาพหน้าจอจะดูสลัวกว่า
  • ระบบไม่ได้จัดการความสว่างของ SDR ส่งผลให้เนื้อหา SDR ในภาพหน้าจอดูสว่างเท่ากับเนื้อหา HDR

กล่าวคือ ระบบจะแปลงวิดีโอ HDR ที่บันทึกไว้ในภาพหน้าจอเป็นวิดีโอ SDR

Android 14

Ultra HDR เป็นปัญหาที่ท้าทายอย่างยิ่งสำหรับการจับภาพหน้าจอ โดยทั่วไปแล้ว รูปภาพจะแสดงผลภายในเฟรมบัฟเฟอร์ 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 ตัวอย่างที่ 1 ใน Android 15qpr

    รูปที่ 1 การเปรียบเทียบ Android 14 กับ Android 15-QPR1 สำหรับตัวอย่างที่ 1

  • ตัวอย่างที่ 2 คือภาพหน้าจอของวิดีโอ HDR ที่วางซ้อนอยู่ด้านบนการตั้งค่าพร้อมภาพหน้าจอที่ตามมา ใน Android 14 สีของภาพหน้าจอจะเข้มขึ้นเรื่อยๆ ใน Android 15-QPR1 เครื่องมือปรับโทนสีจะจำลองและรักษาสี UI ได้อย่างถูกต้อง

    Android 14 Android 15-QPR1
    ตัวอย่างที่ 2 ใน Android 14 ตัวอย่างที่ 2 ใน Android 15qpr

    รูปที่ 2 การเปรียบเทียบ Android 14 กับ Android 15-QPR1 สําหรับตัวอย่างที่ 2