Compartilhar via


estrutura DXVA_BufferDescription (dxva.h)

A estrutura DXVA_BufferDescription é enviada pelo decodificador de host para o acelerador para fornecer informações ao acelerador sobre o buffer que está sendo passado do host para o acelerador.

Sintaxe

typedef struct _DXVA_BufferDescription {
  DWORD dwTypeIndex;
  DWORD dwBufferIndex;
  DWORD dwDataOffset;
  DWORD dwDataSize;
  DWORD dwFirstMBaddress;
  DWORD dwNumMBsInBuffer;
  DWORD dwWidth;
  DWORD dwHeight;
  DWORD dwStride;
  DWORD dwReservedBits;
} DXVA_BufferDescription, *LPDXVA_BufferDescription;

Membros

dwTypeIndex

Identifica o tipo de buffer passado para o acelerador. A tabela a seguir lista os identificadores numéricos e o tipo de buffer associado.

Valor Tipo de buffer
1 Buffers de parâmetro de decodificação de imagem.
2 Buffers de comando de controle de macroblock (intimamente associados a e com uma correspondência 1:1 com buffers de dados de bloco de diferença residual).
3 A diferença residual bloqueia os buffers de dados. Consulte Decodificação de imagem orientada a macroblock para obter mais informações.
4 Deblocking filter control command buffers (with or without a restriction on the effect of the filter).
5 Buffers de matriz de quantização inversa (usados apenas com processamento VLD fora do host).
6 Buffers de controle de fatia (intimamente associados a e com uma correspondência 1:1 com buffers de dados bitstream).
7 Buffers de dados bitstream.
8 Buffers de exemplo de mistura alfa AYUV.
9 Buffers de superfície de mistura alfa IA44/AI44.
10 Buffers de superfície de mistura alfa DPXD.
11 Realce os buffers de dados.
12 Buffers de dados DCCMD.
13 Buffers de combinação de mistura alfa.
14 Imagem resampando buffers de controle.
15 Buffers de comando de read-back que contêm comandos para ler macroblocks da imagem resultante de volta para o host.

dwBufferIndex

Especifica o número de sequência do buffer dentro dos buffers do mesmo tipo que foram passados na mesma lista de descrição do buffer.

dwDataOffset

Especifica o deslocamento dos dados relevantes desde o início do buffer em bytes. No momento, o uso desse membro está restrito ao valor zero.

dwDataSize

Especifica a quantidade de dados relevantes no buffer em bytes. O local do último byte de conteúdo no buffer é dwDataOffset, além de dwDataSize menos 1.

dwFirstMBaddress

Especifica o endereço de macroblock do primeiro macroblock no buffer passado para o acelerador. O endereço de macroblock é dado na ordem de verificação do raster. O endereço é determinado pelos membros do DXVA_PictureParameters. Exemplos de endereços de macroblock são os seguintes.

Macroblock Endereço
canto superior esquerdo zero
canto superior direito wPicWidthInMBminus1
inferior à esquerda wPicHeightInMBminus1 x (wPicWidthInMBminus1+1)
inferior direito (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1)-1

Esse membro deverá ser zero se o buffer de dados estiver entre os seguintes tipos: parâmetros de decodificação de imagem, matriz de quantização inversa, controle de fatia, dados de bitstream, AYUV, IA44/AI44, DPXD, Highlight e DCCMD.

Se o buffer de dados for um buffer de dados de bloco de diferença residual, dwFirstMBaddress deverá ter o mesmo valor do buffer de comando de controle de macroblock correspondente. Consulte Decodificação de imagem orientada a macroblock para obter mais informações.

dwNumMBsInBuffer

Especifica o número de macroblocks de dados no buffer. Essa contagem inclui macroblocks ignorados. Deve ser zero se o buffer de dados estiver entre os seguintes tipos: parâmetros de decodificação de imagem, matriz de quantização inversa, AYUV, IA44/AI44, DPXD, Highlight ou DCCMD.

O valor de dwNumMBsInBuffer depende do tipo de buffer de dados que está sendo usado, conforme mostrado na tabela a seguir.

Tipo de buffer Valor de dwNumMBsInBuffer
Comando de controle Macroblock Deve ser igual à soma de todos os valores para MBskipsFollowing, adicionado ao número de comandos de controle macroblock no buffer de comando de controle de macroblock.
Bloco de diferença residual Deve ter o mesmo valor do buffer de comando de controle de macroblock correspondente.
Comando slice-control Deve ser igual ao valor do membro wNumberMBsInSlice da estrutura DXVA_SliceInfo no buffer de controle de fatia.
Bitstream Deve ter o mesmo valor do buffer de comando de controle de fatia correspondente.

dwWidth

Especifica a largura dos dados no buffer como o número de unidades de bits para os seguintes tipos de dados: AYUV (os dados são especificados em unidades de 32 bits), IA44/AI44 (os dados são especificados em unidades de 8 bits) ou DPXD (os dados são especificados em unidades de 2 bits). Esse membro deverá ser zero se o buffer de dados não estiver entre os tipos anteriores.

dwHeight

Especifica a altura dos dados no buffer como o número de unidades de bits para os seguintes tipos de dados: AYUV (os dados são especificados em unidades de 32 bits), IA44/AI44 (os dados são especificados em unidades de 8 bits) ou DPXD (os dados são especificados em unidades de 2 bits). Esse membro deverá ser zero se o buffer de dados não estiver entre os tipos anteriores.

dwStride

Especifica o passo a passo dos dados no buffer como o número de unidades de bits para os seguintes tipos de dados: AYUV (os dados são especificados em unidades de 32 bits), IA44/AI44 (os dados são especificados em unidades de 8 bits) ou DPXD (os dados são especificados em unidades de 2 bits). O passo a passo para os tipos de buffer aplicáveis é determinado a partir da configuração de alocação de buffer executada pelo acelerador. Esse membro deverá ser zero se o buffer de dados não estiver entre os tipos anteriores.

dwReservedBits

Bits reservados usados para empacotamento e alinhamento. Deve ser zero.

Comentários

Uma matriz de estruturas de DXVA_BufferDescription é conhecida como uma lista de descrição do buffer. Quando um conjunto de buffers é enviado do decodificador de host para o acelerador de hardware, uma lista de descrição do buffer é enviada para descrever os buffers. A lista de descrição do buffer contém uma estrutura DXVA_BufferDescription para cada buffer neste conjunto. A lista de descrição do buffer começa com uma estrutura DXVA_BufferDescription para o primeiro buffer do primeiro tipo, seguida por uma estrutura DXVA_BufferDescription para o próximo buffer do mesmo tipo e assim por diante. Em seguida, a lista de descrição do buffer continua com uma estrutura DXVA_BufferDescription para o primeiro buffer do próximo tipo e assim por diante.

Requisitos

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

Confira também

DXVA_PictureParameters

DXVA_SliceInfo