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
- códigos FOURCC para YUV de 10 bits e 16 bits
- Definições de superfície
- Formatos YUV preferidos
- Tópicos relacionados
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.
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.
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.
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.
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.
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.
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.)
Tópicos relacionados