YCbCr och RGB-signal

Klassisk datorgrafik består av RGB-signal med lika vägda komponenter för rött, grönt och blått. Med HDMI förekommer ytterligare ett format, YCbCr som kan ha olika vikt på komponenterna.

hdmi_felfarg_RGB_to_YCbCr.jpg

När RGB-data forceras in YCbCr-schemat blir bilden väldigt grön...

hdmi_felfarg_ycbcr_to_RGB.jpg

...och väldigt rosa när det omvända inträffar. Lösningen är att forcera en viss signal i såväl source som sink och helt undvika automatiska inställningar.

YCbCr består av komponenten Luma (Y) och två färgkomponenter, Chroma (Cb och Cr) och det går att omvandla RGB <-> YCbCr utan förlust. Poängen med YCbCr är att video kan komprimeras baserat på ögat och biologin. Vi ser skarpt med ögats stavar men dessa ser endast i luminansinformation, det vill säga Luma, Y. Eller svartvitt om man så vill.

Varför gör man då på detta viset? Ja, det handlar om öga och hjärna. Läs mer här eller här för sidospår. Färg ser vi med ögats tappar och dessa har vi inte alls lika många av som stavar. Vi ser alltså färger med bokstavligen talat lägre upplösning. Därför kan man reducera färginformationen i video med vad som är väldigt små praktiska förluster för den upplevda kvaliteten.

Detta kallas för Chroma Subsampling och ligger egentligen långt bortom räckvidden för denna artikel. Men du behöver veta vad det är för att hantera situationer när du använder HDMI, särskilt mot en TV.

Reducerad färginformation med 4:2:0

Chroma Subsampling reducerar färginformation rejält därför att våra hjärnor tolererar detta. Det format som används när video lagras på Youtube, DVD och Blu-ray med mera använder 4:2:0 Chroma Subsampling vilket innebär att färginformation, Chroma håller en fjärdedel av upplösningen hos Luma. En 1080p-video, från exempelvis Blu-ray, har enkelt uttryckt 1 920 × 1 080 pixlar av Luma (Y) med Chroma-componenterna (Cb och Cr) använder 960 × 540 pixlar. Detta förfarande halverar den totala datamängden rakt av.

HDMI kan alltså använda flera olika format:

  1. RGB 0-255, ”datornivåer”

  2. RGB 16-235, ”studionivåer” eller ”videonivåer”

  3. YCbCr 4:4:4, YCbCr med full färgupplösning

  4. YCbCr 4:2:2, YCbCr med 33% reducerad färgupplösning

  5. YCbCr 4:2:0, YCbCr med 50% reducerad färgupplösning

För datorbruk är det variant 1, 2 eller 3 som främst är intressant. När du reducerar färginformationen har det stor effekt på datorgrafik. Negativ effekt vill säga, men är kanske sak samma ifall du primärt använder datorn som källa för film och liknande. Detta är framför allt ett problem när du ansluter mot en 4K/UHD-TV. Metoder för att identifiera och verifiera sådana här problem finns beskrivet här.

4:2:0 chroma subsampling förekommer normalt endast enligt HDMI 2.0-specifikationen vid 4K/UHD-upplösning i 60 Hz när kapaciteten endast räcker till 300 MHz pixeklocka (se avsnitt längre fram). YCbCr-formatet har sin grund i digital video och arbetar därför normalt med 16 - 235-omfång. Men det förekommer även YCbCr-signaler med 0 - 255-omfång.

hdmi_rgb_ycbcr_settings.jpg

Vilket är då rätt? I den enklaste situationen dator och bildskärm är det RGB med 0 - 255 omfång som gäller. Men du kan i andra situationer, mot en TV, via en förstärkare och liknande kan du behöva ändra till 16 - 235-nivåer. Till exempel för att matcha bilden mot andra signalkällor likt Blu-rayspelare. Digital video är som skrivet normalt i YCbCr 4:2:0-format och skapat för 16 - 235-nivåer. Kör du dator som primär filmkälla är det därför ofta rekommenderat att köra 16 - 235-nivå.

Grönt eller rosa när det blir fel

Framför allt märker man när det blir fel matchningen mellan RGB och YCbCr eftersom bilden blir antingen väldigt grön eller väldigt rosa/magenta-färgad. En hel del datorskärmar klarar endast av RGB-signaler medan TV-apparater måste klarar av både och. Dock kan de uppstå fel som gör att signalformatet misstolkas och bilden växlar om till grönt eller rosa. Lösningen då kan vara att undvika automatisk justering av dessa lägen, till exempel ställa in i både grafikkort och i TV att det är en RGB-signal som används.

Signalen kallas då och då felaktigt för YUV som är ett annat typ av format som normalt inte används med HDMI och konsumentvideolösningar. Men ser du referensen ”YUV” någonstans i en meny för utrustning som använder HDMI är det i själva verket YCbCr-format det handlar om.