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) |