10bitové a 16bitové formáty videa YUV
Toto téma popisuje 10bitové a 16bitové formáty YUV, které se doporučují pro zachycení, zpracování a zobrazování videa v operačním systému Microsoft Windows.
Toto téma obsahuje následující části:
- přehled
- kódy FOURCC pro 10bitovou a 16bitovou YUV
- definice povrchu
- preferované formáty YUV
- související témata
Přehled
Tyto formáty používají pevnou reprezentaci pro kanály luma i chroma (C'b a C'r). Ukázkové hodnoty se škálují na 8bitové hodnoty pomocí měřítka 2^(n − 8), kde n je 10 nebo 16, jak je uvedeno v oddílech 7,7-7,8 a 7,11-7,12 SMPTE 274M. Převody přesnosti lze provádět pomocí jednoduchých posunů bitů. Pokud je například bílý bod 8bitového formátu 235, má odpovídající 10bitový formát bílý bod na 940 (235 × 4).
16bitové reprezentace popsané zde používají little-endian WORD hodnoty pro každý kanál. 10bitové formáty také používají 16 bitů pro každý kanál s nejnižšími 6 bity nastavenými na nulu, jak je znázorněno v následujícím diagramu.
Vzhledem k tomu, že 10bitové a 16bitové reprezentace stejného formátu YUV mají stejné rozložení paměti, je možné přetypovat 10bitovou reprezentaci na 16bitové vyjádření bez ztráty přesnosti. Je také možné přetypovat 16bitovou reprezentaci na 10bitovou reprezentaci. (Formáty Y416 a Y410 jsou výjimkou tohoto obecného pravidla, protože ale nesdílejí stejné rozložení paměti.)
Když grafický hardware čte povrch, který obsahuje 10bitovou reprezentaci, měl by ignorovat 6 bitů s nízkým pořadím každého kanálu. Pokud povrch obsahuje platná 16bitová data, měla by se však identifikovat jako 16bitová plocha.
Ve formátech, které obsahují alfa, má zcela průhledný pixel alfa hodnotu nula a zcela neprůhledný pixel má alfa hodnotu (2^n) – 1, kde n je počet alfa bitů. Alfa se předpokládá jako lineární hodnota, která se použije pro každou komponentu poté, co byla komponenta převedena do normalizované lineární formy.
U obrázků v paměti videa ovladač grafiky vybere zarovnání paměti povrchu. Povrch musí být DWORD zarovnaný. To znamená, že jednotlivé čáry v povrchu jsou zaručeny, že začínají na 32bitové hranici, i když zarovnání může být větší než 32 bitů. Původ (0,0) je vždy levý horní roh povrchu.
Pro účely této dokumentace je termín U ekvivalentní Cba pojem V je ekvivalentní Cr.
Kódy FOURCC pro 10bitovou a 16bitovou verzi YUV
Kódy FOURCC pro formáty popsané zde používají následující konvenci:
Pokud je formát planar, první znak v kódu FOURCC je P. Pokud je formát zabalený, první znak je Y.
Druhý znak v kódu FOURCC je určen vzorkováním chromu, jak je znázorněno v následující tabulce.
Vzorkování chromy Čtyřsekutové písmeno kódu 4:4:4 '4' 4:2:2 '2' 4:2:1 '1' 4:2:0 '0' Poslední dva znaky v FOURCC označují počet bitů na kanál, a to buď "16" pro 16 bitů, nebo "10" pro 10 bitů.
Pomocí tohoto schématu byly definovány následující kódy FOURCC. V tuto chvíli nebyly definovány žádné formáty 4:2:1 pro 10bitovou nebo 16bitovou verzi YUV.
FOURCC | Popis |
---|---|
P016 | Planar, 4:2:0, 16-bit. |
P010 | Planar, 4:2:0, 10 bit. |
P216 | Planar, 4:2:2, 16-bit. |
P210 | Planar, 4:2:2, 10 bit. |
Y216 | Balení, 4:2:2, 16 bitů. |
Y210 | Balení, 4:2:2, 10 bitů. |
Y416 | Balení, 4:4:4, 16bitová verze |
Y410 | Balení, 4:4:4, 10 bitů. |
Identifikátory GUID podtypů byly také definovány z těchto ČTYŘCC; viz identifikátory GUID podtypu videa.
Definice povrchu
Tato část popisuje rozložení paměti jednotlivých formátů. V popisech, které následují, termín WORD odkazuje na 16bitovou hodnotu s trochou 16bitové hodnoty a termín DWORD odkazuje na malou 32bitovou hodnotu.
4:2:0 Formáty
Jsou definovány dva formáty 4:2:0 s kódy FOURCC P016 a P010. Sdílejí stejné rozložení paměti, ale P016 používá 16 bitů na kanál a P010 používá 10 bitů na kanál.
P016 a P010
V těchto dvou formátech se všechny vzorky Y zobrazí jako první v paměti jako pole WORDs sudým počtem řádků. Povrchová strida může být větší než šířka roviny Y. Za tímto polem následuje okamžitě pole WORD, které obsahuje prokládání vy a ukázky V, jak je znázorněno v následujícím diagramu.
Pokud je kombinované pole U-V adresováno jako pole DWORD, obsahuje nejméně významné slovo (LSW) hodnotu U a nejvýznamnější slovo (MSW) obsahuje hodnotu V. Krok kombinované roviny U-V se rovná kroku roviny Y. Rovina U-V má polovinu čar jako letadlo Y.
Tyto dva formáty jsou preferovanými formáty 4:2:0 planar pixel pro reprezentaci YUV s vyšší přesností. U akcelerátorů DirectX Video Acceleration (DXVA) podporujících 10bitovou nebo 16bitovou verzi videa 4:2:0 se očekává, že se jedná o přechodné požadavky.
4:2:2 Formáty
Jsou definovány čtyři formáty 4:2:2, dva planární a dva zabalené. Mají následující kódy FOURCC:
- P216
- P210
- Y216
- Y210
P216 a P210
V těchto dvou planárních formátech se všechny vzorky Y zobrazí jako první v paměti jako pole WORDs sudým počtem řádků. Povrchová strida může být větší než šířka roviny Y. Za tímto polem následuje okamžitě pole WORD, které obsahuje prokládání vy a ukázky V, jak je znázorněno v následujícím diagramu.
Pokud je kombinované pole U-V adresováno jako pole DWORD, LSW obsahuje hodnotu U a MSW obsahuje hodnotu V. Krok kombinované roviny U-V se rovná kroku roviny Y. Rovina U-V má stejný počet linek jako rovina Y.
Tyto dva formáty jsou preferovanými formáty 4:2:2 planar pixel pro reprezentaci YUV s vyšší přesností. U akcelerátorů DirectX Video Acceleration (DXVA) podporujících 10bitové nebo 16bitové video 4:2:2 se očekává, že se jedná o přechodné požadavky.
Y216 a Y210
V těchto dvou zabalených formátech se každý pár pixelů uloží jako matice čtyř WORDs, jak je znázorněno na následujícím obrázku.
První WORD v poli obsahuje první vzorek Y ve dvojici, druhý WORD obsahuje ukázku U, třetí WORD obsahuje druhý vzorek Y a čtvrtý WORD obsahuje vzorek V.
Y210 je shodný s Y216 s tím rozdílem, že každý vzorek obsahuje jenom 10 bitů významných dat. Nejméně významné 6 bitů je nastaveno na nulu, jak je popsáno výše.
4:4:4 Formáty
Jsou definovány dva formáty 4:4:4 s kódy FOURCC Y410 a Y416. Oba jsou zabalené formáty.
Y410
Tento formát je zabalená 10bitová reprezentace, která obsahuje 2 bity alfa. Každý pixel je kódován jako jeden DWORD s rozložením paměti znázorněným v následujícím diagramu.
Bity 0-9 obsahují vzorek U, bity 10-19 obsahují vzorek Y, bity 20-29 obsahují vzorek V a bity 30-31 obsahují alfa hodnotu. Chcete-li označit, že pixel je zcela neprůhlený, musí aplikace nastavit dva alfa bity, které se rovnají 0x03.
Y416
Tento formát je zabalená 16bitová reprezentace, která obsahuje 16 bitů alfa. Každý pixel je kódován jako dvojice DWORD, jak je znázorněno na následujícím obrázku.
Bity 0-15 obsahují vzorek U, bity 16-31 obsahují vzorek Y, bity 32-47 obsahují vzorek V a bity 48-63 obsahují alfa hodnotu.
Chcete-li označit, že pixel je zcela neprůhlený, musí aplikace nastavit dva alfa bajty, které se rovnají 0xFFFF. Tento formát je určen především jako zprostředkující formát během zpracování obrázku, aby se zabránilo akumulace chyb.
Preferované formáty YUV
Následující tabulka uvádí upřednostňované formáty YUV, včetně 8bitových formátů.
Formát | Vzorkování chromy | Zabalené nebo planární | Bity na kanál |
---|---|---|---|
AYUV | 4:4:4 | Zabalený | 8 |
Y410 | 4:4:4 | Zabalený | 10 |
Y416 | 4:4:4 | Zabalený | 16 |
AI44 | 4:4:4 | Zabalený | Paletovaná |
YUY2 | 4:2:2 | Zabalený | 8 |
Y210 | 4:2:2 | Zabalený | 10 |
Y216 | 4:2:2 | Zabalený | 16 |
P210 | 4:2:2 | Rovinný | 10 |
P216 | 4:2:2 | Rovinný | 16 |
NV12 | 4:2:0 | Rovinný | 8 |
P010 | 4:2:0 | Rovinný | 10 |
P016 | 4:2:0 | Rovinný | 16 |
NV11 | 4:1:1 | Rovinný | 8 |
Doporučuje se, aby objekt podporoval dané schéma vzorkování bitové hloubky a chroma, mělo by podporovat odpovídající formáty YUV uvedené v této tabulce. (Objekty můžou podporovat další formáty, které tu nejsou uvedené.)
Související témata