Setelah diperkenalkannya video rentang dinamis tinggi (HDR), layanan streaming mulai menayangkan video HDR, dengan berfokus pada pengalaman layar penuh. Aplikasi media sosial kini mendukung video HDR dan Ultra HDR, yang menunjukkan minat yang meningkat terhadap adopsi HDR di berbagai aplikasi.
Dukungan Android untuk HDR
Android telah mendukung teknologi HDR melalui beberapa pencapaian:
Android 7
- Dukungan awal untuk decoding dan tampilan video HDR.
- Peningkatan berkelanjutan dalam kemampuan HDR.
Android 13
- Dukungan menyeluruh untuk perekaman, encoding, dan tampilan video HDR.
- Memperkenalkan Komposisi SDR dan HDR campuran, yang menentukan rentang luminans yang dapat ditampilkan berbeda antara SDR dan HDR.
Android 14
- Dukungan untuk gambar HDR dengan Ultra HDR.
Dukungan screenshot HDR juga telah berkembang dan berubah.
Peningkatan kemampuan screenshot HDR
Bagian ini menjelaskan perkembangan kemampuan screenshot HDR dalam update Android.
Android 9
SurfaceFlinger, compositor grafis Android, memperkenalkan dukungan video HDR. Rendering GPU untuk video dan screenshot HDR menggunakan pemeta nada polinomial yang kompleks. Kurva pemetaan warna ini tidak selalu setara dengan pemeta warna layar, sehingga screenshot berbeda dengan konten di layar.
Android 13
Blok rendering GPU SurfaceFlinger mencakup plugin tone mapping, yang memungkinkan OEM menyediakan shader GPU untuk mencocokkan kurva tone mapping layar mereka. Screenshot hampir cocok dengan konten di layar, tetapi dengan perbedaan berikut:
- Screenshot tetap dalam format SDR. Akibatnya, saat dilihat bersama adegan HDR, area HDR dalam screenshot tampak lebih redup.
- Luminans SDR tidak dikelola, sehingga konten SDR dalam screenshot tampak secerah konten HDR.
Dengan kata lain, sistem mengonversi video HDR yang diambil dalam screenshot menjadi video SDR.
Android 14
Ultra HDR menimbulkan tantangan yang signifikan untuk mengambil screenshot. Tidak seperti video, sistem biasanya merender gambar dalam framebuffer UI, yang memiliki dua implikasi utama:
- Gambar tidak boleh memiliki pemrosesan gambar, termasuk pemetaan warna, yang berbeda dari UI di sekitarnya.
- Aplikasi bertanggung jawab untuk pemetaan tone berbasis sumber saat merender UI-nya.
Untuk mengurangi tantangan ini, pertimbangkan tiga potensi penerapan pengambilan screenshot:
- Mempertahankan detail HDR gambar Ultra HDR, sehingga menghasilkan UI aplikasi yang lebih gelap dalam screenshot.
- Mempertahankan detail UI aplikasi, sehingga menyebabkan kliping gambar Ultra HDR.
- Mengkompromikan dengan mencerahkan UI aplikasi sambil memangkas sorotan HDR.
Android 14 menerapkan pendekatan ketiga untuk mencerahkan UI aplikasi dan memangkas sorotan HDR.
Android 15-QPR1
SurfaceFlinger menyertakan algoritma pemetaan warna lokal untuk screenshot. Proses ini melibatkan:
- Membagi gambar input menjadi gambar yang lebih kecil.
- Menghitung luminans maksimum di setiap gambar, dan menghapus nilai luminans rendah dalam setiap bagian.
- Menginterpolasi luminans yang dihitung melalui proses blurring dan pengambilan sampel ulang.
- Menerapkan tonemapper Reinhard berparameter ke gambar input, berdasarkan nilai luminans yang diinterpolasi.
Algoritma ini secara signifikan meningkatkan kualitas screenshot antara Android 14 dan Android 15-QPR1, seperti yang ditunjukkan oleh contoh berikut:
Contoh 1 adalah screenshot video HDR yang ditumpuk di atas halaman Chrome yang berisi Ultra HDR. Warna UI sebagian besar dipertahankan dalam penerapan baru, dan gambar tidak lagi terpotong.
Android 14 Android 15-QPR1
Gambar 1. Perbandingan Android 14 dan Android 15-QPR1 untuk Contoh 1.
Contoh 2 adalah screenshot video HDR yang ditumpuk di atas Setelan dengan screenshot berikutnya. Di Android 14, warna screenshot semakin gelap. Di Android 15-QPR1, tonemapper mereplikasi dan mempertahankan warna UI dengan benar.
Android 14 Android 15-QPR1
Gambar 2. Perbandingan Android 14 dan Android 15-QPR1 untuk Contoh 2.
Android 16
Mirip dengan Ultra HDR, screenshot HDR menyimpan peta gain dalam file screenshot untuk memulihkan representasi HDR selama rendering. Namun, tidak seperti Ultra HDR, screenshot tetap dalam format PNG untuk kompatibilitas mundur dengan sistem yang memproses screenshot PNG.
Pembuatan screenshot melibatkan hal-hal berikut:
- Saat konten HDR ditampilkan di perangkat, screenshot dibuat menggunakan piksel FP16.
- Pemeta nada lokal yang dijelaskan dalam Android 15-QPR1 menghasilkan rendering SDR dasar 8-bit.
- Peta keuntungan 8-bit dihasilkan dengan menggabungkan tampilan dasar SDR dengan tampilan HDR.
- Rendering dasar SDR dan peta gain dienkode ke dalam satu file PNG.
Encoding PNG mencakup hal berikut:
- Gainmap dienkode sebagai gambar PNG, yang mencakup potongan
gmAP, yang berisi metadata ISO 21496-1 untuk gainmap. - Render dasar SDR dienkode sebagai gambar PNG, yang mencakup potongan
gmAP, yang berisi metadata versi ISO 21496-1. Gambar PNG ini juga mencakup potongangdAT, yang berisi seluruh PNG gainmap yang dienkode.
Gambar berikut menunjukkan tata letak potongan PNG:
Gambar 3. Tata letak potongan PNG.
Dengan Android 16, codec PNG mendukung encoding dan decoding PNG ini. Aplikasi dapat menampilkan PNG dengan peta gain dengan cara yang sama seperti Ultra HDR.