Podrobný pohled: Proč Windows Mobile komunikátory umějí zobrazit pouze 65k barev?
Jan Pichrt | Pondělí, 8. Září 2008 1:17 | Komentáře: 32
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. 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.
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:
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.
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).
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í.
Komentáře k článku
Pondělí, 8. Září 2008 8:49
Pondělí, 8. Září 2008 9:27
Pondělí, 8. Září 2008 9:47
Jan Pichrt
Pondělí, 8. Září 2008 10:14
Pondělí, 8. Září 2008 12:33
Pondělí, 8. Září 2008 13:31
Pondělí, 8. Září 2008 14:40
Jan Pichrt
Pondělí, 8. Září 2008 15:15
Pondělí, 8. Září 2008 16:27
BTW: Více, co je největší fór? Displeje třeba s 16ti miliony barev. Lidské oko totiž vnímá maximálně 1 .
Pondělí, 8. Září 2008 18:16
Pondělí, 8. Září 2008 20:21
nieco co hovorim uz minimalne rok... lenze to by si uzivatelia najprv museli uvedomit co potrebuju a zacat to od vyrobcov vyzadovat, a nie pisat vyhlasenia typu "iPhone 3G s 3,5" displayom s rozlisenim 320×480 a 16 milionmi farieb je shit lebo ma len 2mpx fotak ktory je jedinym dovodom preco si ho nekupim"
Úterý, 9. Září 2008 0:57
Brou noc
Úterý, 9. Září 2008 1:22
I přes nadšené výkřiky spolukomentujících tahle perla dokonale svědčí o tom, že autor je moula který vůbec neví o čem píše. Milibajtový překlep beru - ale představa že nějaký kodek si dopředu předpočítáví víc než 1-2 framy je už celkem dost humorná (holt bídná angličtina a nepochopení pojmu "framebuffer" chybějící vzdělání nedožene ... jde totiž o zásobník bajtů pro snímek, je o zásobník snímků).
Následuje chuchvalec pindů a naprosto zbytečných barevných tabuleček na téma "32bitů dobrých, 18bitů špatných, 16bitů dobrých" - ale nikde ani slovo o tom že bídné TN panely mají debilních 3×6 bitů ne proto aby jejich výrobci nakrkli Microsoft, ale proto že zákazník LIDLu vyžaduje svou sojovou šunku co nejlevnější - a tak všechny jeho šitovní TN TFT mají jenom 6-bitové DA převodníky. Ne plnotučné 8-bitové (×3 = TrueColor) a nebo dokonce 10-bitové (i to se vejde to 32 bitů, windows je umí a používá je třeba matrox).
Proto se RGB schéma 6+6+6 (nedostižných božích 18 bitů) zjednodušuje na ne zas o moc bídnější 5+6+5 (změny žlutozelené oko vnímá nejvíc, proto už se G víc nešidí) a marketingový handicap (máš jenom 64 tisycwoe!!) je na světě...
Ale co, pan autor aspoň místo studia (a za potlesku zdejšího fundovaného publika) může dál plodit své "odborné" pindy...
Úterý, 9. Září 2008 2:14
Úterý, 9. Září 2008 2:22
Úterý, 9. Září 2008 2:54
Ale jinak souhlasím s přispěvovateli. Na nekvalitním malém displeji je jedno jestli je tam 56k nebo 8M barev. Na ikonky, fonty v menu, psaní textu a volání to přece úplně stačí.
Úterý, 9. Září 2008 7:22
Úterý, 9. Září 2008 7:31
Co se týče několika lidí v diskuzi, kteří si myslí, že velká barevná hloubka je zbytečnost (že na fotce na malém displeji není vidět tolik barev najednou, nebo že lidské oko vidí jen milión barev), jde o to, že lidské oko vnímá různé barvy různě, nejcitlivější je na zelenou, a proto právě má v modelu 16 bit přidělených 6 bitů - 64 odstínů zelené, zatímco červená a modrá jen 5 bitů - 32 odstínů. A pokud bych na fotce měl barevný přechod z černé do červené, tak těch pouhých 32 odstínů bezpečně uvidím i na mobilu. Až 16 miliónů barev s rozložením složek 8-8-8 zajistí, že těch odstínů jedné barvy bude k dispozici 256, a s tím už se dá fungovat. Jinak lidské oko vnímá dokonce i barvy, které nejsme vůbec schopni na těchto displejích zobrazit (barevný prostor je menší), takže i těch 16 milionů třeba v prostoru Adobe RGB je stále málo ;)
Úterý, 9. Září 2008 8:32
Úterý, 9. Září 2008 8:53
Úterý, 9. Září 2008 9:24
Úterý, 9. Září 2008 9:27
Ale upřímně je to fakt hrozný, člověk s tim ani nemůže dělat špičkovou grafiku a podobně, co?
Úterý, 9. Září 2008 11:41
Úterý, 9. Září 2008 13:00
By mě zajímalo co je na tom pravdy a jestli je to bůbec možný.
PS: ale vyráběl se v ČR takže bych se nedivím ničemu
Úterý, 9. Září 2008 18:09
Úterý, 9. Září 2008 18:12
ale jinak po delší době článek z jiného soudku, což chválím...
//btw. nevíte jak funguje dotyková plocha na iPhone? (typ, použitá technologie..?)
Nenašel jsem o tom nikde zmínku...
babca
Úterý, 9. Září 2008 20:21
Úterý, 9. Září 2008 20:33
Úterý, 9. Září 2008 20:39
Úterý, 9. Září 2008 21:56
Středa, 10. Září 2008 0:05
P.S. pokud je někdo čuně a display má ošoupaný a upatlaný tak mu nebude vyhovovat ani monochromatický(čb),bud uvidí prdlajs a nebo mu bud v lepším případě hrát všemi možnými barvami i při vypnutém přístroji.
Čtvrtek, 11. Září 2008 21:22











