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

นับตั้งแต่เปิดตัววิดีโอ High Dynamic Range (HDR) บริการสตรีมมิงก็เริ่มสตรีมวิดีโอ HDR โดยเน้นที่ประสบการณ์การรับชมแบบเต็มหน้าจอ เมื่อเร็วๆ นี้ แอปโซเชียลมีเดียได้เปิดตัวการรองรับวิดีโอ HDR และ Ultra HDR ซึ่งแสดงให้เห็นว่าผู้คนเริ่มให้ความสนใจในการใช้ HDR ในแอปต่างๆ มากขึ้น

ต่อไปนี้คือเหตุการณ์สำคัญในการรองรับเทคโนโลยี 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