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

Android 16

ภาพหน้าจอ HDR จะจัดเก็บแผนที่การขยายสัญญาณในไฟล์ภาพหน้าจอเพื่อกู้คืนการแสดงผล HDR ในระหว่างการแสดงผล ซึ่งคล้ายกับ Ultra HDR อย่างไรก็ตาม ภาพหน้าจอจะยังคงอยู่ในรูปแบบ PNG เพื่อใช้งานร่วมกับระบบที่นำเข้าภาพหน้าจอ PNG ได้ย้อนหลัง ซึ่งแตกต่างจาก Ultra HDR

รายละเอียดการสร้างภาพหน้าจอมีดังนี้

  • เมื่อเนื้อหา HDR แสดงบนอุปกรณ์ ระบบจะสร้างภาพหน้าจอโดยใช้พิกเซล FP16
  • โปรแกรมเปลี่ยนโทนระดับท้องถิ่นที่อธิบายไว้ใน Android 15-QPR1 จะสร้างการแสดงผล SDR พื้นฐาน 8 บิต
  • แผนที่การขยายสัญญาณ 8 บิตสร้างขึ้นโดยการรวมการแสดงผลพื้นฐาน SDR เข้ากับการแสดงผล HDR
  • ระบบจะเข้ารหัสการแสดงผลพื้นฐาน SDR และแผนที่การขยายเป็นไฟล์ PNG ไฟล์เดียว

รายละเอียดการเข้ารหัส PNG มีดังนี้

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

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

เลย์เอาต์ของข้อมูลโค้ด PNG

รูปที่ 3 เลย์เอาต์ของข้อมูลโค้ด PNG

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