Partilhar via


estrutura DXVA_BlendCombination (dxva.h)

A estrutura DXVA_BlendCombination é enviada pelo decodificador de host para o acelerador para especificar como uma imagem misturada é criada a partir de uma imagem de origem e de 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 não compactado, conforme definido pelo conteúdo do DWORD apontado pelo lpInputData membro de DD_BEGINMOCOMPFRAMEDATA em uma chamada anterior para DdMoCompBeginFrame, da imagem a ser combinada com o gráfico. Esse valor será 0xFFFF se a combinação alfa de hardware de back-end estiver em uso (quando o bConfigBlendType membro do DXVA_ConfigAlphaCombine for 1).

wBlendedDestinationIndex

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

Esse valor não pode ser igual a wPictureSourceIndex, a menos que a mistura 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 frame_centre_horizontal_offset e frame_centre_vertical_offset pan-scan no vídeo MPEG-2.

Se o bConfigPictureResizing membro do 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 PictureSourceRect16thPel.

Se o bConfigPictureResizing membro do 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 em tamanho de PictureSourceRect16thPel, o método de resampação a ser aplicado não será especificado, mas deverá ter uma qualidade que seja pelo menos equivalente à da resampação 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 misturada em alfa.

GraphicDestinationRect

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

Se o bConfigGraphicResizing membro do 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 de GraphicSourceRect, o método 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 resampling 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 combinação de hardware de back-end estiver em uso (por exemplo, se o bConfigBlendType membro do DXVA_ConfigAlphaCombine for 1), wBlendDelay contiver o número de milissegundos de atraso antes da combinação de mesclagem entrar em vigor. Se a combinação 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 de combinação (com bBlendOn igual a 1) até o tempo de execução de uma nova combinação de combinação (com bBlendOn igual a 1) ou até que a mistura seja desabilitada por uma operação de combinação de combinação (com bBlendOn igual a zero). Se a combinação de hardware de back-end estiver em uso e bBlendOn for zero, o único outro valor no buffer de combinação de mistura alfa que tem significado será wBlendDelay. Se a mesclagem 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 na 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 mistura especificada será multiplicar a opacidade de cada local no conteúdo gráfico por (bWholePlaneAlpha+1)/256. Para um valor zero de bWholePlaneAlpha, a mistura a ser usada é a opacidade especificada na imagem gráfica sem alteração. Isso deve ser igual a 255 se o bConfigWholePlaneAlpha membro do DXVA_ConfigAlphaCombine for zero.

OutsideYUVcolor

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

Observações

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

As seções a seguir mostram as restrições colocadas no esquerdo, direito, superior e membros inferiores 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 deve ser maior ou igual a zero.
  • direita e inferior deve ser maior ou igual a esquerda e superior, respectivamente.
  • Se direita for igual a esquerda ou superior é igual a inferior, todos os membros rect devem ter o valor zero indicando que a imagem de origem não é usada. Esse caso só será permitido se o bConfigOnlyUsePicDestRectArea membro do DXVA_ConfigAlphaCombine for zero.
  • direita e inferior não deve exceder 16 vezes a largura e a altura alocadas, respectivamente, da superfície de imagem de origem não compactada.
Por exemplo, se PictureSourceRect16thPel for usado para selecionar uma imagem decodificada MPEG-2 inteira, os valores PictureSourceRect16thPel poderão ser computados da seguinte maneira:
  • esquerda = 0
  • superior = 0
  • à direita = 16 X horizontal_size
  • inferior = 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 deve ser maior ou igual a zero.
  • direita e inferior deve ser maior ou igual a esquerda e superior, respectivamente.
  • Se direita for igual a esquerda ou superior é igual a inferior (permitido somente se o bConfigOnlyUsePicDestRectArea membro do DXVA_ConfigAlphaCombine é zero), todos os membros RECT devem ter o valor zero e PictureSourceRect16thPel também deve especificar todos os valores com o valor zero.
  • Se o bConfigBlendType membro do DXVA_ConfigAlphaCombine for zero, direita e parte inferior não deverá exceder a largura e a altura alocadas, respectivamente, da superfície da imagem de destino não compactada.
  • Se o bConfigBlendType membro do DXVA_ConfigAlphaCombine for 1, direita e parte inferior não deverá 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 mistura alfa usar o membro bConfigDataType de DXVA_ConfigAlphaLoad com um valor de 2, as seguintes restrições se aplicam às dimensões RECT de GraphicSourceRect:
  • superior e esquerda devem ser zero.
  • direito deve ser igual à coordenada End X menos a coordenada Iniciar X 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.
  • inferior deve ser igual à coordenada Final Y menos a coordenada Iniciar Y 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 mistura alfa não usar o membro bConfigDataType de DXVA_ConfigAlphaLoad com um valor de 2, as seguintes restrições se aplicam às dimensões RECT de GraphicSourceRect:
  • esquerda e superior deve ser maior ou igual a zero.
  • direita e inferior es devem ser maiores ou iguais a esquerdo e superior, respectivamente.
  • Se direita for igual a esquerda ou superior é igual a inferior, todos os membros rect devem ter o valor zero, indicando que não há uso da imagem gráfica.
  • direita e parte 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 720 e 576 amostras, respectivamente, quando o bConfigDataType membro de DXVA_ConfigAlphaLoad é igual a 2.

restrições de estrutura rect para GraphicDestinationRect

As seguintes restrições se aplicam às dimensões RECT do GraphicDestinationRect:
  • esquerda e superior deve ser maior ou igual a zero, a menos que esse requisito entre em conflito com a necessidade de compensar o gráfico por oito amostras. Esse é o caso nos seguintes cenários:
    • O carregamento de dados de combinação alfa usa o bConfigDataType membro de DXVA_ConfigAlphaCombine com um valor de 2 e o membro bConfigGraphicResizing DXVA_ConfigAlphaCombine com um valor zero.
    • A operação está definida para o DVD 704-Wide Non-Pan-Scan (consulte DVD 704-Wide Non-Pan-Scan Example).
    • A operação está definida para o DVD de 352 largura (consulte de exemplo de DVD de 352 largura).
  • direita e inferior deve ser maior ou igual a esquerda e superior, respectivamente. Se direita for igual a esquerda ou superior é igual a inferior, todos esses membros da estrutura RECT devem ter o valor zero e GraphicSourceRect também devem especificar que todos os seus membros têm o valor zero.
  • Se o bConfigBlendType membro de DXVA_ConfigAlphaCombine for igual a zero, direita e parte inferior não deverá exceder a largura e a altura alocadas, respectivamente, da superfície da imagem de destino não compactada.
  • Se o bConfigBlendType membro de DXVA_ConfigAlphaCombine for igual a 1, direita e parte inferior não deverá exceder a largura e a altura alocadas, respectivamente, da imagem gráfica de origem.
Se o carregamento de dados de mistura alfa usar o membro bConfigDataType de DXVA_ConfigAlphaCombine com um valor de 2 e o membro bConfigGraphicResizing de DXVA_ConfigAlphaCombine com um valor zero, as seguintes restrições adicionais às dimensões GraphicDestinationRect se aplicam:
  • superior deve ser igual à coordenada Iniciar Y do último DVD anterior SET_DAREA DCCMD.
  • esquerda 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 dvd de 704Pan-Scan exemplo de e dvd de 352.
  • direita deve ser igual ao valor de esquerda, além da coordenada End X menos a coordenada Iniciar 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.
  • inferior deve ser igual ao valor de superior mais a coordenada Y final menos a coordenada Iniciar Y 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.
Observação Há uma diferença entre a maneira como a especificação de vídeo do 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, esquerdo = 0, direita = 10 e inferior = 10. A especificação de vídeo de DVD usa um equivalente a direita = 9 e inferior = 9.
 

definindo valores externos de YUVcolor

Os valores da estrutura de 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 bConfigStayInPicDestRectArea membro de DXVA_ConfigAlphaCombine com 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 bConfigStayInPicDestRectArea membro 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 do PictureDestinationRect.

Se OutsideYUVcolor.bSampleAlpha8 for 255, qualquer área da superfície de destino que esteja fora de PictureDestinationRect mas dentro 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 do OutsideYUVcolor. Se o bConfigBlendType membro da estrutura DXVA_ConfigAlphaCombine for 1, os membros OutsideYUVcolor serão definidos para indicar a combinação com preto especificando bSampleAlpha8 = 255, bY_Value = 16 e bCbValue = bCrValue = 128.

Quando o bConfigBlendType membro da estrutura de DXVA_ConfigAlphaCombine for 1 (combinação de hardware de back-end), as operações de mesclagem podem diferir um pouco 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 alfa-blend nessa referência.

Requisitos

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

Consulte também

DD_BEGINMOCOMPFRAMEDATA

DXVA_AYUVsample2

DXVA_ConfigAlphaCombine

DdMoCompBeginFrame

RECT