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 สามารถระบุ Shader ของ 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 ประกอบด้วยสิ่งต่อไปนี้

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

รูปภาพต่อไปนี้แสดงเลย์เอาต์ของกลุ่มข้อมูล PNG

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

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

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