Formati video YUV a 10 bit e a 16 bit

Questo argomento descrive i formati YUV a 10 e 16 bit consigliati per l'acquisizione, l'elaborazione e la visualizzazione di video nel sistema operativo Microsoft Windows.

In questo argomento sono incluse le sezioni seguenti:

Panoramica

Questi formati usano una rappresentazione a virgola fissa sia per il canale luma che per i canali C'b e C'r. I valori di esempio vengono ridimensionati a 8 bit, usando un fattore di ridimensionamento pari a 2^(n − 8), dove n è 10 o 16, in base alle sezioni 7.7-7.8 e 7.11-7.12 di SMPTE 274M. Le conversioni di precisione possono essere eseguite usando semplici spostamenti di bit. Ad esempio, se il punto bianco di un formato a 8 bit è 235, il formato a 10 bit corrispondente ha un punto bianco a 940 (235 × 4).

Le rappresentazioni a 16 bit descritte qui usano valori WORD little-endian per ogni canale. I formati a 10 bit usano anche 16 bit per ogni canale, con i 6 bit più bassi impostati su zero, come illustrato nel diagramma seguente.

diagramma che mostra la rappresentazione a 10 bit

Poiché le rappresentazioni a 10 bit e a 16 bit dello stesso formato YUV hanno lo stesso layout di memoria, è possibile eseguire il cast di una rappresentazione a 10 bit in una rappresentazione a 16 senza perdita di precisione. È anche possibile eseguire il cast di una rappresentazione a 16 bit in una rappresentazione a 10 bit. I formati Y416 e Y410 sono un'eccezione a questa regola generale, tuttavia, perché non condividono lo stesso layout di memoria.

Quando l'hardware grafico legge una superficie contenente una rappresentazione a 10 bit, deve ignorare i 6 bit di ogni canale. Se una superficie contiene dati a 16 bit validi, tuttavia, deve essere identificata come superficie a 16 bit.

Nei formati che contengono alfa, un pixel completamente trasparente ha un valore alfa pari a zero e un pixel completamente opaco ha un valore alfa pari a (2^n) - 1, dove n è il numero di bit alfa. Si presuppone che alfa sia un valore lineare applicato a ogni componente dopo che il componente è stato convertito nella forma lineare normalizzata.

Per le immagini in memoria video, il driver grafico seleziona l'allineamento della memoria della superficie. La superficie deve essere allineata a DWORD . Ovvero, le singole linee all'interno di una superficie sono garantite a partire da un limite a 32 bit, anche se l'allineamento può essere maggiore di 32 bit. L'origine (0,0) è sempre l'angolo superiore sinistro della superficie.

Ai fini di questa documentazione, il termine U equivale a Cb e il termine V equivale a Cr.

Codici FOURCC per YUV a 10 bit e a 16 bit

I codici FOURCC per i formati descritti di seguito usano la convenzione seguente:

  • Se il formato è planare, il primo carattere nel codice FOURCC è "P". Se il formato è compresso, il primo carattere è "Y".

  • Il secondo carattere nel codice FOURCC è determinato dal campionamento cromatico, come illustrato nella tabella seguente.

    Campionamento cromatico LETTERA di codice FOURCC
    4:4:4 '4'
    4:2:2 '2'
    4:2:1 '1'
    4:2:0 '0'

     

  • I due caratteri finali in FOURCC indicano il numero di bit per canale, ovvero '16' per 16 bit o '10' per 10 bit.

Utilizzando questo schema sono stati definiti i codici FOURCC seguenti. In questo momento non sono stati definiti formati 4:2:1 per YUV a 10 bit o a 16 bit.

FOURCC Descrizione
P016 Planar, 4:2:0, 16 bit.
P010 Planar, 4:2:0, 10 bit.
P216 Planare, 4:2:2, 16 bit.
P210 Planare, 4:2:2, 10 bit.
Y216 Compresso, 4:2:2, 16 bit.
Y210 Compresso, 4:2:2, 10 bit.
Y416 Compresso, 4:4:4, 16 bit
Y410 Compresso, 4:4:4, 10 bit.

 

I GUID del sottotipo sono stati definiti anche da questi QUATTROCCC; vedere GUID sottotipo video.

Definizioni di superficie

In questa sezione viene descritto il layout della memoria di ogni formato. Nelle descrizioni seguenti il termine WORD si riferisce a un valore a 16 bit little-endian e il termine DWORD fa riferimento a un valore a 32 bit little-endian.

Formati 4:2:0

Vengono definiti due formati 4:2:0, con i codici FOURCC P016 e P010. Condividono lo stesso layout di memoria, ma P016 usa 16 bit per canale e P010 usa 10 bit per canale.

P016 e P010

In questi due formati, tutti gli esempi Y vengono visualizzati per primi in memoria come matrice di WORDcon un numero pari di righe. Lo stride di superficie può essere maggiore della larghezza del piano Y. Questa matrice è seguita immediatamente da una matrice di WORDche contiene esempi interleaved e V, come illustrato nel diagramma seguente.

diagramma che mostra il layout in pixel p016 e p010

Se la matrice U-V combinata viene indirizzata come matrice di DWORDs, la parola meno significativa (LSW) contiene il valore U e la parola più significativa (MSW) contiene il valore V. Lo stride del piano U-V combinato è uguale allo stride del piano Y. Il piano U-V ha una metà delle linee del piano Y.

Questi due formati sono i formati di pixel planari 4:2:0 preferiti per le rappresentazioni YUV con precisione più elevata. Dovrebbero essere un requisito intermedio per gli acceleratori DXVA (DirectX Video Acceleration) che supportano video a 4:2:0 a 10 bit o a 16 bit.

Formati 4:2:2

Vengono definiti quattro formati 4:2:2, due planari e due compressi. Hanno i codici FOURCC seguenti:

  • P216
  • P210
  • Y216
  • Y210

P216 e P210

In questi due formati planari, tutti gli esempi Y vengono visualizzati per primi in memoria come matrice di WORDcon un numero pari di righe. Lo stride di superficie può essere maggiore della larghezza del piano Y. Questa matrice è seguita immediatamente da una matrice di WORDche contiene esempi interleaved e V, come illustrato nel diagramma seguente.

diagramma che mostra il layout pixel p216 e p210

Se la matrice U-V combinata viene indirizzata come matrice di DWORDs, LSW contiene il valore U e MSW contiene il valore V. Lo stride del piano U-V combinato è uguale allo stride del piano Y. Il piano U-V ha lo stesso numero di linee del piano Y.

Questi due formati sono i formati preferiti di pixel planari 4:2:2 per rappresentazioni YUV con precisione superiore. Si prevede che siano requisiti intermedi per gli acceleratori DIRECTX Video Acceleration (DXVA) che supportano video a 10 bit o a 16 bit 4:2:2.

Y216 e Y210

In questi due formati compressi ogni coppia di pixel viene archiviata come matrice di quattro word, come illustrato nella figura seguente.

diagramma che mostra il layout di y216 e y210 pixel.

Il primo word nella matrice contiene il primo esempio Y nella coppia, il secondoword contiene l'esempio U, il terzo word contiene il secondo esempio Y e il quarto word contiene l'esempio V.

Y210 è identico a Y216, ad eccezione del fatto che ogni esempio contiene solo 10 bit di dati significativi. I 6 bit meno significativi sono impostati su zero, come descritto in precedenza.

Formati 4:4:4

Vengono definiti due formati 4:4:4, con i codici FOURCC Y410 e Y416. Entrambi sono formati compressi.

Y410

Questo formato è una rappresentazione a 10 bit completa che include 2 bit di alfa. Ogni pixel viene codificato come singolo DWORD con il layout della memoria illustrato nel diagramma seguente.

diagramma che mostra il layout di y410 pixel.

I bit 0-9 contengono l'esempio U, i bit 10-19 contengono l'esempio Y, i bit 20-29 contengono l'esempio V e i bit 30-31 contengono il valore alfa. Per indicare che un pixel è completamente opaco, un'applicazione deve impostare i due bit alfa uguali a 0x03.

Y416

Questo formato è una rappresentazione a 16 bit completa che include 16 bit di alfa. Ogni pixel viene codificato come coppia di DWORDs, come illustrato nella figura seguente.

diagramma che mostra il layout dei pixel y416.

I bit 0-15 contengono l'esempio U, i bit 16-31 contengono l'esempio Y, i bit 32-47 contengono l'esempio V e i bit 48-63 contengono il valore alfa.

Per indicare che un pixel è completamente opaco, un'applicazione deve impostare i due byte alfa uguali a 0xFFFF. Questo formato è destinato principalmente come formato intermedio durante l'elaborazione delle immagini per evitare l'accumulo di errori.

Formati YUV preferiti

Nella tabella seguente sono elencati i formati YUV preferiti, inclusi i formati a 8 bit.

Formato Campionamento di Chroma Confezionato o planare Bit per canale
AYUV 4:4:4 Pranzo 8
Y410 4:4:4 Pranzo 10
Y416 4:4:4 Pranzo 16
AI44 4:4:4 Pranzo Palettizzato
YUY2 4:2:2 Pranzo 8
Y210 4:2:2 Pranzo 10
Y216 4:2:2 Pranzo 16
P210 4:2:2 Planare 10
P216 4:2:2 Planare 16
NV12 4:2:0 Planare 8
P010 4:2:0 Planare 10
P016 4:2:0 Planare 16
NV11 4:1:1 Planare 8

 

È consigliabile che se un oggetto supporta una determinata profondità bit e uno schema di campionamento di chroma, deve supportare i formati YUV corrispondenti elencati in questa tabella. Gli oggetti potrebbero supportare formati aggiuntivi non elencati qui.

Formati YUV consigliati a 8 bit per il rendering video

GUID del sottotipo video

Tipi di supporti video