Jakim cudem tapeta zabija telefony z Androidem? Wszystko przez jeden piksel

Jakim cudem tapeta zabija telefony z Androidem? Wszystko przez jeden piksel05.06.2020 11:19

Krótka historia o tym, jak jeden mikroskopijny punkt na zwyczajnym zdjęciu zawiesił setki telefonów na całym świecie.

W ostatnich dniach głośno jest o tapecie, która zamienia telefony z Androidem w cegły. Gdy pojawiły się ostrzeżenia, by pod żadnym pozorem tej tapety nie ustawiać, ludzie zaczęli - a jakże - masowo ją ustawiać. W efekcie sieć została zalana filmami, na których uwieczniono smartfony znajdujące się w pętli restartów.

Wiadomo już, że Google pracuje już nad rozwiązaniem problemu. Przyjrzyjmy się jednak temu, dlaczego w ogóle Android nie potrafi sobie poradzić z - wydawałoby się - zwyczajną tapetą.

Tapeta psująca Androida. Oto zdjęcie będące źródłem problemów

Osławiona tapeta jest tak naprawdę fragmentem zdjęcia z serwisu hdqwalls. Autorem fotografii, którą wykonano Nikonem D850, jest Gaurav Agrawal.

Czy fotograf umyślnie umieścił w swoim zdjęciu jakiś złośliwy kod? Nic z tych rzeczy. Doszło po prostu do bardzo niefortunnego zbiegu okoliczności, który w połączeniu z drobną niedoróbką Androida okazał się tragiczny w skutkach.

Kilka słów o przestrzeniach barw

Wszystkie polecenia wykonywane przez urządzenia komputerowe muszą być wydawane za pomocą komend złożonych z ciągu zer i jedynek. Aby smartfon wiedział, jakiego koloru mają być piksele składające się na wyświetlany obraz, muszą być one przedstawione za pomocą matematycznych modeli. Stąd istnienie tzw. przestrzeni barwowych, w ramach których każdy odcień opisany jest kodem zrozumiałych przez różne urządzenia.

Nie istnieje jednak przestrzeń barwowa, którą można by uznać za jedyną słuszną, bo wszystko zależy od potencjalnych zastosowań. W branży informatycznej najpopularniejszym standardem jest sRGB (standarised Red, Green, Blue - ustandaryzowany czerwony, zielony i niebieski).

Paleta barw sRGB to rynkowy standard
Paleta barw sRGB to rynkowy standard

Przestrzeń sRGB obejmuje 256 odcieni każdej z trzech barw podstawowych (czerwona, zielona i niebieska). Kombinacje tych odcieni sprawia, że urządzenia obsługujące tę paletę są w stanie odróżnić 16 777 216 kolorów. Z pewnością niejednokrotnie spotkaliście się z tą liczbą, np. sprawdzając szczegółową specyfikację jakiegoś ekranu.

O ile dla zwykłego użytkownika 16,78 mln kolorów to wynik aż nadto wystarczający, o tyle dla profesjonalnego fotografa, grafika czy filmowca niekoniecznie. Dlatego istnieją alternatywne, szersze przestrzenie barw.

I tu przechodzimy do źródła problemu z felerną tapetą. Wspomniana fotografia wykorzystuje opracowaną przez kodaka przestrzeń barw ProPhoto RGB, która jest znacznie szersza od spopularyzowanego RGB.

Przestrzeń barw ProPhoto RGB jest dużo szersza niż sRGB
Przestrzeń barw ProPhoto RGB jest dużo szersza niż sRGB

To samo w sobie problemem nie jest, bo nowoczesne systemy operacyjne - w tym Android - potrafią "w locie" konwertować przestrzenie barw. Po prostu kolor znajdujący się poza obsługiwaną paletą zamieniany jest przez najbardziej mu odpowiadający z przestrzeni sRGB.

Problem z tapetą powodowany jest tak naprawdę przez jeden piksel

Aby system operacyjny mógł prawidłowo przekonwertować obraz z jednej przestrzeni barw na drugą, musi wyliczyć tzw. luminancję pikseli. W Androidzie do wersji 10 odpowiada za to wzór 0,2126 * R + 0,7152 * G + 0,0722 * B, gdzie R, G i B to odcienie czerwieni, zieleni i błękitu opisane wartościami od 0 do 255.

Jako że maksymalna wartość każdej z barw podstawowych to 255, wynik tego działania nie powinien być wyższy niż 255. Wszak 0,2126 + 0,7152 + 0,0722 = 1.

Serwis XDA Developers odkrył, że jeden z pikseli na wspomnianym zdjęciu opisany jest następującymi wartościami:

  • R = 255
  • G = 255
  • B = 243

Jeśli jesteście ciekawi, o którym pikselu mowa, z pomocą przychodzi Mrwhosetheboss

Podstawmy teraz te wartości pod wspomniany wzór:

  • 0,2126 * 255 = 54,213
  • 0,7152 * 255 = 182,376
  • 0,0722 * 243 = 17,5446

Zsumowanie tych liczb daje wynik 254,1336, a więc mieszczący się w zakresie 0-255. Tu jednak zaczynają się schody.

Wspomniana tapeta ma rozdzielczość 2560 x 1440, co oznacza, że złożona jest z 3 686 400 pikseli. Właśnie tyle razy musi zostać zastosowany wspomniany wzór, tylko po to, by przekonwertować tapetę. Aby usprawnić wyliczenia, oprogramowanie unika ułamków, dlatego wszystkie liczby są zaokrąglane w górę.

Ostatecznie luminancja wspomnianego piksela wyliczana jest więc działaniem 55 + 183 + 18, którego wynik to 256.

Jak wspomniałem wcześniej, wynik nie powinien przekroczyć liczby 255. Gdy jednak tak się dzieje (na co matematyczne prawdopodobieństwo jest ekstremalnie małe), oprogramowanie otrzymuje liczbę, której nie potrafi zinterpretować. To w chwili zmiany tapety może doprowadzić do zamienienia telefonu w cegłę.

Rozwiązanie tego problemu jest jednak banalne

Wszystko, co musi zrobić Google, to wprowadzić do oprogramowania jedną linijkę kodu, która da smartfonowi znać, że luminancja przekraczająca 255 powinna być interpretowana jako 255.

Warto odnotować, że w Androidzie 11 - z uwagi na inny sposób zarządzania kolorami - problem ten już nie występuje. Zanim jednak ten i nowsze wersje systemu trafią do wszystkich użytkowników, miną długie lata, dlatego miejmy nadzieję, że stosowna łatka znajdzie się już w lipcowej aktualizacji zabezpieczeń.

Źródło artykułu:WP Komórkomania
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.