262k barev… proč stále nejsou na Windows Mobile?

   Jan Pichrt        Štítky:,         Žádné komentáře

Určitě jste si už někdy položili otázku, proč ve specifikacích každého komunikátoru se systémem Windows Mobile najdete u displeje hodnotu pouhých 65k barev, když dnes většina moderních obrazovek u obyčejných mobilních telefonů disponuje až čtyřikrát větší barevností (65536 versus 262144 barev). Proč tomu tak je, si vysvětlíme v tomto článku. Tento článek byl také zveřejněn na informačním serveru o mobilní komunikaci SmartMania.cz.K porozumění je potřeba vědět, jak vlastně PDA zobrazuje barvy. 65536 barev rozhodně není náhodné číslo. Jedná se o počet možných kombinací 16 bitových informací („bit“ je číslo, které nabývá hodnot 1 nebo 0).

Každý bod na obrazovce, tedy pixel, je reprezentován 16 bity. Těchto 16 bitů udává barvu pro onen pixel. Přesněji jde o 5 bitů červené, 6 bitů zelené a 5 bitů modré barvy. Toto složení se také nazývá jako RGB 565. Pokud bychom měli zařadit do škály barevných formátu i 18 bitovou hloubku (to znamená 262 tisíc barev), jednalo by se o 6 bitů na každou barvu. Tedy RGB 666.

Další věc, kterou je třeba pochopit je, jak proměnit bit na obrazovce v barvu. Představme si například klasické Pocket PC s rozlišením displeje 240×320 obrazových bodů (pixelů) s barevností 65536 barev. To znamená 320 řádků a 240 obrazových bodů, kde každý z nich má 16 bitů představujících barvu. Všechny tyto informace jsou uloženy v paměti známé jako frame buffer. Hardware obrazovky tedy vezme obsah tohoto frame bufferu a zkonvertuje ho přímo na obrazovku. Chcete změnit obraz, pak musíte změnit obsah frame bufferu.

Potřebujeme tedy 16 bitů pro každý pixel, a celkem máme u QVGA displeje 240×320 bodů. 16 bitů jsou 2 byty, což znamená celkový počet 153600 bytu, tedy zhruba 150kB z RAM použité pro vykreslení obrazovky. Jednoduchý vzorec pro výpočet velikosti frame bufferu tedy je (A x B) x C, kde A je osa X, B je osa Y a C je počet bytů v bitové hloubce (například v 16 bit jsou byty 2). Z přiloženého grafu jsou vidět rozdíly.

graf

Z grafu je patrné, že rozdíl mezi jednotlivými hloubkami vůbec není malý, zvláště pak v případě 16 versus 32 bit, kdy hodnoty dosahují dvojnásobku hodnot původních. Obrovský rozdíl je také u QVGA a VGA displejů, kde je paměťová náročnost VGA zhruba čtyřnásobná.

Zajímavost: Tímto zároveň vyvracíme mýtus o tom, že VGA není o nic víc náročnější, než QVGA. Zatímco QVGA displej spotřebuje na jedno překreslení obrazovky 153,6 kB, tak VGA potřebuje 4× tolik, tedy 614,4 kB. Z toho vyplívá, že když si pustíte film při standardních 25 FPS, vaše Pocket PC s VGA displejem a 64 mB RAM bude muset začít přepisovat obsah framebufferu už po nějakých 9 vteřinách, tedy za předpokladu, že budete mít celých 64 mB volné RAM k dispozici. U QVGA displeje by se jednalo už o celých 16 vteřin, což dává procesoru dostatek času na další operace. Rychlost zařízení s VGA displejem tedy silně ovlivňuje procesor a rychlost vnitřní sběrnice společně s RAM. Proč tedy výrobci stále vyrábí zařízení s VGA displeji a 64 mB RAM? Jednoduše pro to, že zřejmě jsou jejich produkty určeny nenáročným uživatelům, kteří nekladou až takový důraz na multimédia, ale spíše na statické zobrazení obrazovky Dnes a sem tam nějaké to tapnutí, nebo že by doprodávali staré chipsetové zásoby? :-)

Moderní procesory jsou schopné pracovat s 32 bity, což je optimální pro práci s 16 a 8 bitovou hloubkou barev. Proč tedy ne 262144 barev, respektive 18 bitů? Protože je pixel 16 bitový a procesor zvládá 32 bitů, stihne zapsat 2 pixely najednou během jednoho cyklu. Co by se ale stalo, pokud by byl pixel 18 bitový? První pixel by prošel bez problémů, druhý ale ne a čekal by až na další cyklus. Tím pádem 15 z každých 16 pixelů by bylo vykreslováno způsobem, který by byl naprosto neefektivní. 18 bitů si prostě s 32 bitovým systémem moc rozumět nebude. K pochopení vám jistě pomohou následující tabulky:

tabulka

Každá barva znázorňuje 1 pixel. Je jasně patrné, že u 32 a 16 bitů nezůstává žádný nevyužitý bit. Z uvedeného také vyplívá, že použití 24 bitů je pouze o trochu nevýhodnější než při použití 16 bitů. Nevyužitých bitů je zde 8 a je to tedy stále podstatně výhodnější, něž použití 18 bitů, kde zůstane v jednom cyklu celých 14 nevyužitých bitů. Z tohoto důvodu prostě formát „RGB 666“ neexistuje. Není nativně podporován v žádném operačním systému (CE, XP, Mac, Unix, Palm či Symbian).

Ale počkat, teď vám to nesedí? Všude přece vídáme reklamy na mobilní telefony vybavené displeji s 262144 barvami. Jak je to tedy možné? Musí přece podporovat 18 bitovou barevnou hloubku, ale není tomu tak. Tato zařízení podporují 24 bitovou hloubku, ale zahodí 6 z 8 bitů navíc, což jsme si vysvětlili o odstavec výše. Existují dva způsoby, jak vytvořit 24 bitové barvy. V obou případech je k dispozici 8 bitů pro červenou, zelenou a modrou, tedy „RGB 888“, kde v případě prvním má každý pixel 24 bitů a případě druhém má bitů 32, zbylých 8 je pak pro transparentnost nebo jednoduše zůstanou nevyužity.

32 bitů je skvělá hodnota pro použití s procesorem. Znamená to jeden pixel na každých 32 bitů. 24 bitů už není tak dobré jako použití 32 bitů, ale je to podstatně lepší než použití 18 bitů. Při použití 24 bitů využijeme tedy pouze 18, čímž plýtváme pouze 6 bity z každých 24 oproti 14 bitů z každých 32 bitů. Je to zkrátka pořádná matematika.

displej

Tento displej firmy SparkFun je typickým příkladem využití 18 bitové hloubky. Při parametrech QVGA (35×45mm) využívá 18 bitové rozhraní. Z výše uvedeno tedy vyplívá, že v 24 bit hloubce bude vše pomalejší než na 16 bitech. Windows CE zvládá obě formy (24 i 32 bitů). Pokud OEM výrobce tedy opravdu chce využít 18 bitů na displeji, má možnost. Otázkou ale zůstává, je opravdu potřeba tolik barev? Je vůbec k něčemu dobré investovat do takového vývoje, když lze stupínek přeskočit a pokračovat na lepší hodnoty?

Kdy tedy budeme mít na displejích našich komunikátorů více barev? Nejdříve potřebujeme obrazovky, které využijí plných 24 bitů. 24 bitů je funkčně stejně „rychlých“ jako 18 bitů, a 18 bitů je zase opravdu minimální rozdíl oproti 16 bitům. Nemá tedy smysl snažit se dosáhnout 18 bitové hloubky, ale mnohem výhodnější je dosažení 24 bitové. Pak také potřebujeme dostatečně výkonná zařízení, která dnes na trhu opravdu nejsou. Stále nás omezuje velikost operační paměti RAM a rychlost procesoru.

Nové displeje přitom jsou již dávno k dispozici. Otázkou tedy zůstává, proč je výrobci neimplementují? 24bitové displeje s přímou podporou tohoto rozhraní a také podporou mobilních CPU, tedy včetně různých ARM, vyrábí firma Sharp již poměrně dlouhou dobu. Na obrázku vidíte displej pro Sony PSP s 24 bitovou sběrnicí, který je možné doplnit o dotykovou vrstvu (opět od stejného výrobce).

displej2

Po softwarové stránce tedy není co řešit. Operační systémy již dovedou využívat celou škálu bitových hloubek; tedy 1, 2, 4, 8, 16, 24 i 32 bitovou podporu, a to včetně Windows CE. Zavést proto podporu do Windows Mobile by neměl být ze strany Microsoftu žádný problém. Jisté omezení by bylo ze začátku u autorů aplikací, kteří by museli svůj program naučit pracovat s novou barevnou hloubkou. Nezbývá tedy než doufat, že si této skutečnosti výrobci brzy uvědomí a například namísto nekvalitních a mnohdy i nevyužitelných fotoaparátů, začnou vybavovat své komunikátory lepšími displeji. Displej je přece jenom u komunikátorů, a zvláště těch s dotykovým rozhraním, jednou z nejdůležitějších částí.

Přidejte první komentář!

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *