estrutura DXVA_BufferDescription (dxva.h)
A estrutura de 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.
Value | tipo de buffer |
---|---|
1 | Buffers de parâmetro de decodificação de imagem. |
2 | buffers de comando de controle macroblock (intimamente associados e tendo uma correspondência 1:1 com buffers de dados de bloco de diferença residual). |
3 | Buffers de dados de bloco de diferença residual. Consulte Macroblock-Oriented de Decodificação de Imagem para obter mais informações. |
4 | Desbloqueio de buffers de comando de controle de filtro (com ou sem restrição no efeito do filtro). |
5 | Buffers de matriz de quantização inversa (usados apenas com processamento de VLD fora do host). |
6 | Buffers de controle de fatia (intimamente associados e com uma correspondência 1:1 com buffers de dados bitstream). |
7 | Buffers de dados bitstream. |
8 | Buffers de exemplo de combinação alfa do 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 | Buffers de controle de resampling de imagem. |
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 de 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 esquerdo | 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 Macroblock-Oriented de Decodificação de Imagem 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 para 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 de 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 de controle de fatia | 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 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 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.
Observações
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 de 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. A lista de descrição do buffer continua com uma estrutura de DXVA_BufferDescription para o primeiro buffer do próximo tipo e assim por diante.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | dxva.h (inclua Dxva.h) |