Compartilhar via


estrutura DXVA_BlendCombination (dxva.h)

A estrutura DXVA_BlendCombination é enviada pelo decodificador de host para o acelerador para especificar como uma imagem combinada é criada a partir de uma imagem de origem e uma imagem gráfica com informações de combinação alfa.

Sintaxe

typedef struct _DXVA_BlendCombination {
  WORD             wPictureSourceIndex;
  WORD             wBlendedDestinationIndex;
  RECT             PictureSourceRect16thPel;
  RECT             PictureDestinationRect;
  RECT             GraphicSourceRect;
  RECT             GraphicDestinationRect;
  WORD             wBlendDelay;
  BYTE             bBlendOn;
  BYTE             bWholePlaneAlpha;
  DXVA_AYUVsample2 OutsideYUVcolor;
} DXVA_BlendCombination, *LPDXVA_BlendCombination;

Membros

wPictureSourceIndex

Especifica o índice de superfície descompactado, conforme definido pelo conteúdo do DWORD apontado pelo membro lpInputData de DD_BEGINMOCOMPFRAMEDATA em uma chamada anterior a DdMoCompBeginFrame, da imagem a ser combinada com o gráfico. Esse valor será 0xFFFF se a mesclagem alfa de hardware de back-end estiver em uso (quando o membro bConfigBlendType do DXVA_ConfigAlphaCombine for 1).

wBlendedDestinationIndex

Especifica o índice de superfície descompactado, conforme definido pelo conteúdo do DWORD apontado pelo membro lpInputData de DD_BEGINMOCOMPFRAMEDATA em uma chamada anterior para DdMoCompBeginFrame, da imagem combinada a ser criada. Esse valor será 0xFFFF se a mesclagem alfa de hardware de back-end estiver em uso (quando o membro bConfigBlendType do DXVA_ConfigAlphaCombine for 1).

Esse valor não pode ser igual a wPictureSourceIndex , a menos que a mesclagem alfa de hardware de back-end esteja em uso.

PictureSourceRect16thPel

Especifica a área da imagem de origem a ser combinada com a imagem gráfica como uma estrutura RECT . As dimensões são especificadas em unidades de um décimo sexto da distância entre os valores de exemplo do componente de luminância. (Em outras palavras, os membros na estrutura RECT são representações de ponto fixo que têm 28 bits antes do ponto binário e 4 bits após o ponto binário.) Essa precisão de exemplo de um décimo sexto permite que PictureSourceRect16thPel contenha a mesma precisão que as variáveis de verificação pan frame_centre_horizontal_offset e frame_centre_vertical_offset no vídeo MPEG-2.

Se o membro bConfigPictureResizing de DXVA_ConfigAlphaCombine for zero, todas as dimensões em PictureSourceRect16thPel deverão ser múltiplos inteiros de 16.

PictureDestinationRect

Especifica a área da imagem de destino como uma estrutura RECT. Isso conterá a área definida para a imagem de origem por PictureSourceRect16thPel.

Se o membro bConfigPictureResizing de DXVA_ConfigAlphaCombine for zero, a área especificada por PictureDestinationRect deverá ter a mesma largura e altura que a área especificada por PictureSourceRect16thPel. Se PictureDestinationRect for diferente de PictureSourceRect16thPel, o método de resampling a ser aplicado não será especificado, mas deverá ter uma qualidade que seja pelo menos equivalente à do resampling bilinear.

GraphicSourceRect

Especifica a área da imagem gráfica de origem como uma estrutura RECT . Essa área é combinada com a parte da imagem de origem especificada por PictureSourceRect16thPel para criar a imagem de combinação alfa.

GraphicDestinationRect

Especifica a área da imagem gráfica de destino como uma estrutura RECT .

Se o membro bConfigGraphicResizing de DXVA_ConfigAlphaCombine for zero, a imagem de destino deverá ter a mesma largura e altura que a área especificada por GraphicSourceRect. Se GraphicDestinationRect for diferente do tamanho de GraphicSourceRect, o método de resampling a ser aplicado à imagem gráfica não será especificado. No entanto, o método de resampling usado deve ter uma qualidade que seja pelo menos equivalente a uma resampa bilinear de uma superfície AYUV que representa as informações de mesclagem.

wBlendDelay

Especifica o número de milissegundos de atraso antes da combinação de mesclagem entrar em vigor. Se a mesclagem de hardware de back-end estiver em uso (por exemplo, se o membro bConfigBlendType do DXVA_ConfigAlphaCombine for 1), wBlendDelay conterá o número de milissegundos de atraso antes da combinação de mesclagem entrar em vigor. Se a mesclagem de front-end estiver em uso, esse membro não terá significado e deverá ser zero.

bBlendOn

Especifica quando uma operação de combinação de mesclagem é iniciada e interrompida. Se a mesclagem de hardware de back-end estiver em uso, a mesclagem será aplicada a partir do tempo especificado em uma operação de combinação de combinação (com bBlendOn igual a 1) até o tempo de execução de uma nova combinação de mesclagem (com bBlendOn igual a 1) ou até que a mesclagem seja desabilitada por uma operação de combinação de mesclagem (com bBlendOn igual a zero). Se a mesclagem de hardware de back-end estiver em uso e bBlendOn for zero, o único outro valor no buffer de combinação de combinação alfa-blend que tem significado será wBlendDelay. Se a mesclagem de front-end estiver em uso, esse membro não terá significado e deverá ser zero.

bWholePlaneAlpha

Contém um multiplicador de opacidade para o canal alfa da imagem gráfica. O valor zero indica que a imagem gráfica é transparente (para que o conteúdo gráfico não tenha efeito sobre a imagem combinada resultante). O valor 255 indica que a imagem gráfica usa sua opacidade de exemplo completa. Se bWholePlaneAlpha não for igual a zero, a mesclagem especificada será multiplicar a opacidade de cada local no conteúdo gráfico por (bWholePlaneAlpha+1)/256. Para um valor zero de bWholePlaneAlpha, a mesclagem a ser usada é a opacidade especificada na imagem gráfica sem alteração. Isso deverá ser igual a 255 se o membro bConfigWholePlaneAlpha de DXVA_ConfigAlphaCombine for zero.

OutsideYUVcolor

Indica se áreas fora de PictureDestinationRect usam uma cor constante para mesclagem. Nesse caso, esse membro especifica essa constante de cor. O membro OutsideYUVcolor é definido como uma estrutura DXVA_AYUVsample2 . Confira a seção Comentários para obter mais informações.

Comentários

Caso as imagens de origem e destino não estejam no formato 4:4:4, cada segundo exemplo das informações de mesclagem gráfica (por exemplo, a primeira, terceira ou quinta) é aplicada às informações de crominância de origem subampledas na direção vertical ou horizontal, conforme necessário, para produzir o resultado combinado.

As seções a seguir mostram as restrições colocadas nos membros esquerdo, direito, superior e inferior da estrutura RECT.

Restrições de estrutura RECT para PictureSourceRect16thPel

As seguintes restrições se aplicam às dimensões RECT de PictureSourceRect16thPel:
  • esquerda e superior devem ser maiores ou iguais a zero.
  • a direita e a parte inferior devem ser maiores ou iguais à esquerda e à parte superior, respectivamente.
  • Se direita for igual à esquerda ou superior for igual a inferior, todos os membros RECT deverão ter o valor zero indicando que a imagem de origem não é usada. Esse caso só será permitido se o membro bConfigOnlyUsePicDestRectArea de DXVA_ConfigAlphaCombine for zero.
  • direita e inferior não devem exceder 16 vezes a largura e a altura alocadas, respectivamente, da superfície de imagem de origem descompactada.
Por exemplo, se PictureSourceRect16thPel for usado para selecionar uma imagem decodificada mpeg-2 inteira, os valores PictureSourceRect16thPel poderão ser calculados da seguinte maneira:
  • left = 0
  • top = 0
  • right = 16 X horizontal_size
  • bottom = 16 X vertical_size

Restrições de estrutura RECT para PictureDestinationRect

As seguintes restrições se aplicam às dimensões RECT para PictureDestinationRect:
  • esquerda e superior devem ser maiores ou iguais a zero.
  • a direita e a parte inferior devem ser maiores ou iguais à esquerda e à parte superior, respectivamente.
  • Se right for igual à esquerda ou superior for igual a inferior (permitido somente se o membro bConfigOnlyUsePicDestRectArea de DXVA_ConfigAlphaCombine for zero), todos os membros RECT deverão ter o valor zero e PictureSourceRect16thPel também deverá especificar todos os valores com o valor zero.
  • Se o membro bConfigBlendType de DXVA_ConfigAlphaCombine for zero, a direita e a parte inferior não deverão exceder a largura e a altura alocadas, respectivamente, da superfície de imagem de destino descompactada.
  • Se o membro bConfigBlendType de DXVA_ConfigAlphaCombine for 1, a direita e a parte inferior não deverão exceder a largura e a altura alocadas, respectivamente, da superfície gráfica de origem.

Restrições de estrutura RECT para GraphicSourceRect

Se o carregamento de dados de combinação alfa usar o membro bConfigDataType de DXVA_ConfigAlphaLoad com um valor de 2, as seguintes restrições se aplicarão às dimensões RECT de GraphicSourceRect:
  • superior e esquerda devem ser zero.
  • right deve ser igual à coordenada X final menos a coordenada X inicial do último DVD anterior SET_DAREA DCCMD, mais 1, para ajustar para as diferentes interpretações de retângulo, conforme descrito na observação a seguir na seção ReCT Structure Restrictions for GraphicDestinationRect .
  • bottom deve ser igual à coordenada Y final menos a coordenada Y inicial do último DVD anterior SET_DAREA DCCMD, mais 1, para ajustar para as diferentes interpretações de retângulo.
Se o carregamento de dados de combinação alfa não usar o membro bConfigDataType de DXVA_ConfigAlphaLoad com um valor de 2, as seguintes restrições se aplicarão às dimensões RECT de GraphicSourceRect:
  • esquerda e superior devem ser maiores ou iguais a zero.
  • a direita e a parte inferior devem ser maiores ou iguais à esquerda e à parte superior, respectivamente.
  • Se direita for igual à esquerda ou superior for igual a inferior, todos os membros RECT deverão ter o valor zero, indicando que não há uso da imagem gráfica.
  • direita e inferior não devem exceder a largura e a altura alocadas, respectivamente, da imagem de origem gráfica. A largura e a altura alocadas são definidas como amostras de 720 e 576, respectivamente, quando o membro bConfigDataType de DXVA_ConfigAlphaLoad é igual a 2.

Restrições de estrutura RECT para GraphicDestinationRect

As seguintes restrições se aplicam às dimensões RECT de GraphicDestinationRect:
  • esquerda e superior devem ser maiores ou iguais a zero, a menos que esse requisito entre em conflito com a necessidade de deslocar o gráfico em oito exemplos. Esse é o caso nos seguintes cenários:
  • a direita e a parte inferior devem ser maiores ou iguais à esquerda e à parte superior, respectivamente. Se direita for igual à esquerda ou superior for igual a inferior, todos esses membros da estrutura RECT deverão ter o valor zero e GraphicSourceRect também deverá especificar que todos os seus membros tenham o valor zero.
  • Se o membro bConfigBlendType de DXVA_ConfigAlphaCombine for igual a zero, direita e inferior não deverão exceder a largura e a altura alocadas, respectivamente, da superfície de imagem de destino descompactada.
  • Se o membro bConfigBlendType de DXVA_ConfigAlphaCombine for igual a 1, a direita e a parte inferior não deverão exceder a largura e a altura alocadas, respectivamente, da imagem gráfica de origem.
Se o carregamento de dados de combinação alfa usar o membro bConfigDataType de DXVA_ConfigAlphaCombine com um valor de 2 e o membro bConfigGraphicResizing de DXVA_ConfigAlphaCombine com um valor igual a zero, as seguintes restrições adicionais nas dimensões GraphicDestinationRect se aplicarão:
  • top deve ser igual à coordenada Iniciar Y do último DVD anterior SET_DAREA DCCMD.
  • left deve ser igual à coordenada Iniciar X do último DVD anterior SET_DAREA DCCMD ou a esse valor menos 8. Para obter mais informações, consulte Exemplo de DVD 704-wide não pan-scan e Exemplo de DVD 352 em todo o mundo.
  • right deve ser igual ao valor de left, mais a coordenada End X menos a coordenada Start X do último DVD anterior SET_DAREA DCCMD, mais 1, para ajustar para as diferentes interpretações de retângulo descritas na observação a seguir.
  • bottom deve ser igual ao valor de superior mais a coordenada Y final menos a coordenada Y inicial do último DVD anterior SET_DAREA DCCMD, mais 1, para ajustar para as diferentes interpretações de retângulo descritas na observação a seguir.
Nota Há uma diferença entre a maneira como a especificação de vídeo de DVD define uma área retangular de subpicture e a convenção usada pela Microsoft. Essa referência segue a convenção da Microsoft para que um retângulo de largura 10 e altura 10 no canto superior esquerdo da imagem seja definido por superior = 0, esquerda = 0, direita = 10 e inferior = 10. A especificação de vídeo de DVD usa um equivalente de right = 9 e bottom = 9.
 

Definindo valores outsideYUVcolor

Os valores para a estrutura OutsideYUVcolor são os seguintes:
  • O valor de OutsideYUVcolor.bSampleAlpha8 deverá ser 255 se as áreas fora do PictureDestinationRect forem geradas como uma cor constante a ser usada para mesclagem.
  • O valor de OutsideYUVcolor.bSampleAlpha8 deverá ser zero se um dos dois casos a seguir se aplicar:
    • As áreas fora do PictureDestinationRect não são afetadas pela mistura.
    • As áreas fora do PictureDestinationRect não podem ser usadas (conforme indicado pelo membro bConfigStayInPicDestRectArea de DXVA_ConfigAlphaCombine ter um valor de 1).
Todos os outros valores para OutsideYUVcolor.bSampleAlpha8 são reservados para uso futuro.

O valor de OutsideYUVcolor.bSampleAlpha8 deverá ser zero se o membro bConfigStayInPicDestRectArea da estrutura DXVA_ConfigAlphaCombine for igual a 1.

Se OutsideYUVcolor.bSampleAlpha8 for zero, a única área da superfície de destino afetada pela mistura será a parte dentro de PictureDestinationRect.

Se OutsideYUVcolor.bSampleAlpha8 for 255, qualquer área da superfície de destino que esteja fora de PictureDestinationRect , mas dentro de GraphicDestinationRect, será gerada pela combinação do gráfico com a cor especificada nos membros nonalpha de OutsideYUVcolor. Nesse caso, toda a área alocada da superfície de destino que fica fora de PictureDestinationRect e GraphicDestinationRect é definida como a cor especificada nos membros nonalpha de OutsideYUVcolor. Se o membro bConfigBlendType da estrutura DXVA_ConfigAlphaCombine for 1, os membros OutsideYUVcolor serão definidos para indicar a mesclagem com preto especificando bSampleAlpha8 = 255, bY_Value = 16 e bCbValue = bCrValue = 128.

Quando o membro bConfigBlendType da estrutura DXVA_ConfigAlphaCombine é 1 (combinação de hardware de back-end), as operações de mesclagem podem ser um pouco diferentes daquelas descritas nesta referência. Alguns parâmetros de redimensionamento usados para mapear uma imagem de vídeo de uma imagem de origem para um tamanho de imagem de destino podem ser aplicados de maneira modificada para mapear a imagem gráfica para seu local adequado em relação à imagem de origem. No entanto, o resultado combinado será equivalente ao resultado combinado obtido pelos comandos de combinação de mistura alfa nessa referência.

Requisitos

Requisito Valor
Cabeçalho dxva.h (inclua Dxva.h)

Confira também

DD_BEGINMOCOMPFRAMEDATA

DXVA_AYUVsample2

DXVA_ConfigAlphaCombine

DdMoCompBeginFrame

RECT