Compartilhar via


estrutura D3D11_VIDEO_DECODER_CONFIG (d3d11.h)

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

Sintaxe

typedef struct D3D11_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_VIDEO_DECODER_CONFIG;

Membros

guidConfigBitstreamEncryption

Se os buffers de dados de bitstream forem criptografados usando o mecanismo D3D11CryptoSession, esse GUID deverá ser definido como zero. Se nenhuma criptografia for aplicada, o valor será DXVA_NoEncrypt. Se ConfigBitstreamRaw for 0, o valor deverá ser DXVA_NoEncrypt.

guidConfigMBcontrolEncryption

Se os buffers de dados de controle de macroblock forem criptografados usando o mecanismo D3D11CryptoSession, esse GUID deverá ser definido como zero. Se nenhuma criptografia for aplicada, o valor será DXVA_NoEncrypt. Se ConfigBitstreamRaw for 1, o valor deverá ser DXVA_NoEncrypt.

guidConfigResidDiffEncryption

Se os buffers de dados de decodificação de diferença residual forem criptografados usando o mecanismo D3D11CryptoSession, esse GUID deverá ser definido como zero. Se nenhuma criptografia for aplicada, o valor será DXVA_NoEncrypt. 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 macroblock. Se ConfigResidDiffHost ou ConfigResidDiffAccelerator for 1, o valor deverá ser 0.

ConfigMBcontrolRasterOrder

Especifica se os comandos de controle macroblock estão em ordem de varredura ou em ordem arbitrária. Se o valor for 1, os comandos de controle macroblock em cada buffer de comando de controle de macroblock estarão em ordem de varredura. Se o valor for 0, a ordem será arbitrária. Para alguns tipos de fluxos de bits, forçar a ordem de varredura aumenta consideravelmente o número de buffers de controle de macroblock necessários que devem ser processados ou requer a reordenação de host das informações de controle. Portanto, dar 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, algumas diferenças residuais de decodificação de dados poderão ser enviadas 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 usada para representar a diferença residual de blocos de domínio espacial 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 intra macroblocks 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 espaciais 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 espaciais 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 usar exemplos de 16 bits se BPP > 8. Se ConfigIntraResidUnsigned for 0, esses exemplos serão enviados como valores inteiros com sinal 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 igual a 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 seja totalmente compatível 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 com sinal de 8 bits (+255 = +127 menos –128).

ConfigSpatialHost8or9Clipping

Se o valor for 1, blocos de domínio espacial para macroblocks intra devem ser recortados para um intervalo de 8 bits nos blocos host e spatial-domain para macroblocks não intra devem ser recortados para um intervalo de 9 bits no host. Se o valor for 0, nenhum recorte desse tipo será necessário para o 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 por 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, blocos de dados de diferença residual de domínio espacial para macroblocks intra devem 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 blocos de dados intra macroblocks 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 blocos de macro 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 blocos de macro 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, blocos de dados de diferença residual de domínio espacial para macroblocks intra devem 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 blocos de dados intra macroblocks 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 intra macroblocks 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, 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 compatível poderá ser usado 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 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

   
Cliente mínimo com suporte Windows 8 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP]
Cabeçalho d3d11.h

Confira também

Estruturas de vídeo do Direct3D 11