Partilhar via


Formatos de vídeo YUV de 10 bits e 16 bits

Este tópico descreve os formatos YUV de 10 e 16 bits recomendados para capturar, processar e exibir vídeo no sistema operacional Microsoft Windows.

Este tópico contém as seguintes seções:

Visão geral

Estes formatos usam uma representação de ponto fixo para o canal luma e os canais chroma (C'b e C'r). Os valores de amostra são dimensionados valores de 8 bits, usando um fator de escala de 2^(n − 8), onde n é 10 ou 16, conforme as seções 7.7-7.8 e 7.11-7.12 do SMPTE 274M. Conversões de precisão podem ser realizadas usando deslocamentos de bits simples. Por exemplo, se o ponto branco de um formato de 8 bits for 235, o formato de 10 bits correspondente terá um ponto branco em 940 (235 × 4).

As representações de 16 bits descritas aqui usam valores little-endian WORD para cada canal. Os formatos de 10 bits também usam 16 bits para cada canal, com os 6 bits mais baixos definidos como zero, como mostrado no diagrama a seguir.

diagrama mostrando a representação de 10 bits

Como as representações de 10 bits e 16 bits do mesmo formato YUV têm o mesmo layout de memória, é possível converter uma representação de 10 bits para uma representação de 16 sem perda de precisão. Também é possível converter uma representação de 16 bits para uma representação de 10 bits. (Os formatos Y416 e Y410 são uma exceção a esta regra geral, no entanto, porque eles não compartilham o mesmo layout de memória.)

Quando o hardware gráfico lê uma superfície que contém uma representação de 10 bits, ele deve ignorar os 6 bits de ordem baixa de cada canal. No entanto, se uma superfície contiver dados válidos de 16 bits, ela deverá ser identificada como uma superfície de 16 bits.

Nos formatos que contêm alfa, um pixel completamente transparente tem um valor alfa de zero, e um pixel completamente opaco tem um valor alfa de (2^n) – 1, onde n é o número de bits alfa. Alfa é assumido como um valor linear que é aplicado a cada componente depois que o componente foi convertido em sua forma linear normalizada.

Para imagens na memória de vídeo, o driver gráfico seleciona o alinhamento da memória da superfície. A superfície deve estar DWORD alinhada. Ou seja, linhas individuais dentro de uma superfície são garantidas para começar em um limite de 32 bits, embora o alinhamento possa ser maior do que 32 bits. A origem (0,0) é sempre o canto superior esquerdo da superfície.

Para efeitos da presente documentação, o termo U é equivalente a Cb, e o termo V é equivalente a Cr.

Códigos FOURCC para YUV de 10 bits e 16 bits

Os códigos FOURCC para os formatos descritos aqui usam a seguinte convenção:

  • Se o formato for plano, o primeiro caractere no código FOURCC é 'P'. Se o formato estiver compactado, o primeiro caractere é 'Y'.

  • O segundo caractere no código FOURCC é determinado pela amostragem chroma, como mostrado na tabela a seguir.

    Amostragem de cromo Letra de código FOURCC
    4:4:4 '4'
    4:2:2 '2'
    4:2:1 '1'
    4:2:0 '0'

     

  • Os dois últimos caracteres no FOURCC indicam o número de bits por canal, '16' para 16 bits ou '10' para 10 bits.

Usando este esquema, os seguintes códigos FOURCC foram definidos. Nenhum formato 4:2:1 para YUV de 10 bits ou 16 bits foi definido no momento.

FOURCC Descrição
Pág. 016 Planar, 4:2:0, 16-bit.
Pág. 010 Planar, 4:2:0, 10-bit.
Pág. 216 Planar, 4:2:2, 16-bit.
Pág. 210 Planar, 4:2:2, 10-bit.
Y216 Embalado, 4:2:2, 16-bit.
Y210 Embalado, 4:2:2, 10-bit.
Y416 Embalado, 4:4:4, 16-bit
Y410 Embalado, 4:4:4, 10-bit.

 

Os GUIDs de subtipo também foram definidos a partir desses FOURCCs; consulte GUIDs de subtipo de vídeo.

Definições de superfície

Esta seção descreve o layout de memória de cada formato. Nas descrições que se seguem, o termo WORD refere-se a um valor de 16 bits little-endian, e o termo DWORD refere-se a um valor de 32 bits little-endian.

Formatos 4:2:0

São definidos dois formatos 4:2:0, com os códigos FOURCC P016 e P010. Eles compartilham o mesmo layout de memória, mas P016 usa 16 bits por canal e P010 usa 10 bits por canal.

P016 e P010

Nesses dois formatos, todas as amostras Y aparecem primeiro na memória como uma matriz de WORDs com um número par de linhas. A passada superficial pode ser maior do que a largura do plano Y. Essa matriz é seguida imediatamente por uma matriz de WORDs que contém amostras intercaladas u e V, conforme mostrado no diagrama a seguir.

diagrama mostrando o layout de pixel p016 e p010

Se a matriz U-V combinada for endereçada como uma matriz de DWORDs, a palavra menos significativa (LSW) conterá o valor U e a palavra mais significativa (MSW) conterá o valor V. A passada do plano combinado U-V é igual à passada do plano Y. O avião U-V tem metade das linhas que o plano Y.

Estes dois formatos são os formatos de pixel planar 4:2:0 preferidos para representações YUV de maior precisão. Espera-se que eles sejam um requisito de médio prazo para aceleradores DirectX Video Acceleration (DXVA) que suportam vídeo 4:2:0 de 10 bits ou 16 bits.

Formatos 4:2:2

São definidos quatro formatos 4:2:2, dois planares e dois embalados. Eles têm os seguintes códigos FOURCC:

  • Pág. 216
  • Pág. 210
  • Y216
  • Y210

P216 e P210

Nesses dois formatos planares, todas as amostras Y aparecem primeiro na memória como uma matriz de WORDs com um número par de linhas. A passada superficial pode ser maior do que a largura do plano Y. Essa matriz é seguida imediatamente por uma matriz de WORDs que contém amostras intercaladas u e V, conforme mostrado no diagrama a seguir.

diagrama mostrando o layout de pixel p216 e p210

Se a matriz U-V combinada for endereçada como uma matriz de DWORDs, o LSW conterá o valor U e o MSW conterá o valor V. A passada do plano combinado U-V é igual à passada do plano Y. O plano U-V tem o mesmo número de linhas que o plano Y.

Estes dois formatos são os formatos de pixel planar 4:2:2 preferidos para representações YUV de maior precisão. Espera-se que eles sejam um requisito de médio prazo para aceleradores DirectX Video Acceleration (DXVA) que suportam vídeo 4:2:2 de 10 bits ou 16 bits.

Y216 e Y210

Nesses dois formatos compactados, cada par de pixels é armazenado como uma matriz de quatro WORDs, conforme mostrado na ilustração a seguir.

diagrama mostrando o layout de pixels y216 e y210.

A primeira WORD na matriz contém a primeira amostra Y no par, a segunda WORD contém a amostra U, a terceira WORD contém a segunda amostra Y e a quarta WORD contém a amostra V.

O Y210 é idêntico ao Y216, exceto que cada amostra contém apenas 10 bits de dados significativos. Os 6 bits menos significativos são definidos como zero, conforme descrito anteriormente.

Formatos 4:4:4

Dois formatos 4:4:4 são definidos, com os códigos FOURCC Y410 e Y416. Ambos são formatos embalados.

Y410

Este formato é uma representação compactada de 10 bits que inclui 2 bits de alfa. Cada pixel é codificado como um único DWORD com o layout de memória mostrado no diagrama a seguir.

diagrama mostrando o layout de pixel y410.

Os bits 0-9 contêm a amostra U, os bits 10-19 contêm a amostra Y, os bits 20-29 contêm a amostra V e os bits 30-31 contêm o valor alfa. Para indicar que um pixel é totalmente opaco, um aplicativo deve definir os dois bits alfa iguais a 0x03.

Y416

Este formato é uma representação compactada de 16 bits que inclui 16 bits de alfa. Cada pixel é codificado como um par de DWORDs, conforme mostrado na ilustração a seguir.

diagrama mostrando o layout de pixel y416.

Os bits 0-15 contêm a amostra U, os bits 16-31 contêm a amostra Y, os bits 32-47 contêm a amostra V e os bits 48-63 contêm o valor alfa.

Para indicar que um pixel é totalmente opaco, um aplicativo deve definir os dois bytes alfa iguais a 0xFFFF. Este formato destina-se principalmente como um formato intermediário durante o processamento de imagem para evitar o acúmulo de erros.

Formatos YUV preferidos

A tabela a seguir lista os formatos YUV preferidos, incluindo formatos de 8 bits.

Formato Amostragem de cromo Embalado ou planar 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 Palettizado
YUY2 4:2:2 Embalado 8
Y210 4:2:2 Embalado 10
Y216 4:2:2 Embalado 16
Pág. 210 4:2:2 Planar 10
Pág. 216 4:2:2 Planar 16
NV12 4:2:0 Planar 8
Pág. 010 4:2:0 Planar 10
Pág. 016 4:2:0 Planar 16
NV11 4:1:1 Planar 8

 

Recomenda-se que, se um objeto suportar uma determinada profundidade de bits e esquema de amostragem de cromo, ele deve suportar os formatos YUV correspondentes listados nesta tabela. (Os objetos podem suportar formatos adicionais não listados aqui.)

Formatos YUV de 8 bits recomendados para renderização de vídeo

de GUIDs de subtipo de vídeo

tipos de mídia de vídeo