Formatos de vídeo YUV de 10 y 16 bits
En este tema se describen los formatos YUV de 10 y 16 bits que se recomiendan para capturar, procesar y mostrar vídeo en el sistema operativo Microsoft Windows.
Este tema contiene las siguientes secciones:
- Información general
- Códigos FOURCC para YUV de 10 y 16 bits
- Definiciones de Superficie
- Formatos YUV preferidos
- Temas relacionados
Información general
Estos formatos usan una representación de punto fijo para el canal luma y los canales cromáticos (C'b y C'r). Los valores de ejemplo se escalan a valores de 8 bits, utilizando un factor de escala de 2^(n − 8), donde n es 10 o 16, según las secciones 7.7-7.8 y 7.11-7.12 de SMPTE 274M. Las conversiones de precisión se pueden realizar mediante desplazamientos de bits simples. Por ejemplo, si el punto blanco de un formato de 8 bits es de 235, el formato de 10 bits correspondiente tiene un punto blanco en 940 (235 × 4).
Las representaciones de 16 bits que se describen aquí usan valores de WORD little-endian para cada canal. Los formatos de 10 bits también usan 16 bits para cada canal, con los 6 bits más bajos establecidos en cero, como se muestra en el diagrama siguiente.
Dado que las representaciones de 10 y 16 bits del mismo formato YUV tienen el mismo diseño de memoria, es posible convertir una representación de 10 bits a una representación de 16 bits sin pérdida de precisión. También es posible convertir una representación de 16 bits a una representación de 10 bits. (Los formatos Y416 e Y410 son una excepción a esta regla general, sin embargo, porque no comparten el mismo diseño de memoria).
Cuando el hardware gráfico lee una superficie que contiene una representación de 10 bits, debe omitir los 6 bits de orden bajo de cada canal. Sin embargo, si una superficie contiene datos válidos de 16 bits, debe identificarse como una superficie de 16 bits.
En los formatos que contienen alfa, un píxel completamente transparente tiene un valor alfa de cero y un píxel completamente opaco tiene un valor alfa de (2^n) – 1, donde n es el número de bits alfa. Se supone que alpha es un valor lineal que se aplica a cada componente después de que el componente se haya convertido en su forma lineal normalizada.
En el caso de las imágenes en memoria de vídeo, el controlador de gráficos selecciona la alineación de memoria de la superficie. La superficie debe estar alineada con DWORD . Es decir, se garantiza que las líneas individuales de una superficie comiencen en un límite de 32 bits, aunque la alineación puede ser superior a 32 bits. El origen (0,0) es siempre la esquina superior izquierda de la superficie.
Para los fines de esta documentación, el término U es equivalente a Cb, y el término V es equivalente a Cr.
Códigos FOURCC para YUV de 10 y 16 bits
Los códigos FOURCC para los formatos descritos aquí usan la siguiente convención:
Si el formato es planar, el primer carácter del código FOURCC es "P". Si el formato está empaquetado, el primer carácter es "Y".
El segundo carácter del código FOURCC viene determinado por el muestreo cromático, como se muestra en la tabla siguiente.
Muestreo cromático Letra de código FOURCC 4:4:4 '4' 4:2:2 '2' 4:2:1 '1' 4:2:0 "0" Los dos caracteres finales de FOURCC indican el número de bits por canal, ya sea "16" para 16 bits o "10" para 10 bits.
Con este esquema, se han definido los siguientes códigos FOURCC. En este momento no se han definido formatos de 4:2:1 para YUV de 10 o 16 bits.
FOURCC | Descripción |
---|---|
P016 | Plano, 4:2:0, 16 bits. |
P010 | Plano, 4:2:0, 10 bits. |
P216 | Plano, 4:2:2, 16 bits. |
P210 | Plano, 4:2:2, 10 bits. |
Y216 | Empaquetado, 4:2:2, 16 bits. |
Y210 | Empaquetado, 4:2:2, 10 bits. |
Y416 | Empaquetado, 4:4:4, 16 bits |
Y410 | Empaquetado, 4:4:4, 10 bits. |
Los GUID de subtipo también se han definido a partir de estos FOURC; consulte GUID de subtipo de vídeo.
Definiciones de Superficie
En esta sección se describe el diseño de memoria de cada formato. En las descripciones siguientes, el término WORD hace referencia a un valor de 16 bits little-endian y el término DWORD hace referencia a un valor little-endian de 32 bits.
Formatos 4:2:0
Se definen dos formatos 4:2:0, con los códigos FOURCC P016 y P010. Comparten el mismo diseño de memoria, pero P016 usa 16 bits por canal y P010 usa 10 bits por canal.
P016 y P010
En estos dos formatos, todas las muestras Y aparecen primero en la memoria como una matriz de WORDs con un número par de líneas. El intervalo de superficie puede ser mayor que el ancho del plano Y. Esta matriz va seguida inmediatamente de una matriz de WORDs que contiene muestras intercaladas y V, como se muestra en el diagrama siguiente.
Si la matriz de U-V combinada se trata como una matriz de DWORDs, la palabra menos significativa (LSW) contiene el valor U y la palabra más significativa (MSW) contiene el valor V. El paso del plano U-V combinado es igual al paso del plano Y. El plano U-V tiene la mitad de las líneas que el plano Y.
Estos dos formatos son los formatos de píxel plano 4:2:0 preferidos para representaciones YUV de mayor precisión. Se espera que sean un requisito de término intermedio para los aceleradores de aceleración de vídeo DirectX (DXVA) que admiten vídeos de 10 o 16 bits 4:2:0.
Formatos 4:2:2
Se definen cuatro formatos 4:2:2, dos planos y dos empaquetados. Tienen los siguientes códigos FOURCC:
- P216
- P210
- Y216
- Y210
P216 y P210
En estos dos formatos planar, todas las muestras Y aparecen primero en la memoria como una matriz de WORDs con un número par de líneas. El intervalo de superficie puede ser mayor que el ancho del plano Y. Esta matriz va seguida inmediatamente de una matriz de WORDs que contiene muestras intercaladas y V, como se muestra en el diagrama siguiente.
Si la matriz de U-V combinada se aborda como una matriz de DWORDs, el LSW contiene el valor U y el MSW contiene el valor V. El paso del plano U-V combinado es igual al paso del plano Y. El plano U-V tiene el mismo número de líneas que el plano Y.
Estos dos formatos son los formatos de píxel plano de 4:2:2 preferidos para representaciones YUV de mayor precisión. Se espera que sean un requisito de término intermedio para los aceleradores de aceleración de vídeo directX (DXVA) que admiten vídeos de 10 o 16 bits 4:2:2.
Y216 y Y210
En estos dos formatos empaquetados, cada par de píxeles se almacena como una matriz de cuatro WORDs, como se muestra en la ilustración siguiente.
La primera PALABRA de la matriz contiene el primer ejemplo Y del par, el segundo WORD contiene el ejemplo U, el tercer WORD contiene el segundo ejemplo Y y el cuarto WORD contiene el ejemplo V.
Y210 es idéntico a Y216, salvo que cada muestra contiene solo 10 bits de datos significativos. Los 6 bits menos significativos se establecen en cero, como se ha descrito anteriormente.
4:4:4 Formatos
Se definen dos formatos 4:4:4, con los códigos FOURCC Y410 y Y416. Ambos son formatos empaquetados.
Y410
Este formato es una representación empaquetada de 10 bits que incluye 2 bits de alfa. Cada píxel se codifica como una sola DWORD con el diseño de memoria que se muestra en el diagrama siguiente.
Los bits 0-9 contienen la muestra U, los bits 10-19 contienen la muestra Y, los bits 20-29 contienen la muestra V y los bits 30-31 contienen el valor alfa. Para indicar que un píxel es totalmente opaco, una aplicación debe establecer los dos bits alfa iguales a 0x03.
Y416
Este formato es una representación empaquetada de 16 bits que incluye 16 bits de alfa. Cada píxel se codifica como un par de DWORDs, como se muestra en la ilustración siguiente.
Los bits 0-15 contienen la muestra U, los bits 16-31 contienen la muestra Y, los bits 32-47 contienen la muestra V y los bits 48-63 contienen el valor alfa.
Para indicar que un píxel es totalmente opaco, una aplicación debe establecer los dos bytes alfa iguales a 0xFFFF. Este formato está pensado principalmente como un formato intermedio durante el procesamiento de imágenes para evitar la acumulación de errores.
Formatos YUV preferidos
En la tabla siguiente se enumeran los formatos YUV preferidos, incluidos los formatos de 8 bits.
Formato | Muestreo de cromática | Empaquetado o plano | Bits por canal |
---|---|---|---|
AYUV | 4:4:4 | Embalado | 8 |
Y410 | 4:4:4 | Embalado | 10 |
Y416 | 4:4:4 | Embalado | 16 |
AI44 | 4:4:4 | Embalado | Palettized |
YUY2 | 4:2:2 | Embalado | 8 |
Y210 | 4:2:2 | Embalado | 10 |
Y216 | 4:2:2 | Embalado | 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 |
Se recomienda que si un objeto admite un esquema de muestreo cromático y profundidad de bits determinado, debe admitir los formatos YUV correspondientes enumerados en esta tabla. (Los objetos pueden admitir formatos adicionales que no se enumeran aquí).
Temas relacionados