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

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

การรองรับ HDR ใน Android

Android รองรับเทคโนโลยี HDR ผ่านเหตุการณ์สำคัญหลายอย่าง ดังนี้

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 ตัวอย่าง 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

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 ซึ่งมีก้อนข้อมูล gmAP ที่มีข้อมูลเมตา ISO 21496-1 สำหรับ Gainmap
  • การแสดงผลฐาน SDR จะได้รับการเข้ารหัสเป็นรูปภาพ PNG ซึ่งมีgmAP Chunk ที่มีข้อมูลเมตาเวอร์ชัน ISO 21496-1 รูปภาพ PNG นี้ยังมี Chunk gdAT ซึ่งมี PNG ของ Gainmap ที่เข้ารหัสทั้งหมด

รูปที่ 1 แสดงเลย์เอาต์ของ Chunk PNG

เลย์เอาต์ของ Chunk PNG

รูปที่ 3 เลย์เอาต์ของ Chunk PNG

ใน Android 16 ตัวแปลงรหัส PNG จะรองรับทั้งการเข้ารหัสและการถอดรหัส PNG เหล่านี้ แอปสามารถแสดง PNG ที่มี Gainmap ในลักษณะเดียวกับ Ultra HDR