Formats vidéo YUV 10 bits et 16 bits
Cette rubrique décrit les formats YUV 10 et 16 bits recommandés pour la capture, le traitement et l’affichage de vidéos dans le système d’exploitation Microsoft Windows.
Cette rubrique contient les sections suivantes :
- Vue d'ensemble
- Codes FOURCC pour YUV 10 bits et 16 bits
- Définitions surface
- Formats YUV préférés
- Rubriques connexes
Vue d’ensemble
Ces formats utilisent une représentation à point fixe pour le canal luma et les canaux chroma (C’b et C’r). Les exemples de valeurs sont des valeurs mises à l’échelle 8 bits, à l’aide d’un facteur de mise à l’échelle de 2^(n − 8), où n est égal à 10 ou 16, conformément aux sections 7.7-7.8 et 7.11-7.12 de SMPTE 274M. Les conversions de précision peuvent être effectuées à l’aide de simples décalages de bits. Par exemple, si le point blanc d’un format 8 bits est 235, le format 10 bits correspondant a un point blanc à 940 (235 × 4).
Les représentations 16 bits décrites ici utilisent des valeurs WORD peu endiennes pour chaque canal. Les formats 10 bits utilisent également 16 bits pour chaque canal, les 6 bits les plus bas étant définis sur zéro, comme illustré dans le diagramme suivant.
Étant donné que les représentations 10 bits et 16 bits du même format YUV ont la même disposition de mémoire, il est possible de convertir une représentation 10 bits en une représentation 16 sans perte de précision. Il est également possible de convertir une représentation 16 bits en représentation 10 bits. (Toutefois, les formats Y416 et Y410 constituent une exception à cette règle générale, car ils ne partagent pas la même disposition de mémoire.)
Lorsque le matériel graphique lit une surface qui contient une représentation 10 bits, il doit ignorer les 6 bits d’ordre inférieur de chaque canal. Toutefois, si une surface contient des données 16 bits valides, elle doit être identifiée comme une surface 16 bits.
Dans les formats qui contiennent alpha, un pixel entièrement transparent a une valeur alpha de zéro, et un pixel complètement opaque a une valeur alpha de (2^n) à 1, où n est le nombre de bits alpha. Alpha est supposé être une valeur linéaire qui est appliquée à chaque composant une fois que le composant a été converti dans sa forme linéaire normalisée.
Pour les images en mémoire vidéo, le pilote graphique sélectionne l’alignement de la mémoire de la surface. La surface doit être alignée DWORD . Autrement dit, il est garanti que les lignes individuelles d’une surface commencent à une limite 32 bits, même si l’alignement peut être supérieur à 32 bits. L’origine (0,0) est toujours le coin supérieur gauche de la surface.
Pour les besoins de cette documentation, le terme U équivaut à Cb et le terme V équivaut à Cr.
Codes FOURCC pour YUV 10 bits et 16 bits
Les codes FOURCC pour les formats décrits ici utilisent la convention suivante :
Si le format est planaire, le premier caractère du code FOURCC est « P ». Si le format est emballé, le premier caractère est « Y ».
Le deuxième caractère du code FOURCC est déterminé par l’échantillonnage de la chroma, comme indiqué dans le tableau suivant.
Échantillonnage chroma LETTRE DE CODE FOURCC 4:4:4 '4' 4:2:2 '2' 4:2:1 « 1 » 4:2:0 « 0 » Les deux derniers caractères du FOURCC indiquent le nombre de bits par canal, soit « 16 » pour 16 bits, soit « 10 » pour 10 bits.
À l’aide de ce schéma, les codes FOURCC suivants ont été définis. Aucun format 4:2:1 pour YUV 10 bits ou 16 bits n’a été défini pour l’instant.
FOURCC | Description |
---|---|
P016 | Planar, 4:2:0, 16 bits. |
P010 | Planar, 4:2:0, 10 bits. |
P216 | Planar, 4:2:2, 16 bits. |
P210 | Planar, 4:2:2, 10 bits. |
Y216 | Packed, 4:2:2, 16 bits. |
Y210 | Packed, 4:2:2, 10 bits. |
Y416 | Packed, 4:4:4, 16 bits |
Y410 | Packed, 4:4:4, 10 bits. |
Des GUID de sous-type ont également été définis à partir de ces FOURCC ; consultez GUID de sous-type vidéo.
Définitions surface
Cette section décrit la disposition de la mémoire de chaque format. Dans les descriptions qui suivent, le terme WORD fait référence à une valeur 16 bits peu endiane, et le terme DWORD fait référence à une valeur 32 bits little endian.
Formats 4:2:0
Deux formats 4:2:0 sont définis, avec les codes FOURCC P016 et P010. Ils partagent la même disposition de mémoire, mais P016 utilise 16 bits par canal et P010 utilise 10 bits par canal.
P016 et P010
Dans ces deux formats, tous les exemples Y apparaissent en premier dans la mémoire sous la forme d’un tableau de s WORDavec un nombre pair de lignes. La foulée de surface peut être supérieure à la largeur du plan Y. Ce tableau est immédiatement suivi d’un tableau de words qui contient des exemples vous et V entrelacés, comme illustré dans le diagramme suivant.
Si le tableau U-V combiné est traité en tant que tableau de S DWORD, le mot le moins significatif (LSW) contient la valeur U et le mot le plus significatif (MSW) contient la valeur V. La foulée du plan U-V combiné est égale à la foulée du plan Y. Le plan U-V a deux fois moins de lignes que le plan Y.
Ces deux formats sont les formats de pixels planaires 4:2:0 préférés pour les représentations YUV plus précises. Il s’agit d’une exigence à moyen terme pour les accélérateurs DXVA (DirectX Video Acceleration) qui prennent en charge la vidéo 10 bits ou 16 bits 4:2:0.
Formats 4:2:2
Quatre formats 4:2:2 sont définis, deux planaires et deux empaquetés. Ils ont les codes FOURCC suivants :
- P216
- P210
- Y216
- Y210
P216 et P210
Dans ces deux formats planaires, tous les exemples Y apparaissent d’abord en mémoire sous la forme d’un tableau de WORDs avec un nombre pair de lignes. La foulée de surface peut être supérieure à la largeur du plan Y. Ce tableau est immédiatement suivi d’un tableau de words qui contient des exemples vous et V entrelacés, comme illustré dans le diagramme suivant.
Si le tableau U-V combiné est traité sous la forme d’un tableau de DWORD, le LSW contient la valeur U et le MSW contient la valeur V. La foulée du plan U-V combiné est égale à la foulée du plan Y. Le plan U-V a le même nombre de lignes que le plan Y.
Ces deux formats sont les formats de pixels planaires 4:2:2 préférés pour les représentations YUV plus précises. Il s’agit d’une exigence à moyen terme pour les accélérateurs DirectX Video Acceleration (DXVA) qui prennent en charge la vidéo 10 bits ou 16 bits 4:2:2.
Y216 et Y210
Dans ces deux formats compressés, chaque paire de pixels est stockée sous la forme d’un tableau de quatre WORD, comme illustré dans l’illustration suivante.
Le premier MOT du tableau contient le premier exemple Y de la paire, le second WORD contient l’exemple U, le troisième WORD contient le deuxième exemple Y et le quatrième exemple WORD contient l’exemple V.
Y210 est identique à Y216, sauf que chaque échantillon ne contient que 10 bits de données significatives. Les 6 bits les moins significatifs sont définis sur zéro, comme décrit précédemment.
Formats 4:4:4
Deux formats 4:4:4 sont définis, avec les codes FOURCC Y410 et Y416. Les deux sont des formats packed.
Y410
Ce format est une représentation 10 bits empaquetée qui comprend 2 bits d’alpha. Chaque pixel est encodé en tant que DWORD unique avec la disposition de mémoire indiquée dans le diagramme suivant.
Les bits 0 à 9 contiennent l’exemple U, les bits 10 à 19 contiennent l’exemple Y, les bits 20 à 29 contiennent l’exemple V et les bits 30 à 31 contiennent la valeur alpha. Pour indiquer qu’un pixel est entièrement opaque, une application doit définir les deux bits alpha sur 0x03.
Y416
Ce format est une représentation 16 bits empaquetée qui inclut 16 bits d’alpha. Chaque pixel est encodé sous la forme d’une paire de DWORD, comme illustré dans l’illustration suivante.
Les bits 0 à 15 contiennent l’exemple U, les bits 16 à 31 contiennent l’exemple Y, les bits 32 à 47 contiennent l’exemple V et les bits 48 à 63 contiennent la valeur alpha.
Pour indiquer qu’un pixel est entièrement opaque, une application doit définir les deux octets alpha égaux à 0xFFFF. Ce format est principalement conçu comme format intermédiaire pendant le traitement de l’image afin d’éviter l’accumulation d’erreurs.
Formats YUV préférés
Le tableau suivant répertorie les formats YUV préférés, y compris les formats 8 bits.
Format | Échantillonnage chromatique | Empaqueté ou planaire | Bits par canal |
---|---|---|---|
AYUV | 4:4:4 | Emballé | 8 |
Y410 | 4:4:4 | Emballé | 10 |
Y416 | 4:4:4 | Emballé | 16 |
AI44 | 4:4:4 | Emballé | Palettized |
YUY2 | 4:2:2 | Emballé | 8 |
Y210 | 4:2:2 | Emballé | 10 |
Y216 | 4:2:2 | Emballé | 16 |
P210 | 4:2:2 | Planar | 10 |
P216 | 4:2:2 | Planar | 16 |
NV12 | 4:2:0 | Planar | 8 |
P010 | 4:2:0 | Planar | 10 |
P016 | 4:2:0 | Planar | 16 |
NV11 | 4:1:1 | Planar | 8 |
Il est recommandé que si un objet prend en charge un schéma d’échantillonnage de profondeur de bits et de chroma donné, il doit prendre en charge les formats YUV correspondants répertoriés dans ce tableau. (Les objets peuvent prendre en charge des formats supplémentaires non répertoriés ici.)
Rubriques connexes