Compartilhar via


estrutura D3D11_1DDI_VIDEO_DECODER_CONFIG (d3d10umddi.h)

Descreve a configuração de um dispositivo de decodificador do Microsoft Direct3D 11 para a DXVA (Aceleração de Vídeo) do Microsoft DirectX.

Sintaxe

typedef struct D3D11_1DDI_VIDEO_DECODER_CONFIG {
  GUID   guidConfigBitstreamEncryption;
  GUID   guidConfigMBcontrolEncryption;
  GUID   guidConfigResidDiffEncryption;
  UINT   ConfigBitstreamRaw;
  UINT   ConfigMBcontrolRasterOrder;
  UINT   ConfigResidDiffHost;
  UINT   ConfigSpatialResid8;
  UINT   ConfigResid8Subtraction;
  UINT   ConfigSpatialHost8or9Clipping;
  UINT   ConfigSpatialResidInterleaved;
  UINT   ConfigIntraResidUnsigned;
  UINT   ConfigResidDiffAccelerator;
  UINT   ConfigHostInverseScan;
  UINT   ConfigSpecificIDCT;
  UINT   Config4GroupedCoefs;
  USHORT ConfigMinRenderTargetBuffCount;
  USHORT ConfigDecoderSpecific;
} D3D11_1DDI_VIDEO_DECODER_CONFIG;

Membros

guidConfigBitstreamEncryption

Define o tipo de protocolo de criptografia para buffers de dados de fluxo de bits. Se nenhuma criptografia for aplicada, o valor será DXVA_NoEncrypt (um nome GUID definido em Dxva.h). Se ConfigBitstreamRaw for 0, o valor deverá ser DXVA_NoEncrypt.

Se definido como D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENC, isso indica que os seguintes parâmetros serão passados para a chamada VideoDecoderBeginFrame :

Valor Significado
pContentKey Um ponteiro para a estrutura D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION , indicando qual CryptoSession e as informações de chave usadas para descriptografar o quadro.
ContentKeySize Defina como o tamanho da estrutura D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION .

guidConfigMBcontrolEncryption

Define o tipo de protocolo de criptografia para buffers de dados de controle de bloco de macro. Se nenhuma criptografia for aplicada, o valor será DXVA_NoEncrypt (um nome GUID definido em Dxva.h). Se ConfigBitstreamRaw for 1, o valor deverá ser DXVA_NoEncrypt.

guidConfigResidDiffEncryption

Define o tipo de protocolo de criptografia para buffers de dados de decodificação de diferença residual (buffers que contêm dados de domínio espacial ou conjuntos de coeficientes de domínio de transformação para transformação cossina discreta inversa baseada em acelerador [IDCT]). Se nenhuma criptografia for aplicada, o valor será DXVA_NoEncrypt (um nome GUID definido em Dxva.h). Se ConfigBitstreamRaw for 1, o valor deverá ser DXVA_NoEncrypt.

ConfigBitstreamRaw

Indica se o decodificador de host envia dados brutos de fluxo de bits. Se o valor for 1, os dados das imagens serão enviados em buffers de fluxo de bits como conteúdo bruto de fluxo de bits. Se o valor for 0, os dados de imagem serão enviados usando buffers de comando de controle de macroblock. Se ConfigResidDiffHost ou ConfigResidDiffAccelerator for 1, o valor deverá ser 0.

ConfigMBcontrolRasterOrder

Especifica se os comandos de controle de macroblock estão em ordem de verificação raster ou em ordem arbitrária. Se o valor for 1, os comandos de controle de macroblock em cada buffer de comando de controle de macroblock estarão em ordem de varredura de raster. Se o valor for 0, a ordem será arbitrária. Para alguns tipos de fluxos de bits, forçar a ordem de raster aumenta consideravelmente o número de buffers de controle de macroblock necessários que devem ser processados ou requer a reordenação do host das informações de controle. Portanto, o suporte à ordem arbitrária pode ser mais eficiente.

ConfigResidDiffHost

Contém a configuração de diferença residual do host. Se o valor for 1, alguns dados de decodificação de diferença residual poderão ser enviados como blocos no domínio espacial do host. Se o valor for 0, os dados de domínio espacial não serão enviados.

ConfigSpatialResid8

Indica o tamanho da palavra usado para representar blocos de domínio espacial de diferença residual para imagens previstas (não intra) ao usar a decodificação de diferença residual baseada em host.

Se ConfigResidDiffHost for 1 e ConfigSpatialResid8 for 1, o host enviará blocos de domínio espacial de diferença residual para macroblocks não intra usando amostras assinadas de 8 bits e para macroblocks intra em imagens previstas (não intra) em um formato que depende do valor de ConfigIntraResidUnsigned:

  • Se ConfigIntraResidUnsigned for 0, blocos de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 8 bits em relação a um valor de referência constante de 2^(BPP–1).
  • Se ConfigIntraResidUnsigned for 1, blocos de domínio espacial para macroblocks intra serão enviados como valores inteiros sem sinal de 8 bits em relação a um valor de referência constante de 0.

Se ConfigResidDiffHost for 1 e ConfigSpatialResid8 for 0, o host enviará blocos de dados de domínio espacial de diferença residual para macroblocks não intra usando amostras assinadas de 16 bits e para macroblocks intra em imagens previstas (não intra) em um formato que depende do valor de ConfigIntraResidUnsigned:

  • Se ConfigIntraResidUnsigned for 0, os blocos de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 16 bits em relação a um valor de referência constante de 2^(BPP–1).
  • Se ConfigIntraResidUnsigned for 1, os blocos de domínio espacial para macroblocks intra serão enviados como valores inteiros sem sinal de 16 bits em relação a um valor de referência constante de 0.
  • Se ConfigResidDiffHost for 0, ConfigSpatialResid8 deverá ser 0.

Para imagens intra, blocos de domínio espacial devem ser enviados usando amostras de 8 bits se bits por pixel (BPP) for 8 e usando amostras de 16 bits se BPP > 8. Se ConfigIntraResidUnsigned for 0, esses exemplos serão enviados como valores inteiros assinados em relação a um valor de referência constante de 2^(BPP–1) e, se ConfigIntraResidUnsigned for 1, esses exemplos serão enviados como valores inteiros sem sinal em relação a um valor de referência constante de 0.

ConfigResid8Subtraction

Se o valor for 1, os blocos de estouro de diferença de 8 bits serão subtraídos em vez de adicionados. O valor deve ser 0, a menos que ConfigSpatialResid8 seja 1.

A capacidade de subtrair diferenças em vez de adicioná-las permite que a decodificação de diferença de 8 bits esteja totalmente em conformidade com o intervalo completo de valores ±255 necessários nas especificações do decodificador de vídeo, porque +255 não pode ser representado como a adição de dois números assinados de 8 bits, mas qualquer número no intervalo ±255 pode ser representado como a diferença entre dois números de 8 bits assinados (+255 = +127 menos –128).

ConfigSpatialHost8or9Clipping

Se o valor for 1, blocos de domínio espacial para macroblocks intra deverão ser recortados para um intervalo de 8 bits nos blocos host e de domínio espacial para macroblocks não intra devem ser cortados para um intervalo de 9 bits no host. Se o valor for 0, nenhum recorte desse tipo será necessário pelo host.

O valor deve ser 0, a menos que ConfigSpatialResid8 seja 0 e ConfigResidDiffHost seja 1.

ConfigSpatialResidInterleaved

Se o valor for 1, todos os dados de diferença residual de domínio espacial deverão ser enviados em uma forma intercalada de chrominance que corresponda ao padrão de intercalação de chrominance de formato YUV. O valor deve ser 0, a menos que ConfigResidDiffHost seja 1 e o formato YUV seja NV12 ou NV21.

ConfigIntraResidUnsigned

Indica o método de representação de blocos de domínio espacial de dados de diferença residual para blocos intra ao usar a decodificação de diferença baseada em host.

Se ConfigResidDiffHost for 1 e ConfigIntraResidUnsigned for 0, os blocos de dados de diferença residual de domínio espacial para macroblocks intra deverão ser enviados da seguinte maneira:

  • Em uma imagem não intra, se ConfigSpatialResid8 for 0, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 16 bits em relação a um valor de referência constante de 2^(BPP–1).
  • Em uma imagem não intra, se ConfigSpatialResid8 for 1, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 8 bits em relação a um valor de referência constante de 2^(BPP–1).
  • Em uma imagem intra, se BPP for 8, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 8 bits em relação a um valor de referência constante de 2^(BPP-1), independentemente do valor de ConfigSpatialResid8.

Se ConfigResidDiffHost for 1 e ConfigIntraResidUnsigned for 1, os blocos de dados de diferença residual de domínio espacial para macroblocks intra deverão ser enviados da seguinte maneira:

  • Em uma imagem não intra, se ConfigSpatialResid8 for 0, os blocos de dados de diferença residual de domínio espacial para macroblocks intra deverão ser enviados como valores inteiros sem sinal de 16 bits em relação a um valor de referência constante de 0.
  • Em uma imagem não intra, se ConfigSpatialResid8 for 1, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros sem sinal de 8 bits em relação a um valor de referência constante de 0.
  • Em uma imagem intra, se BPP for 8, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros sem sinal de 8 bits em relação a um valor de referência constante de 0, independentemente do valor de ConfigSpatialResid8.

O valor do membro deve ser 0, a menos que ConfigResidDiffHost seja 1.

ConfigResidDiffAccelerator

Se o valor for 1, os blocos de domínio de transformação de dados coeficientes poderão ser enviados do host para IDCT baseado em acelerador. Se o valor for 0, o IDCT baseado em acelerador não será usado. Se ConfigResidDiffHost e ConfigResidDiffAccelerator forem 1, isso indicará que alguma decodificação de diferença residual será feita no host e em alguns no acelerador, conforme indicado pelos comandos de controle no nível do macroblock.

O valor deverá ser 0 se ConfigBitstreamRaw for 1.

ConfigHostInverseScan

Se o valor for 1, a verificação inversa para processamento de bloco de domínio de transformação será executada no host e os índices absolutos serão enviados para quaisquer coeficientes de transformação. Se o valor for 0, a verificação inversa será executada no acelerador.

O valor deverá ser 0 se ConfigResidDiffAccelerator for 0 ou se Config4GroupedCoefs for 1.

ConfigSpecificIDCT

Se o valor for 1, o IDCT especificado no Anexo W da Recomendação ITU-T H.263 será usado. Se o valor for 0, qualquer IDCT em conformidade poderá ser usada para IDCT fora do host.

O anexo H.263 não está em conformidade com os requisitos de IDCT do MPEG-2 corrigendum 2, portanto, o valor não deve ser 1 para uso com vídeo MPEG-2.

O valor deverá ser 0 se ConfigResidDiffAccelerator for 0, indicando a decodificação de diferença residual baseada em host.

Config4GroupedCoefs

Se o valor for 1, os coeficientes de transformação para IDCT fora do host serão enviados usando a estrutura DXVA_TCoef4Group . Se o valor for 0, a estrutura DXVA_TCoefSingle será usada. O valor deverá ser 0 se ConfigResidDiffAccelerator for 0 ou se ConfigHostInverseScan for 1.

ConfigMinRenderTargetBuffCount

Especifica quantos quadros o dispositivo decodificador processa ao mesmo tempo.

ConfigDecoderSpecific

Contém informações de configuração específicas do decodificador.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8
Servidor mínimo com suporte Windows Server 2012
Cabeçalho d3d10umddi.h (inclua D3d10umddi.h)

Confira também

D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION

DXVA_TCoef4Group

DXVA_TCoefSingle