Liputan6.com, Jakarta - Beberapa waktu lalu, sebuah wallpaper "terkutuk" bergambar pemandangan yang bisa membuat smartphone Android crash menjadi pembicaraan.
Smartphone Samsung dan Google Pixel dikabarkan crash dan mengalami soft brick ketika pengguna nekat memasang wallpaper yang dimaksud.
Advertisement
Baca Juga
Kini, penyebab wallpaper tersebut membuat crash sejumlah smartphone Android pun terungkap, berdasarkan penjelasan dari Lead Developer AOSP Davide Bianco.
Sebagaimana dikutip dari laman XDA Developer, Kamis (11/9/2020), Bianco menjelaskan wallpaper itu memakai spektrum warna RGB, bukan sRGB seperti yang mendukung Android asli (native).
Bianco juga telah mengirimkan patch ke AOSP yang disebut-sebut telah memperbaiki masalah ini. Deskripsi patch tersebut menjelaskan, "Masalah terjadi ketika pengguna mencoba mengatur sebagai wallpaper gambar yang bukan sRGB."
Yang terjadi berikutnya adalah, nilai variabel y lebih tinggi dari batas histogram. Hal ini membuat SysUI crash. Satu-satunya kemungkinan perbaikan adalah membatasi nilai y agar selalu kurang dari 256.
Penjelasan Teknis Lengkapnya
Selanjutnya, berdasarkan penjelasan dari Senior Member di XDA BadDaemon dan XDA Recognized Developer luca020400, wallpaper "terkutuk" itu ditulis dengan ruang warna spesial bernama “Google/Skia/E3CADAB7BD3DE5E3436874D2A9DEE126”. "Skia" merujuk pada grafik library 2D yang dibuat oleh Google.
Padahal, kebanyakan wallpaper lain dikode menggunakan ruang warna bernama sRGB. Pada Android 10 dan yang lebih lawas, semua gambar dikonversi ke sRGB, kecuali ditentukan oleh pengembang.
Nah, rupanya ada bug langka yang dapat terjadi saat mengkonversi gambar ke sRGB, yakni kode yang menghitung nilai warna "luminance" dari setiap piksel melampaui batas maksimum, yakni 255.
Luminance sendiri dikalkulasi menggunakan formula sebagai berikut:
Luminance = .2126f * r + .7152f * g + .0722f * b
di mana, "r" merupakan red, "g" adalah green, dan "b" adalah blue yang merepresentasikan 8-bit-value dari 0-255.
Advertisement
Ada Bug di Pembulatan Hitungan
Masalahnya, pada perhitungan ini tiap bagian selalu dibulatkan sebelum penjumlahan akhir.
Nah, salah satu piksel dalam wallpaper tersebut ketika dalam proses konversi gambar dari sRGB dan kemudian ke skala abu-abu memiliki nilai RBG berikut: 255, 255, 243. Ketika dicocokkan ke persamaan di atas justru menjadi:
r: .2126 * 255 = 54.213 => 55
g: .7152 * 255 = 182.376 => 183
b: .0722 * 255 = 18.411 => 19
Luminance = r+ g + b = 257
Nilai yang melebihi 255 ini menyebabkan SystemUI dan seluruh OS jadi mogok karena melebihi nilai maksimum. Bisa dibilang, bug ini sangat spesifik karena melibatkan kombinasi kesalahan pembulatan dan kesalahan konversi ruang warna.
Uniknya, bug ini juga tidak memengaruhi Android 11 karena ruang warna "Skia" gambar tidak dikonversikan ke sRGB secara default. Dengan begitu, kesalahan konversi ruang warna ini dan kesalahan pembulatan ini tak terjadi pada Android 11.
(Tin/Why)