Sdílet prostřednictvím


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

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.

diagram znázorňující 10bitovou reprezentaci

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.

diagram znázorňující rozložení p016 a p010 pixelů

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.

diagram znázorňující rozložení p216 a p210 pixelů

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.

diagram znázorňující rozložení y216 a y210 pixelů

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.

diagram zobrazující rozložení y410 pixelů

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.

diagram znázorňující rozložení y416 pixelů

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é.)

doporučené 8bitové formáty YUV pro vykreslování videa

identifikátory GUID podtypu videa

typy médií videa