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
- Codici FOURCC per YUV a 10 bit e a 16 bit
- Definizioni di superficie
- Formati YUV preferiti
- Argomenti correlati
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.
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.
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.
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.
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.
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.
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.
Argomenti correlati