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

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.

diagrama que muestra la representación de 10 bits

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.

diagrama que muestra el diseño de píxeles p016 y p010

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.

diagrama que muestra el diseño de píxeles p216 y p210

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.

diagrama que muestra el diseño de píxeles y216 e y210.

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.

diagrama que muestra el diseño de píxeles y410.

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.

diagrama que muestra el diseño de píxeles y416.

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

Formatos YUV recomendados de 8 bits para la representación de vídeo

GUID de subtipo de vídeo

Tipos de medios de vídeo