Videó lejátszása PC-ről

Míg az AV-technikában a képinformációt tipikusan a „redundanciacsökkentő” YCbCr komponens formában kódolják, továbbítják vagy tárolják, a számítástechnika alapformátuma az RGB. A komponens videojel azonban a rendelkezésre álló kvantálási szinteknek csak egy szűkített részét használja, pl. 8-bites kvantálásnál a 16-235 (16-240) kódtartományt. Az RGB-nek van teljes (0-255) és szűkített (16-235) változata is. Mivel a mai digitális megjelenítő eszközök az R, G és B alapszínek összeadó keverésével dolgoznak, az alapszínű képpontok meghajtásához R, G, B jelekre van szükség. A színteret tehát mindenképpen konvertálni kell, de gyakran a nagyobb fejtörést a kódtartomány illesztése okozza – különösen, ha a videót szoftverrel játsszuk le, és egy számítógép kimenetén át küldjük a megjelenítőre, amely lehet televízió vagy projektor, de akár egy PC monitor is.

Bevezetőnket ki kell egészítenünk azzal, hogy amint az optikai képből elektromos jel lesz, gammakorrekciónak kell alávetni, ezért igazából a Y’CbCr és R’G’B’ jelölést kellene használnunk. Jelen mondanivalónk szempontjából azonban ennek most nincs jelentősége, ezért a vesszőket elhagyjuk. Továbbá azt is el kell mondanunk, hogy az Y’ (a továbbiakban Y) neve luma jel, a Cb a kék, a Cr pedig a vörös „színkülönbségi” vagy chroma jel. Ez utóbbiakat a megfelelő együtthatókkal a B-Y, illetve R-Y különbségi jelből képezik. Az YCbCr egyébként a korábbi analóg YPbPr komponens formátum digitális megfelelője (összefoglalóan a komponens formátumokat YUV-nek is szokás nevezni).

Miért komponens jel?

De egyáltalán miért van arra szükség, hogy a jól kezelhető és megszokott (pl. a kamerából kapott) RGB jelhármast a videó világában YUV-re, illetve YCbCr-re konvertálják? A részletes magyarázat a színes televízió kifejlesztésétől indulna, és talán próbára tenné olvasóink türelmét. A rövid magyarázat: 1) a világosság-információ és a színesség-információ elválasztható egymástól és külön kezelhető, ami a fekete-fehér és a színes tv-rendszerek kompatibilitásához elengedhetetlen volt, 2) a látásunk sokkal érzékenyebb a világosság-információ, mint a színesség-információ (színezet és színtelítettség) részletezettségére. Ennek következménye, hogy az RGB reprezentáció „fölöslegesen sok” (redundáns) információt tartalmaz, ami csökkenthető, ha az Y jelet elválasztjuk a színesség-információt hordozó jelektől (ezt reprezentálja a Cb és a Cr chroma jel). Ezzel drámai mértékben csökkenthető a „hasznos” információtartalom, anélkül, hogy a képminőséget számottevően befolyásolná. Így a fájlméret vagy az átviteli bitráta is komoly mértékben csökken. Noha a luma jel átviteléhez, tárolásához, feldolgozásához így is nagy sávszélesség/bitráta szükséges, a chroma jelekhez ennek töredéke elegendő – különösen, ha a mintavételi sémát is megfelelően választjuk meg.

Szűkített és teljes kódkészlet

A másik fontos kérdés, hogy míg a számítógépes grafikában, és egyáltalában a számítástechnikában – ahol egyébként az RGB reprezentáció volt és maradt az uralkodó színmodell – a rendelkezésre álló kódkészletet teljes terjedelmében kihasználják (full range), a komponens videojel miért csak egy szűkített részét használja (limited range)? 8-bites kvantálás esetén a „teljes” itt a 0-255 kódtartomány jelenti (10-bites kvantálásnál ez 0-1023, 12-bitesnél 0-4095 stb.). A „szűkített” kódtartomány a luma jel esetében a 16-235, a chroma jelek esetében 16-240.

Nos, a magyarázat részben ismét történeti. Még az analóg világban a referencia-fehér fölött és a referencia-fekete alatt hagytak egy-egy sávot („fehérnél fehérebb”, azaz WtW headroom és „feketénél feketébb”, azaz BtB footroom). Az ok egyrészt az (volt), hogy a pontatlanul beállított analóg szinteket is kezelni lehessen, másrészt, hogy a szűrők okozta túllövéseknek, amennyire lehet, helyet hagyjanak (ne legyen éles határolás). Az első ok ma már nem létezik, a második még mindig fontos. Ezen felül több további érv szól a headroom és a footroom megtartása mellett a digitális jel esetében is (ezeket most nem részletezzük).

Megjegyzés: a videostúdiókban a különféle utómunkálati fázisokban a teljes kódtartományú RGB jelet is előszeretettel használják, azzal a megszorítással, hogy 8 biten a 0 és a 255-ös kód, 10 biten a 0-3 és az 1020-1023 kódtartomány az SDI szinkron számára van fenntartva.

Színtérváltás és a kódtartomány illesztése

Egy videoanyag vagy digitális film lejátszásakor természetesen a lejátszó által lejátszott és a megjelenítő által fogadható jel színmodelljének (formátumának) meg kell egyeznie. Erről sok mondanivalónk nincs, mivel ha komponens jelet adunk egy RGB jel fogadására beállított kijelzőre, vagy fordítva (ha a lejátszóval végeztetjük el az YCbCr/RGB átalakítást, de a kijelző komponens jelet vár), akkor első látásra felismerjük a tökéletesen élvezhetetlen képet. Vagyis ekkor mindenképpen színtér-konverzió szükséges. Mind a mai lejátszó hardverek (médiacenter, Blu-ray lejátszó), mind a mai megjelenítők (projektor, televízió) többségükben átállíthatók YCbCr-ről RGB-re vagy fordítva. A PC monitoroknál nem egészen ez a helyzet, bár sok monitor – bemenettől függően – automatikusan érzékeli, hogy komponens vagy RGB bemenetei jelet kap.

A konverziót akár a lejátszó, akár a megjelenítő elvégezheti, de ajánlatos a forrás natív formátumát (esetünkben a komponens jelet) megtartani, és a megjelenítő bemenetét erre átállítani – ha ez lehetséges. A megjelenítők gyakran automatikusan is képesek erre. Ekkor a színtér-konverziót (YCbCr-ről RGB-re) a megjelenítő eszköz elektronikája végzi el.

Más a helyzet a kódkészlettel! Ha 16-235 kódkészletű videojelet kap a megjelenítő, de 0-255-re van beállítva, akkor a kép „lapos” lesz, „kivasalt” benyomást kelt (van, akit ez csak azután zavar, miután meglátja a helyesen beállított képet). Ha a lejátszóból full range videojel érkezik (mert már a lejátszó a komponens jelet átalakította 0-255-ös RGB jellé), és a TV vagy projektor limited range RGB-re van beállítva, akkor a 16 alatti feketék és a 235 fölötti fehérek „becsukódnak”, azaz összemosódnak. Mindkét esetben hibás képet kapunk.

Lejátszás PC-ről

Külön megfontolás tárgyát képezi az az eset, amikor egy PC-re telepített videolejátszó szoftverrel játsszuk le a videót/filmet. Ez háromszereplős játék (lejátszó szoftver, grafikus kártya, megjelenítő). Tegyük fel, hogy mind a háromnak állítható a kódkészlete teljesre vagy szűkítettre, és maga a videófájl (vagy streamelt videó) az alapértelmezett YCbCr videoformátumban áll rendelkezésünkre, vagyis a kódtartománya eleve szűkített (limited range). A lehetséges kombinációk száma ez esetben kettő a harmadikon, azaz nyolc.

A lejátszó szoftver által kiadott jel lehet 0-255 vagy 16-235 (240), a videokártya kimenete is lehet 0-255 vagy a Control Panelen beállíthatóan 16-235 (viszont a „bemenete” értelemszerűen teljes RGB), a kijelzők egy része pedig automatikusan érzékeli a kódtartományt, de jól jöhet, ha van kézi átállítási lehetőség. Az utóbbi pár évben gyártott projektorokon és televíziókon többnyire mind a két lehetőség megtalálható. A PC monitorokon nem mindig van lehetőség a kódtartomány állítására, pl. a DVI digitális bemenet nem tudja értelmezni a szűkített RGB tartományt, míg a HDMI és a DisplayPort interfész ezt tudja, bár ez még nem feltétlenül garancia arra, hogy a monitor ténylegesen átállítható a kívánt színtérre és kódtartományra.

A nyolcféle kombinációból három tudja helyesen reprodukálni a komponens videotartalmat:

1) Teljes/teljes/teljes (Full/Limited/Full). A lejátszó szoftver ekkor konvertálja a szűkített YCbCr színteret teljes RGB-be. Mivel a kódértékek egész számok, a hozzárendelés nem egészen pontos, hiszen 220 számot kell leképezni 256 számra (olykor „ugrani” kell egy kvantálási szintet).

2) Teljes/szűkített/szűkített (Full/Limited/Limited). Ez kerülendő, mivel a szoftver is, és a videokártya és is átskálázza a kódtartományt, ami sávosodáshoz vezethet.

3) Szűkített/teljes/szűkített (Limited/Full/Limited). Azaz a szoftver szűkített (16-235) RGB tartományt küld a videokártyára, így nincs átskálázás, a kártya ezt beavatkozás nélkül átengedi, ha a kimenete 0-255-re van állítva, a szűkített RGB-re állított kijelző pedig azt kapja, amit vár a videotartalom korrekt megjelenítéséhez – feltéve, ha a szűkített RGB beállítása lehetséges, vagy ezt automatikusan felismeri. Amennyiben a kijelző (monitor, ha éppen ezen akarunk filmet nézni) csak a teljes RGB kódtartományt hajlandó fogadni, akkor az 1) alatt leírt kombinációt kell használni.

***

Rövidke írásunkban megpróbáltuk érzékeltetni a színtér (színmodell) és a kódtartomány váltásának buktatóit a hagyományos komponens video- vagy filmes tartalom megjelenítésekor. Bonyolultabb esetekben szerencsére a szemünk is pompásan eligazít: a színtér-konverzió szükségessége azonnal kiderül, a kódkészlet sikeres illesztése pedig pici tapasztalattal, jó eséllyel szintén megítélhető. Ha becsukódó feketéket és összenyomott fehéreket látunk, vagy ellenkezőleg, lapos, szürke tónusokat fekete helyett, akkor változtatnunk kell a full/limited (teljes/szűkített) kombináción. Ám a helyes kombinációk nem mindig adnak teljesen egyforma eredményt.

colorlove

Legyen Ön az első hozzászóló

Várjuk hozzászólását!

Az Ön email címe nem kerül nyilvánosságra.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.